domingo, 18 de mayo de 2008

Breve historia de GNU/Linux

Richard Stallman y el proyecto GNU

En los inicios de la informática todo el software era libre. Los ordenadores eran máquinas pesadas y caras que sólo se podían encontrar en las Universidades y centros de investigación. Los programadores mantenían su código abierto y colaboraban entre sí a través de Internet, construida toda ella con software libre. En aquellos años el sistema de referencia era UNIX propiedad de ATT, cuyo código era distribuido libremente a empresas y universidades por un precio simbólico. ATT no podía explotar comercialmente UNIX™ debido a su calidad de monopolio. Pero muy pronto este sistema de cooperación se vería amenazado. En el 1984 la ley antimonopolio estadounidense obligó a la compañía a dividirse. A partir de ese momento la restricción impuesta dejo de ser efectiva, UNIX comenzó a comercializarse y se cerró su código. Al mismo tiempo un nuevo mercado comenzaba a tomar forma: la informática doméstica. Los ordenadores se abarataron, se hicieron más ligeros y comenzaron a invadir los hogares. El software comenzó a ser comercializado y las empresas obligaron a sus programadores a firmar acuerdos de no revelación, por los que se comprometían a cerrar el código, y los programas comenzaron a venderse sin facilitar su código fuente. Esto generó una reacción de rechazo que se hizo patente cuando Richard Matthew Stallman (http://www.stallman.org/) en 1984 decidió iniciar el proyecto de crear un sistema operativo similar a UNIX™, pero con una licencia que permitiese el acceso al código fuente, además de la libre distribución y copia. Para ello hubo de abandonar el laboratorio de Inteligencia Artificial del MIT (Instituto Tecnológico de Massachusetts) en el que había trabajado hasta entonces.

Siguiendo una costumbre muy popular entre los hackers informáticos de la época llamó al proyecto GNU (http://www.gnu.org), acrónimo recursivo que significa "GNU is Not Unix", y cuyo emblema sería un ñú. Para proteger al nuevo sistema se creó la licencia GNU/GPL (Licencia Pública General GNU) y el copyleft (opuesto al copyright), que garantiza la libertad de uso, copia y modificación, y obliga a

distribuir el código fuente junto con los binarios.

Stallman cuenta así su propia decisión:

"La elección fácil era unirme al mundo del software propietario, firmar los acuerdos de no revelar y prometer que no iría en ayuda de mi amigo hacker. Es muy probable que desarrollara software que se entregaría bajo acuerdos de no revelar y de esa manera incrementara también las presiones sobre otra gente para que traicionaran a sus compañeros. Podría haber hecho dinero de esta manera, y tal vez me hubiese divertido escribiendo código. Pero sabía que al final de mi carrera al mirar atrás a los años construyendo paredes para dividir a la gente, sentiría que usé mi vida para empeorar el mundo". (http://www.gnu.org/gnu/thegnuproject.es.html)

El proyecto GNU tuvo una gran acogida. Cientos de programadores de todo el mundo se identificaron con su manifiesto fundacional (http://www.gnu.org/gnu/manifesto.es.html) y comenzaron a colaborar y producir componentes del futuro sistema operativo libre. Stallman comenzó a construir gcc, el Compilador GNU para el lenguaje C, verdadera pieza clave en el desarrollo del sistema. En la actualidad gcc, conocido ahora como Colección de Compiladores GNU, ha ampliado su funcionalidad y es capaz de trabajar con 7 lenguajes de programación diferentes.

En 1985 Stallman creó la Free Software Fundation (FSF) (http://www.fsf.org) para dar cobertura legal al proyecto y canalizar las ayudas económicas. En la actualidad la FSF promueve el desarrollo y uso del software libre, particularmente del sistema operativo GNU, y defiende los derechos de los usuarios a copiar, estudiar, modificar y redistribuir los programas informáticos.

EN 1990 el sistema GNU estaba casi completo pero faltaba un componente esencial: el núcleo (kernel). Sin núcleo no puede haber sistema operativo y aunque se había trabajado en GNU Hurd no se habían conseguido resultados efectivos.

Linus Torvalds y el kernel Linux

El primer kernel libre y operativo no llegaría hasta la década de los 90.

En 1991 Linus Torvalds un estudiante finlandés de 21 años desarrolló un núcleo compatible con Unix y lo denominó Linux.

Todo comenzó como un proyecto fin de carrera: se trataba de programar un núcleo para sistema operativo inspirado en Minix, un pequeño Unix desarrollado por el profesor Andrew Tanenbaum.

"Estoy haciendo un sistema operativo libre (es sólo un hobby, no será grande ni profesional como GNU) pero funciona en 386(486) AT clones, lo he estado cocinando desde abril y está quedando listo. Quisiera alguna retroalimentación de las cosas que a ustedes les gustan y no les gustan de MINIX, ..."

Este sencillo mensaje de Torvalds en un grupo de noticias motivó una avalancha de colaboradores y los frutos no se harían esperar. En enero de 1992 se publicó la versión 0.02, y poco tiempo después, en marzo de 1994 se liberó la versión 1.0.0, ya lista para sistemas en producción. A partir de esta versión al combinar Linux con el sistema no completo GNU resultó un sistema operativo libre completo cuyo nombre correcto es GNU/Linux, y no simplemente Linux por más que esta denominación abreviada se haya popularizado. De esta manera se reconoce explícitamente que el sistema no es sólo el núcleo, sino muchas otra piezas de software que se escribieron con anterioridad sin las que hubiera sido imposible tener algo funcional e incluso construirlo.

En 1996 vería la luz el kernel 2.0.0 ya asociado con la mascota del pingüino (llamada Tux). En la actualidad el kernel Linux (http://www.linux.org) va por la versión 2.6.17, está disponible para un gran variedad de arquitecturas y goza de un gran prestigio en la comunidad informática como fiable, sólido y seguro.

El número de versión asociado al núcleo tiene un sentido muy particular ya que está ligado a su desarrollo. En cada momento tenemos siempre dos versiones del núcleo: versión de producción y versión de desarrollo.

La versión de producción es la versión estable en el momento. Esta versión es la que se debería utilizar para un uso normal del sistema. Por su parte la versión de desarrollo es experimental y es la que usan los programadores para crear y verificar nuevas características. Estos núcleos sueles ser inestables y no deberían ser usadas en equipos en producción. Las versiones del kernel se numeran con 3 cifras de la siguiente manera: XX.YY.ZZ, donde: XX: indica la serie principal del kernel. Hasta el momento sólo existe la serie 2. Este número cambia cuando la manera de funcionamiento del kernel ha sufrido una modificación importante. YY: Indica si la versión es de desarrollo o producción. Un número impar indica que es de desarrollo, uno par, que es de producción. ZZ: Indica revisiones menores dentro de una versión en las que se han corregido fallos de programación.

Ejemplo: 2.4.0. Kernel de la serie 2 (XX=2), versión de producción 4 ( YY=4 ya que es par), primera versión del 2.4 (ZZ=0)

Ejemplo: 2.6.17. Kernel de la serie 2, versión 6, en la que se han corregidos errores de programación de la versión 2.6.0

El kernel incluyendo su código fuente se puede conseguir en http://www.kernel.org (The Linux Kernel Archives).


1 comentario:

Anónimo dijo...

Muy interesante artículo. Hasta que el software no se comercializó no pudo popularizarse, antes estaba, como se anota, restringido a un grupo reducido de personas e instituciones.

Todos aquellos programadores que no siguieron a Stallman pueden mirar atrás y decir que realmente han contribuido a popularizar el software, haciendo que llegue a un mayor número de personas, dinamizando y transformando nuestra economía mundial, abriendo el camino hacia fenómenos tan grandes como la globalización y la vinculación de todas las culturas y países casi instantáneamente por la internet, acercando de esta forma a las personas y las naciones.

Cada uno debe seguir su ideal, Richard Stallman ha seguido el suyo, pero llamar inmorales al resto por seguir otro camino que ha traído tantas transformaciones positivas a la humanidad me parece intolerante y desafortunado. Ojalá se una a la gente no sólo con software sino también con actitudes más abiertas y comprensivas.

Saludos