Esta es una traducción de la página original en inglés.

Linux y el sistema GNU

Muchos usuarios de ordenadores ejecutan a diario, sin saberlo, una versión modificada del sistema GNU. Debido a un peculiar giro de los acontecimientos, a la versión de GNU ampliamente utilizada hoy en día se la llama a menudo «Linux», y muchos de quienes la usan no se dan cuenta de que básicamente se trata del sistema GNU, desarrollado por el proyecto GNU.

Efectivamente existe un Linux, y estas personas lo usan, pero constituye solo una parte del sistema que utilizan. Linux es el núcleo: el programa del sistema que se encarga de asignar los recursos de la máquina a los demás programas que el usuario ejecuta. El núcleo es una parte esencial de un sistema operativo, pero inútil por sí mismo, sólo puede funcionar en el marco de un sistema operativo completo. Linux se utiliza normalmente en combinación con el sistema operativo GNU: el sistema completo es básicamente GNU al que se le ha añadido Linux, es decir, GNU/Linux. Todas las distribuciones denominadas «Linux» son en realidad distribuciones GNU/Linux.

Muchos usuarios no entienden 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 ayuda a comprender la cuestión. Estos usuarios suelen pensar que Linus Torvalds, con un poco de ayuda, desarrolló el sistema operativo completo en 1991.

Los programadores generalmente saben que Linux es un núcleo, pero como habitualmente han oído llamar «Linux» al sistema completo, con frecuencia imaginan alguna historia que justifique dar al sistema completo el nombre del núcleo. Por ejemplo, muchos creen que una vez que Linus Torvalds terminó de escribir Linux, el núcleo, los usuarios buscaron más software libre para completarlo, y descubrieron que (por ninguna razón en particular) casi todo lo necesario para hacer un sistema operativo similar a Unix ya estaba disponible.

Lo que descubrieron no era una casualidad: se trataba del sistema GNU, no del todo completo. El software libre disponible dio como resultado un sistema completo porque el Proyecto GNU había estado trabajando con ese objetivo desde 1984. En el Manifiesto de GNU establecimos el objetivo 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. Cuando se inició a desarrollar Linux, GNU ya estaba casi terminado.

El objetivo de la mayoría de los proyectos de software libre es desarrollar un programa particular para cubrir una necesidad particular. Por ejemplo, Linus Torvalds se propuso escribir un kernel de tipo Unix (Linux), Donald Knuth se propuso escribir un editor de textos (TeX), Bob Scheifler se propuso desarrollar un sistema de ventanas (el X Window System). Es natural medir la contribución de este tipo de proyectos en función de los programas específicos que aportan.

Si tratáramos de medir la contribución del Proyecto GNU de esta manera, ¿a qué conclusión llegaríamos? Un vendedor de CD-ROM constató que en su «distribución Linux» el software de GNU constituía el mayor contingente, con alrededor del 28% del total del código fuente, y esto incluía algunos de los principales componentes esenciales, sin los cuales no habría sistema. Linux representaba alrededor del 3%. (En 2008, las proporciones son similares: en el repositorio principal de gNewSense, Linux representa el 1,5% y los paquetes de GNU el 15%). Así que si hubiera que escoger un solo nombre entre «Linux» y «GNU» para el sistema, en función de quién escribió los programas, la opción más adecuada sería «GNU».

Pero esa manera de examinar el asunto deja de lado una cuestión fundamental. El Proyecto GNU no era, ni 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 lo hicimos. El proyecto GNU se propuso desarrollar un sistema operativo libre completo de tipo Unix: GNU.

Mucha gente ha hecho importantes contribuciones al software libre del sistema, y todos ellos merecen un reconocimiento por su trabajo, 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 propuso que así fuera. Elaboramos una lista de los programas necesarios para hacer un sistema libre completo y sistemáticamente recopilamos, escribimos o buscamos gente para escribir todo lo que había en esa lista. Escribimos ciertos componentes esenciales pero aburridos [1], ya que no se puede obtener un sistema sin ellos. Algunos de nuestros componentes para el sistema, las herramientas de programación, se volvieron populares por sí mismas entre los programadores, pero además escribimos muchos componentes que no son herramientas  [2]. Incluso desarrollamos un juego de ajedrez, GNU Chess, porque un sistema completo también necesita juegos.

A principios de los años noventa ya teníamos listo todo el sistema salvo el núcleo. Habíamos comenzado a trabajar también en un núcleo, el Hurd de GNU, que se ejecutaba sobre Mach. Desarrollar ese núcleo ha sido mucho más difícil de lo esperado. El Hurd de GNU empezó a funcionar de forma fiable en 2001, pero aún falta mucho para que pueda ser utilizado por el público en general.

Afortunadamente no tuvimos que esperar hasta que Hurd estuviera listo, porque Linux ya estaba disponible. Cuando Torvalds liberó Linux en 1992, se colmó la última laguna importante en el sistema GNU. Se pudo combinar Linux con el sistema GNU para obtener un sistema libre completo: una versión del sistema GNU que también contenía Linux; es decir, el sistema GNU/Linux.

