¿Hay revisiones de código en proyectos de código abierto? Si es así, ¿qué herramientas se utilizan para hacer esto?

10

Sé que hay un gran impulso para las revisiones de código en el desarrollo comercial. Sin embargo, ¿se utilizan revisiones de código en software de código abierto o se basan en la confianza? Si es así, ¿cómo se realizan? [¿Es un commit retrasado, "un entorno previo al commit", hay una herramienta que permita enviar el parche a otro desarrollador]?

¿Hay algún proyecto que use revisiones de código?

Según tengo entendido, el núcleo de Linux se basa principalmente en la confianza del confirmador. MySQL se basó en la aprobación del autor principal y el impacto en el rendimiento.

monjes
fuente
44
Linux en realidad usa un sistema de tenientes + dictadores.
alternativa

Respuestas:

13

Casi todos los proyectos de código abierto utilizan algún tipo de flujo de trabajo de gatekeeper, donde una persona o grupo de personas debe cerrar sesión en todos los cambios para ingresar a la compilación oficial. Algunos proyectos más grandes, como el kernel de Linux, tienen capas de gatekeepers. Envías un cambio a alguien que administra un área de un subsistema, envían sus cambios a alguien que administra un subsistema completo y envían sus cambios a Linus Torvalds, quien a veces revisa el código él mismo o confía en sus lugartenientes. Estas revisiones generalmente no tienen una estructura formal. Es solo alguien que revisa el código antes de que se fusione.

En cuanto a las herramientas, mire el mecanismo de solicitud de extracción en github para un buen ejemplo. Realiza una solicitud de extracción, y en una página web dedicada a esa solicitud de extracción, las personas hacen comentarios y el autor realiza revisiones hasta que sea lo suficientemente bueno como para aceptar. Otros guardianes de puerta simplemente usan git simple para aplicar parches de listas de correo o fusionar solicitudes de extracción de repositorios públicos, que es una de las principales razones por las que se inventaron DVCS como git.

Karl Bielefeldt
fuente
5

Los proyectos de código abierto a menudo tienen (y deberían, si no lo tienen) un conjunto claramente publicado de "pautas comunitarias", que a menudo incluye una descripción del flujo de trabajo del proyecto y cómo se aceptan las contribuciones (y, por lo tanto, cómo se prueban). como el proceso para convertirse en un compromiso central.

En cuanto a la revisión del código, nuevamente depende de la comunidad, pero las pautas a menudo se aclaran. Algunas pautas de ejemplo para las contribuciones de los que no son comprometidos van desde "victorias en el código de trabajo" hasta "las contribuciones deben tener cobertura y documentación de prueba completa, con pruebas confirmadas al mismo tiempo que el código" y todo lo demás; Independientemente de estas pautas, la pauta implícita es que los encargados centrales revisarán todas y cada una de las contribuciones de los no comprometidos antes de aceptarlas.

Los proyectos de código abierto con grupos de encargados centrales a menudo también tienen reuniones virtuales o tiempo dedicado para discutir cualquier contribución que pueda necesitar pares de ojos adicionales, al igual que el proceso de SE de múltiples votos cerrados por parte de los usuarios de cierta reputación antes de que se cierre una pregunta, y la discusión de cosas cuestionables a través de meta o chat.

Aquí hay algunos enlaces rápidos a algunos documentos comunitarios de ejemplo para proyectos que conozco mejor, donde puede encontrar respuestas a su pregunta específica para estos proyectos (pronto notará un tema):

jcmeloni
fuente
Mencionaste pruebas unitarias. Me encantaría ver informes de errores enviados como pruebas unitarias. :) No tenía idea de esas guías. ¡Gracias!
monksy
3

Los proyectos OSS más grandes tendrán una serie de confirmadores principales. Así que supongo que son los "revisores de código" de facto.

Además, dado que el código OSS es, por naturaleza, abierto a todos, es probable que haya mucha más discusión sobre el código que está escribiendo. Si bien esto puede no ser en forma de revisiones formales de código, sin duda descubrirá si su código no se considera adecuado para un proyecto OSS específico.

ZweiBlumen
fuente