En ocasiones, los nuevos usuarios de se crean falsas expectativas acerca de éste. es un sistema operativo único, y es importante entender su filosofía y diseño para usarlo de una manera eficiente. Aunque usted sea un experimentado ``gurú'' de UNIX, lo que viene a continuación le interesará con total seguridad.
En las versiones comerciales de UNIX, el sistema se desarrolla siguiendo una rigurosa política de mantenimiento de la calidad, con sistemas de control de revisiones para las fuentes y documentación, etc. Los desarrolladores no pueden añadir cosas nuevas por su cuenta: cualquier cambio será en respuesta a un informe de un bug detectado, y se registrará cuidadosamente en el sistema de control de versiones, de manera que podrá volverse atrás sin problemas. Cada desarrollador tiene asignada una o más partes del código, y solo ese desarrollador puede alterar esas secciones del código.
Internamente, el departamento de calidad realiza rigurosas pruebas en cada nueva versión del sistema operativo, e informa de los errores. Es responsabilidad de los desarrolladores corregir esos errores. Se utiliza un complicado sistema de análisis estadístico para asegurarse de que se corrige cierto porcentaje de errores antes de lanzar la versión siguiente.
Como vemos, el proceso seguido por los desarrolladores de los UNIX comerciales para mantenerlo y darle soporte es muy complicado, pero razonable. La compañía debe tener cierta seguridad de que la próxima revisión del sistema esté lista para comercializarse, a través de las pruebas que hemos comentado. Esto supone un gran trabajo que involucra a cientos (si no miles) de programadores, betatesters, redactores de documentación y personal administrativo. Por supuesto, no todos los fabricantes de UNIX trabajan así, pero esto nos da una idea de la panorámica habitual.
Con , hay que olvidarse del concepto de desarrollo organizado, sistemas de control de versiones, información de errores estructurada o análisis estadísticos. es un sistema operativo hecho por ``hackers''1.3
Linux ha sido desarrollado principalmente por un grupo de programadores de todo el mundo unidos por Internet. A través de Internet, cualquiera tiene la oportunidad de unirse al grupo y ayudar al desarrollo y depuración del núcleo, portar nuevo software, escribir documentación o ayudar a los nuevos usuarios. La comunidad de se comunica principalmente mediante diversas listas de correo y grupos de USENET. Existen algunos acuerdos en el desarrollo, como que cualquiera que desee que su código sea incluido en la versión ``oficial'' del núcleo deberá ponerse en contacto con Linus Torvalds, quien comprobará el código y lo incluirá en el núcleo. Por lo general, estará encantado en hacerlo, siempre que no estropee otras cosas.
El sistema se ha diseñado siguiendo una filosofía abierta y de crecimiento. Por regla general hay una nueva versión del núcleo cada pocas semanas. Esto depende del número de errores a corregir, la cantidad de información recibida de los usuarios, y lo que haya dormido Linus esta semana.
Por lo tanto, resulta difícil decir que todos los errores vayan a poder corregirse para cierta fecha. Pero conforme el sistema va apareciendo libre de errores críticos o manifiestos, se considera ``estable'' y se lanzan nuevas revisiones. Hay que recordar que no se pretende realizar un sistema perfecto, sin errores. Se trata sencillamente de desarrollar una implementación libre de UNIX. está hecho para desarrolladores, más que para otro tipo de personas.
Si alguien desarrolla una aplicación o nueva característica para el núcleo, se añade inicialmente en una fase ``alfa'', es decir, pensada para que la puedan probar los usuarios más atrevidos aficionados a enredar con los problemas que surgen en el código cuando se encuentra en fases tempranas de desarrollo. Dado que la comunidad de se basa sobre todo en Internet, el software ``alfa'' se envía, normalmente, a servidores FTP dedicados a (vea el apéndice C) y se anuncia mediante un mensaje puesto en un grupo USENET dedicado a . Los usuarios que descargan y prueban el software pueden entonces enviar sugerencias, correcciones de errores o preguntas al autor por correo electrónico.
Una vez que se corrigen los problemas iniciales, el código pasa a una fase ``beta'', en la que se considera estable pero incompleto (o sea, funciona, pero no incluye todas las funcionalidades previstas). También se puede pasar a una etapa ``final'' en la que el software se considera terminado.
Recuerden que lo anterior son sólo convenciones, y no leyes. Algunos programas pueden no necesitar fases ``alpha''. Es el desarrollador quien tomará las decisiones al respecto en todo caso.
Estará sorprendido de que un grupo de programadores y aficionados voluntarios, relativamente desorganizados, hayan podido hacer algo. Sin embargo, este grupo constituye uno de los más eficientes y motivados. Todo el núcleo de Linux se ha escrito desde cero, sin emplear código alguno de fuentes propietarias. Todo el software, bibliotecas, sistemas de ficheros y controladores se han desarrollado o se ha portado desde otros sistemas; y se han programado controladores para los dispositivos más populares.
Normalmente, se distribuye junto con otro software en lo que se conoce como una distribución, un paquete de software que permite poner a punto un sistema completo. Dado que crear un sistema UNIX partiendo del núcleo y programas de diversas fuentes puede resultar difícil para los usuarios más noveles, se crearon las distribuciones con el fin de facilitar esta tarea: con una distribución, usted sólo tiene que tomar el CD-ROM o los disquetes y proceder a su instalación para disponer de un sistema completo con programas de aplicación incluidos. Como es de esperar, no hay ninguna distribución ``estándar''. Hay muchas, cada una con sus ventajas e inconvenientes. Hablaremos más sobre distribuciones en la Sección 2.2.