lunes, 6 de diciembre de 2010

Linux y el Proyecto GNU


Muchos usuarios de computadoras usan una versión modificada del sistema GNU (18.000 caracteres) a diario, sin darse cuenta. Debido a un particular giro de acontecimientos, la versión de GNU más ampliamente usada hoy es, con frecuencia, más conocida como «Linux», y muchos usuarios no son conscientes del alcance de su conexión con el Proyecto GNU.

Efectivamente hay un Linux, y esta gente lo usa, pero no es el sistema operativo. Linux es el núcleo: el programa del sistema que asigna los recursos de la máquina a los otros programas que usted ejecute. El núcleo es una parte esencial de todo sistema operativo, pero inútil por sí solo; sólo puede funcionar en el contexto de un sistema operativo completo. Linux se usa normalmente en combinación con el sistema operativo GNU: el sistema completo es básicamente GNU, con Linux actuando de núcleo.

Muchos usuarios no son plenamente conscientes de la diferencia entre el núcleo, que es Linux, y el sistema completo, al que también llaman «Linux». El uso ambiguo del nombre no facilita la comprensión. A menudo, estos usuarios piensan que Linus Torvalds desarrolló todo el sistema operativo en 1991, con un poco de ayuda.

Los programadores generalmente saben que Linux es un núcleo. Pero como generalmente han oído llamar también «Linux» a todo el sistema, frecuentemente se imaginan una historia que justifique que todo el sistema se llame como el núcleo. Por ejemplo, muchos creen que una vez que Linus Torvalds terminó de escribir Linux, el núcleo, sus usuarios buscaron más software libre que lo acompañara, y encontraron que (sin ninguna razón en particular) casi todo lo necesario para hacer un sistema de tipo Unix estaba ya disponible.

Lo que encontraron no fue una casualidad: era el sistema GNU. El software libre disponible conformaba un sistema completo porque el Proyecto GNU había estado trabajando desde 1984 en hacer uno. El Manifiesto GNU (31.000 caracteres) había definido la meta de desarrollar un sistema libre de tipo Unix, llamado GNU. El Anuncio Inicial del Proyecto GNU también bosqueja algunos de los planes originales para el sistema GNU. Para cuando se escribió Linux, el sistema estaba casi terminado.

La mayoría de los proyectos de software libre tienen el objetivo de desarrollar un programa particular para una tarea particular. Por ejemplo, Linus Torvalds se propuso escribir un núcleo de tipo Unix (Linux); Donald Knuth se propuso escribir un formateador de textos (TeX); Bob Scheifler se propuso desarrollar un sistema de ventanas (el Sistema de Ventanas X). Es natural medir la contribución de este tipo de proyectos en base a los programas específicos que hayan producido.

Si intentásemos medir la contribución del Proyecto GNU de esta manera, ¿qué conclusión obtendríamos? Un vendedor de CD-ROM encontró que en su «Distribución Linux», el software GNU constituía el contingente único, alrededor del 28% del total de código fuente, y esto incluía varios de los principales componentes esenciales sin los cuales no habría sistema. El propio Linux era alrededor del 3%. Así que si usted fuera a elegir el nombre del sistema basándose en quién escribió los programas que lo forman, la opción única más adecuada sería «GNU».

Pero no pensamos que ésa sea la manera correcta de enfocar la cuestión. El Proyecto GNU no era, y no es, un proyecto para desarrollar paquetes de software específicos. No era un proyecto para desarrollar un compilador de C, aunque lo hicimos. No era un proyecto para desarrollar un editor de textos, aunque desarrollamos uno. El propósito del Proyecto GNU era desarrollar un sistema libre de tipo Unix completo: GNU.

Mucha gente ha hecho importantes contribuciones al software libre del sistema, y todas ellas merecen reconocimiento. Pero la razón por la que es un sistema integrado --y no sólo una colección de programas útiles-- es que el Proyecto GNU se había propuesto hacerlo así. Hicimos una lista de los programas necesarios para hacer un sistema libre completo, y sistemáticamente encontramos, escribimos, o buscamos gente para escribir todo lo que había en la lista. Escribir componentes esenciales pero poco divertidos (1) porque no se puede tener un sistema sin ellos. Algunos de nuestros componentes del sistema, las herramientas de programación, se hicieron populares por sí mismas entre los programadores, pero escribimos muchos componentes que no son herramientas (2). Incluso desarrollamos un juego de ajedrez, GNU Chess, porque un sistema completo necesita también buenos juegos.

A principios de los años 90 habíamos preparado todo el sistema salvo el núcleo (y también estábamos trabajando en un núcleo, el GNU Hurd, que funciona sobre Mach). El desarrollo de este núcleo fue mucho más duro de lo que esperábamos; el GNU Hurd empezó a funcionar de manera fiable en 2001. Ahora estamos empezando a preparar el lanzamiento real del sistema GNU, con el GNU Hurd.

Afortunadamente, no hubo que esperar al Hurd, porque Linux ya estaba disponible. Cuando Linus Torvalds escribió Linux, rellenó la última laguna importante. La gente pudo entonces poner Linux junto al sistema GNU para obtener un sistema libre completo: una versión basada en Linux del sistema GNU; el sistema GNU/Linux, para abreviar.