Lograr que ambos funcionasen juntos correctamente no fue una tarea trivial. Hubo que realizar cambios sustanciales en algunos componentes de GNU  [3] para que funcionasen con Linux. La integración de un sistema completo para obtener una distribución lista para usar requirió también de mucho trabajo. Fue necesario abordar la cuestión de cómo instalar y arrancar el sistema, un asunto del que no nos habíamos ocupado porque no se había llegado todavía a ese punto. Así, las personas que desarrollaron las diversas distribuciones del sistema realizaron una labor enorme y esencial, pero era una labor que, de todas maneras, seguramente alguien habría hecho tarde o temprano.

El proyecto GNU apoya tanto a los sistemas GNU/Linux como al sistema GNU. La FSF financió la reescritura de las extensiones de la biblioteca C de GNU relacionadas con Linux, por lo que ahora están bien integradas y los sistemas GNU/Linux más recientes utilizan la versión actual de la biblioteca sin modificaciones. La FSF también financió las etapas iniciales del desarrollo de Debian GNU/Linux.

Hoy en día existen muchas variantes diferentes del sistema GNU/Linux, comúnmente llamadas «distribuciones». La mayoría de ellas incluyen programas que no son libres, ya que sus desarrolladores siguen la filosofía «código abierto» asociada con Linux en lugar de la filosofía del «software libre» de GNU. Pero también existen distribuciones GNU/Linux completamente libres. La FSF proporciona asistencia informática para algunas de ellas.

Hacer una distribución GNU/Linux libre no consiste solamente en eliminar los programas que no sean libres. Hoy en día, las versiones habituales de Linux contienen también programas que no son libres. Estos programas están pensados para ser cargados en los dispositivos de entrada/salida cuando se inicia el sistema, y están incluidos en el «código fuente» de Linux en forma de una larga serie de números. Por lo tanto, el mantenimiento de las distribuciones GNU/Linux ahora supone mantener además una versión libre de Linux.

Ya sea que usted use GNU/Linux o no, por favor no siembre confusión empleando la denominación «Linux» de manera ambigua. Linux es el núcleo, uno de los principales componentes esenciales del sistema. El sistema como un todo es básicamente el sistema GNU al que se le ha añadido Linux. Cuando se refiera a esta combinación, por favor emplee la expresión «GNU/Linux».

Si desea proporcionar enlaces como referencia para la cuestión del nombre «GNU/Linux», esta misma página y https://www.gnu.org/gnu/thegnuproject.html son buenas opciones. Si menciona Linux, el núcleo, y desea agregar un enlace para más información, https://foldoc.org/linux es una página adecuada.

Post scríptum

Además de GNU, existe otro proyecto que ha producido de forma independiente un sistema operativo libre de tipo Unix. Ese sistema se conoce como «BSD» y se desarrolló en la Universidad de California, en Berkeley. En los años ochenta no era libre, pero se liberó a principios de los noventa. Los sistemas operativos libres que existen hoy en día [4], casi con seguridad son una variante del sistema GNU o algún tipo de sistema BSD.

La gente a veces pregunta si también BSD es una versión de GNU, como GNU/Linux. Los desarrolladores de BSD se inspiraron en el Proyecto GNU para hacer que su código fuera software libre, y hubo peticiones explícitas de activistas de GNU que ayudaron a persuadirlos, pero su código tenía poco en común con GNU. Los sistemas BSD actuales usan algunos programas de GNU, al igual que el sistema GNU y sus variantes usan algunos programas de BSD. Sin embargo, tomados en su conjunto, son dos sistemas diferentes que evolucionaron por separado. Los desarrolladores de BSD no escribieron un núcleo y lo añadieron al sistema GNU, por lo que un nombre como GNU/BSD no se ajustaría en esta situación.  [5]

Notas

  1. Estos componentes aburridos pero esenciales incluyen el ensamblador de GNU (GAS) y el enlazador (GLD), que ahora son parte del paquete Binutils de GNU , tar de GNU y muchos más.
  2. Por ejemplo, la Bourne Again SHell (BASH), el intérprete PostScript Ghostscript, y la biblioteca C de GNU no son herramientas de programación. Tampoco lo son GNUCash, GNOME, ni GNU Chess.
  3. Por ejemplo, la biblioteca C de GNU.
  4. Después de haber escrito eso, se desarrolló un sistema de tipo Windows casi libre, pero técnicamente no es en absoluto como GNU o Unix, por lo que en realidad no afecta a esta cuestión. La mayor parte del núcleo de Solaris se ha liberado, pero si se quisiera obtener un sistema libre a partir de él, además de sustituir las partes que faltan del núcleo, también habría que integrarlo a GNU o BSD.
  5. Por otra parte, en los años transcurridos desde que se escribió este artículo, la biblioteca C de GNU ha sido portada a varias versiones del núcleo de BSD, lo que ha facilitado la combinación del sistema GNU con este núcleo. Al igual que GNU/Linux, estos sistemas son en realidad variantes de GNU, por lo que se llaman, por ejemplo, GNU/kFreeBSD y GNU/kNetBSD en función del núcleo del sistema. El usuario corriente apenas puede distinguir entre GNU/Linux y GNU/*BSD.