¿Qué hacer cuando la funcionalidad crítica de una dependencia se rompe e impide el desarrollo?

13

Ayer estuve trabajando en un proyecto de API de Rails 5 que está utilizando actes-as-taggable-on biblioteca para permitir que las cosas tengan etiquetas (como preguntas en SE). Rails 5 está en soporte alfa en este momento. Actualmente hay un PR para corregir un error que espera ser fusionado en el maestro; el error provocó que la rama de mi característica se detuviera hasta la mitad de su finalización; no pude implementar ninguna de las funciones de la biblioteca porque no se pudo cargar.

Como solución rápida, simplemente cloné el repositorio, solucioné el problema con el mismo código que tenía el PR, y señalé mi Gemfile (archivo de control de versiones de dependencia) a mi propia bifurcación Github, hasta que finalmente se fusionó la corrección de errores en maestro.

Tuve suerte de que la solución era simple ( y de que alguien ya lo había hecho ), así que pude solucionar el problema. ¿Pero qué pasaría si esta biblioteca fuera fundamental para el desarrollo de mi aplicación? ¿Qué sucedería si la corrección de errores que estaba deteniendo a mi desarrollo no era un problema generalizado para otras personas , por lo que la solución no se produjo tan rápidamente como lo hizo esta vez?

Imagine que esta función debe completarse antes del desarrollo en otras funciones dependientes . ¿Qué hace en esa situación? ¿Qué pasaría si, para mí, el etiquetado fuera absolutamente crítico para la siguiente frase de desarrollo, donde todo lo demás se basó en él, pero la dependencia del etiquetado está alterada para mi configuración? ¿Qué hace uno cuando la funcionalidad crítica de una dependencia impide el desarrollo de (a) característica (s)?

Y, seguramente, swordfights en sillas de oficina por horas o días no es una opción ...

    
pregunta Chris Cirefice 18.05.2016 - 03:09

3 respuestas

19

Esta es una de las razones por las que está utilizando software de código abierto, ¿verdad?

Podría hacer el mismo argumento para "¿qué sucede si mi biblioteca de código cerrado, muy costosa y propietaria, se cae de repente? ¿Habrá alguien disponible en [la gran compañía de software monolítico] para que lo arregle? Con el software de código abierto, al menos usted tiene la oportunidad de corregir ese error usted mismo.

Si su software lleva una dependencia crítica a una biblioteca de código abierto, hay tres cosas que puede hacer para mitigar el riesgo:

  1. Familiarícese con el código base, quizás incluso haciendo contribuciones usted mismo. Esta es otra razón por la que eligió el código abierto, ¿no?

  2. Tenga una biblioteca alternativa si la primera biblioteca se cae. Es por eso que programas interfaces; para que pueda cambiar la implementación si es necesario, ¿no?

  3. Equilibre su deseo de estar a la vanguardia frente a su necesidad de estabilidad (es decir, no utilice software alfa). Sabías en lo que estabas metiendo, ¿verdad?

respondido por el Robert Harvey 18.05.2016 - 03:36
11

La solución para desarrollar aplicaciones donde los errores o la falta de funciones tienen un alto riesgo de hacer que su trabajo se detenga es no usar bibliotecas de alto riesgo. Aburrido y cojo, lo sé ..

Dijiste que esto es un lanzamiento alfa. No uses lanzamientos alfa para proyectos críticos. Ni siquiera es una versión beta, y mucho menos la versión 1.0, por lo que es de esperar este tipo de cosas. El punto entero de esta etapa en un proyecto es encontrar problemas y fortalecer el proyecto.

Si te encuentras en esta situación, básicamente tienes que hacer lo que hiciste (hemos hecho exactamente lo mismo). Arreglarlo y hacer PR el proyecto.

Pero la solución está utilizando bibliotecas más estables con funcionalidad y API entendidas, o al menos manteniendo la compatibilidad con versiones anteriores a una versión estable. Debería desconfiar del 100% de algo sobre lo que no tiene control y necesita para tener éxito.

    
respondido por el enderland 18.05.2016 - 03:35
1

Por lo general, se recomienda ocultar las bibliotecas de terceros detrás de los adaptadores o envoltorios que escribe usted mismo. Esto tiene dos ventajas:

  • Puede intercambiar la biblioteca de terceros con otra sin cambiar ninguno de sus códigos
  • Puede programar el resto de su código en su propia interfaz de adaptador. En caso de un problema temporal con la biblioteca, simplemente conecte su propia versión de código auxiliar o falsa o simplificada de la funcionalidad de la biblioteca. De esa manera, desarrollo y prueba de sus funciones de descarga no se bloquean (aunque la implementación del programa completo aún lo está).
respondido por el jhyot 25.05.2016 - 23:01

Lea otras preguntas en las etiquetas