Desarrollo de software de código abierto
Es difícil llevar un proyecto de código abierto siguiendo un método de desarrollo de "software" más tradicional como el modelo en cascada, porque en estos métodos tradicionales no se permite volver atrás a una fase anterior. En el desarrollo de "software" de código abierto, los requisitos raramente se reúnen antes de empezar el proyecto, en vez de eso estos se basan versiones previas de productos de "software", como describe Robbins . Más allá de los requisitos, personal voluntario a menudo se ve atraído para ayudar a desarrollar el producto de "software" basado en las versiones anteriores del "software". Este efecto de red es esencial de acuerdo con Abrahamsson et al.:" si el prototipo reúne suficiente atención, gradualmente empezará a atraer a más y más desarrolladores" Abrahamsson et al también apunta que la comunidad es muy dura, tanto como en el mundo empresarial del "software" de código cerrado: "si encuentras cliente sobrevives, pero sin ellos mueres".
Convenciones de programación
Todos los desarrolladores de software tienen que enfrentarse con el problema de organizar y dirigir en ocasiones de un gran número de instrucciones complejas. Para todos los proyectos de software excepto los más pequeños, el código fuente (instrucciones) se divide en archivos separados y frecuentemente entre muchos directorios. De manera natural para programadores se concentran funciones estrechamente relacionadas (comportamientos) en el mismo archivo y se agrupan archivos relacionados en directorios. Como el desarrollo de software evolucionó desde lo programación por procedimientos (como FORTRAN) hacia una programación más orientada a objetos (como C++), se convirtió en práctica habitual escribir el código para una sola clase (pública) en un único archivo (la convención una clase por archivo). Java ha ido un paso más allá: el compilador Java devuelve un error si encuentra más de una clase pública por archivo.