¿Cómo proceder cuando se sospecha un error en las bibliotecas de código abierto?

8

Estamos utilizando algunas bibliotecas de código abierto en nuestros proyectos. A veces hay algunos problemas encontrados en algunos de ellos (muy probablemente errores de biblioteca, pero también puede ser un uso incorrecto de nuestra parte, especialmente cuando a veces la documentación no está exactamente al 100% completa). Como las bibliotecas a menudo son bastante complejas, a veces es bastante difícil depurarlas para identificar la fuente del problema. ¿Me pueden ayudar a resumir qué otras opciones hay y cómo proceder exactamente con ellas?

Recientemente he tenido algunos problemas extraños al usar TCMalloc (asignador de memoria escalable de Google) en Windows, por lo que agradecería las respuestas que se aplicarían a esta biblioteca en particular, pero las respuestas más generales también son buenas.

1) Solicite ayuda al responsable / propietario del proyecto. ¿Cómo se puede hacer esto?

2) Contratar a alguien para identificar y solucionar el problema. ¿Como hacer esto? ¿Cómo puedo encontrar a alguien con suficiente experiencia en alguna biblioteca en particular?

... alguna otra opción?

Suma
fuente
1
Recomiendo encarecidamente la opción (1), todo sitio de proyecto de código abierto tiene el lugar para archivar defectos o tratar de contactar a los desarrolladores a través de su lista de correo. Debería poder obtener la respuesta antes considerando si el proyecto aún está vivo.
1
@NinjaCoder: usar un proyecto muerto con poca documentación puede ser una mala decisión, la actividad en el proyecto debe tenerse en cuenta al elegirlo.
Matthieu M.
@ Mathieu - Estoy completamente de acuerdo contigo.
Pregunte al proyecto, no a personas específicas del proyecto. IE, haga un comentario en el foro o equivalente. Realmente no necesita preocuparse por depurar el código (a menos que quiera participar en el desarrollo), solo necesita proporcionar un medio para que los desarrolladores reproduzcan los errores. Los desarrolladores reciben actualizaciones periódicas por correo electrónico que contienen publicaciones de las páginas de desarrollo. Haga un buen trabajo para perfilar el problema y los desarrolladores lo encontrarán. Además, no espere una solución inmediata, ya que probablemente se incluirá en la próxima versión.
Evan Plaice

Respuestas:

15

Normalmente intento lo siguiente, en orden:

1) Verifique la lista de correo o los foros para ver si mi error es nuevo, si ya está en el rastreador o si está arreglado en una versión más nueva / SVN / lo que sea

2) Si no se conoce el error, pregúntelo en la lista de correo. Esto es cuando te dicen que es una característica, no un error, y / o RTFM;)

3) Si el error es realmente un error y es nuevo, puede esperar hasta que alguien lo solucione (puede ayudar proporcionando información adicional, pruebas o depuración) o corregirlo usted mismo y enviar un parche

Si necesita corregir el error con urgencia, su mejor opción es realizar los pasos 2 y 3 juntos (informar el error y proponer un parche). De lo contrario, su error puede o no repararse de manera oportuna, dependiendo de si alguien más considera que vale la pena corregirlo. Supongo que puedes "sobornar" a los desarrolladores u otros miembros de la comunidad para que trabajen en tu error, aunque nunca lo intenté.

ggambett
fuente
+1 para consultar la lista de correo. Me olvidé de mencionar eso.
Matt Ellen
Además, en el paso 2, un breve caso de prueba realmente puede ayudar. (Este enfoque se aplica igualmente a las bibliotecas / componentes de código no abierto / ...: cuanto más fácil sea ver el error, más fácil será solucionarlo)
Richard
@ Matt: Gracias. Para ser justos, no todos los proyectos tienen una lista de correo activa o un foro detrás. Afortunadamente, los proyectos que más pirateé (que no es demasiado) son SDL y Ogre, que tienen comunidades muy activas.
ggambett
55
Olvidó ... Si desea que otra persona mire el error, presente las condiciones necesarias para reproducirlo con precisión. Los usuarios que intervengan y digan 'su código está roto' serán ignorados, mientras que un usuario responsable que proporcione un buen perfil de lo que provocó el error generalmente recibirá la ayuda más rápida (siempre que haya mantenedores activos). La corrección de un error que afecta directamente a un usuario generalmente será una prioridad. Simplemente, no descarte que el tiempo de los desarrolladores es valioso (y es posible que ya se hayan consumido con su propio desarrollo en el proyecto).
Evan Plaice
5

¡Lo mejor de OSS es que tienes el código fuente!

Para que pueda solucionarlo usted mismo o contratar a alguien para que lo haga.

¡Lo importante es devolver a la comunidad y verificar su solución!

ozz
fuente
4

La forma más sensata que he encontrado, cuando tienes un problema con una biblioteca y no tienes las habilidades para encontrar el problema tú mismo, es contactar a los encargados del mantenimiento. Conocen el código y estarán agradecidos de averiguar acerca de los errores, si eso es lo que es, o le indicarán cómo usar la biblioteca correctamente.

Por ejemplo, tuve un problema que no pude resolver cuando estaba desarrollando un sitio que usaba SVG Web . No tengo ninguna habilidad de secuencias de comandos de acción, así que comencé un hilo preguntando sobre el problema y me dijeron que registrara un error con un caso de prueba mínimo, así que lo hice. Resultó que el problema estaba en el navegador, así que tuve que modificar un poco mi código.

Si eres lo suficientemente inteligente como para arreglarlo tú mismo, no olvides devolver lo que aprendiste.

Matt Ellen
fuente
2

Si tiene una buena idea de cómo reproducir el error, escribir una prueba unitaria que exponga el error sería un buen punto de partida. (A menudo, los proyectos de código abierto ya tienen grandes conjuntos de pruebas).

La prueba de la unidad que falla es una buena manera de comunicar el "error" al responsable del proyecto. Si no se trata de un error, sino simplemente de usted, que lo está utilizando incorrectamente, entonces el responsable de mantenimiento señalará que esto es así por diseño y, por lo general, con un motivo.

Pete
fuente
1
Desafortunadamente, la única reproducción que tengo hasta ahora requiere varios GB de datos, nuestra aplicación y varias horas para ejecutarse. Intentaré reducir esto de alguna manera como mi primer paso, ya que entiendo que la reprografía será crucial tanto para los mantenedores como para cualquier persona externa que pueda estar analizando el problema.
Suma
1

Escriba un caso de prueba limpio, luego envíelo a la lista de correo.

En la mayoría de los casos, IME encuentra un error en su propio código al escribir el caso de prueba.

tierra roja
fuente
1

Solo porque aún no se ha mencionado, lea " Cómo hacer preguntas de manera inteligente ". Tiene muchos consejos invaluables sobre cómo abordar preguntas y pedir ayuda a una comunidad de desarrollo. Mucho de esto se reduce a: comprender la forma en que funciona la comunidad y asegurarse de cumplir con las reglas. Si eres respetuoso, haz una pregunta inteligente al proporcionar todos los detalles necesarios (y la receta de reproducción si es un posible error), es probable que obtengas una respuesta razonable.

Glenn McAllister
fuente