Juntarlos suena sencillo, pero no fue un trabajo trivial. Algunos componentes de GNU (3) necesitaron cambios sustanciales para funcionar con Linux. Integrar un sistema completo en forma de una distribución que funcionara sin más que «desembalarla» fue también un gran trabajo. Esto precisó resolver la cuestión de cómo instalar y arrancar el sistema (un problema que no habíamos atacado, porque todavía no habíamos alcanzado ese punto). La gente que desarrolló las diversas distribuciones del sistema hicieron una contribución sustancial.

El Proyecto GNU apoya tanto a los sistemas GNU/Linux como al sistema GNU (incluso económicamente). Financiamos la reescritura de las extensiones relacionadas con Linux de la biblioteca de C de GNU, de modo que ahora se integran bien, y los sistemas GNU/Linux modernos usan la versión actual de la biblioteca sin necesidad de hacerle modificaciones. También financiamos las primeras etapas del desarrollo de Debian GNU/Linux.

A día de hoy usamos sistemas GNU basados en Linux para la mayor parte de nuestro trabajo, y esperamos que usted también lo haga. Pero por favor, no confunda a la gente usando el nombre «Linux» de manera ambigua. Linux es el núcleo, uno de los principales componentes del sistema. El sistema en su conjunto es más o menos el sistema GNU, con Linux añadido. Cuando hable de esta combinación, por favor, llámela «GNU/Linux».

Si quiere poner un enlace a una página sobre «GNU/Linux» para mayor referencia, esta página y http://www.gnu.org/gnu/thegnuproject.es.html son una buena elección. Si menciona Linux, el núcleo, y quiere añadir un enlace para mayor referencia, http://www.kernel.org/ es un URL adecuado.

Apéndice: Además de GNU, otro proyecto ha producido independientemente otro sistema operativo libre de tipo Unix. Este sistema es conocido como BSD, y fue desarrollado en la Universidad de California, Berkeley. En los 80 no era libre, pero se volvió libre a principios de los 90. Cualquier sistema operativo libre hoy día es casi con toda seguridad una variante del sistema GNU, o algún tipo de sistema BSD.

La gente pregunta a veces si BSD es también una versión de GNU, como GNU/Linux. Para hacer su código libre, los desarrolladores de BSD se inspiraron en el ejemplo del Proyecto GNU, y hubo llamamientos explícitos de activistas de GNU que ayudaron a persuadirlos, pero su código se superponía poco con el de GNU. Los sistemas BSD de hoy en día usan algunos programas GNU, del mismo modo que el sistema GNU y sus variantes usan algunos programas de BSD; sin embargo, tomados en su conjunto, son dos sistemas diferentes que evolucionan por separado. Los desarrolladores de BSD no escribieron un núcleo y lo añadieron al sistema GNU, así que un nombre como GNU/BSD no encajaría en esta situación.

2 comentarios:

  1. ¿Por qué BSD no se conoce mejor?

    Existen diversas razones por las que BSD es relativamente desconocido:

    1.Los desarrolladores de BSD con frecuencia están más interesados en depurar su código que en promocionarlo.
    2.La mayor parte de la popularidad de Linux se debe a factores externos a los proyectos Linux, como la prensa y las compañías que ofrecen servicios relacionados con Linux. Hasta hace poco los BSD de fuente abierta carecían de tales abogados.
    3.Los desarrolladores de BSD suelen estar más experimentados que los de Linux y ponen menos de su parte a la hora de hacer el sistema fácil de usar. Los recién llegados suelen sentirse más cómodos con Linux.
    4.En 1992 AT&T denunció a BSDI, el distribuidor de BSD/386, alegando que el producto contenía código propiedad de AT&T. El caso fué sobreseído en 1994 pero la huella del litigio perdura. Aún en Marzo de 2000 en un artículo publicado en la web se aseguraba que el caso había sido “resuelto hace poco”.

    Un detalle que el proceso judicial aclaró fue el de la nomenclatura: en los 80 BSD era conocido como “BSD UNIX ”. Tras la eliminación del último vestigio de código de AT&T, BSD perdió el derecho a llamarse UNIX. Es por esto que es posible encontrar títulos de libros referentes a “the 4.3BSD UNIX operating system” y “the 4.4BSD operating system” y “the 4.4BSD operating system”.
    5.Existe la creencia de que los proyectos BSD están fragmentados y enfrentados entre sí. El Wall Street Journal habló de la “balcanización ” de los proyectos BSD. Como en el caso del pleito, esa creencia se fundamenta en historia antígua.

    ResponderBorrar
  2. Hola, bueno ya que el post tiene un fin de convencer de llamar a linux -ojo que lo escribo a propósito- como GNU/linux, es que me animé a comentar.

    En primer lugar el mismo post lo explica linux es el kernel del SO y GNU es un conglomerado de muchas aplicaciones, un proyecto mas grande -yo diría que GNU es el apellido de linux-, asi que llamar a linux como GNU/linux haría más complicada la difusión de este sistema.

    Me explico con 2 ejemplos: windows, todo el mundo lo conoce asi y para ellos es suficiente no tienen que aclarar que son microsoft windows ... etc., te preguntan que sistema usas respondes windows y luego la versión; al igual que el office. el otro ejemplo es el messenger o mensajero ... imagina que te pregunten que servicio de mensajería instantanea usas y se vería hasta ridículo decir "uso el Windows live messenger" o "uso el windows live essentials" uno simplemente le llama messenger + su versión.

    Reclamar que sea llamado de una u otra forma cae en desfachatez. Y se debería aprobechar lo extendido del nombre linux para promocionarlo ... "aquí deberia haber un poco más de mercadotecnia".

    ResponderBorrar

Entradas populares