Escribir código fuente es divertido.
Escribir documentación y comentar código es menos divertido.
Cuando un desarrollador trabaja en una empresa que aplica buenos comentarios y documentación, no hay otra opción: o bien este desarrollador los escribe o corre el riesgo de ser despedido.
Cuando un desarrollador contribuye a un proyecto de código abierto, lo hace de forma gratuita, y especialmente por diversión. No hay nadie que obligue a este desarrollador a hacer cosas que no está dispuesto a hacer, como escribir documentación y comentarios.
Es por eso que muchos proyectos de código abierto carecen de una amplia documentación y comentarios.
¿Cómo puede la gente contribuir a proyectos de código abierto sin documentación ni comentarios?
Si el código fuente es de alta calidad, los comentarios no son necesarios demasiado. Los comentarios de las interfaces públicas y la documentación son especialmente útiles para los consumidores del proyecto, es decir, los desarrolladores que simplemente usan bibliotecas, no contribuyen a ellos.
No hay factor de productividad involucrado. Estoy trabajando en una empresa donde la base de código real no tiene pruebas unitarias, ni documentación, ni comentarios. Paso mucho tiempo averiguando qué está haciendo un método 600-LOC o codificando cosas que ya están hechas, pero que no se pueden descubrir debido a la falta de documentación, por lo que la mayoría de las veces, simplemente estoy desperdiciando el dinero de la compañía en lugar de hacer algo valioso.
Por otro lado, para un proyecto de código abierto, no importa si uno de los contribuyentes desperdició una semana debido a la falta de documentación o comentarios adecuados. Lo peor que puede pasar es que este contribuyente abandone el proyecto.
Descubrir el código sin comentarios o documentación puede incluso ser un desafío, es decir, atraer a algunos contribuyentes, en lugar de desalentarlos.
En proyectos empresariales, no es inusual que un desarrollador se vea obligado a trabajar en todos los aspectos de un producto y, pocos años después, tenga que conocer casi todo el sistema. En un proyecto de código abierto, nadie te obliga a saberlo todo. Simplemente puede contribuir a una pequeña parte y tener un excelente conocimiento de esta parte, sin necesidad de documentación.