GNU mapa conceptual

3
El Proyecto GNU Software de GNU y el sistema GNU El desarrollo de un sistema completo es un proyecto de gran envergadura. Para hacerlo más viable, decidí adaptar y utilizar partes de software libre ya existentes siempre que fuera posible. Por ejemplo, desde el principio decidí usar TeX como principal compaginador de texto, y unos años más tarde decidí usar el sistema X Window en lugar de escribir otro sistema de ventanas para GNU. Debido a estas decisiones y a otras similares, el sistema GNU no es lo mismo que la colección de todo el software de GNU. El sistema GNU incluye programas que no son software de GNU, programas que fueron desarrollados por otras personas y otros proyectos para sus propios fines, pero que nosotros podemos utilizar porque son software libre. El inicio del proyecto En enero de 1984 renuncié a mi empleo en el MIT y comencé a escribir software para GNU. Fue necesario abandonar el MIT para que la institución no interfiriera con la distribución de GNU como software libre. De haber continuado como parte del personal, el MIT habría podido reclamar la titularidad sobre la obra e imponer sus propios términos de distribución, o incluso transformarla en un paquete de software privativo. No tenía ninguna intención de hacer un trabajo enorme solo para que después resultara inútil para lograr mi objetivo: crear una nueva comunidad para compartir software. No obstante, el Profesor Winston, por entonces director del laboratorio de inteligencia artificial del MIT, tuvo la amabilidad de invitarme a que continuase utilizando las instalaciones del laboratorio. Los primeros pasos Poco antes de comenzar el Proyecto GNU, oí hablar del Free University Compiler Kit (Kit compilador de la universidad libre), también conocido como VUCK (la palabra holandesa equivalente a «libre» comienza con una V). Se trataba de un compilador diseñado para manejar múltiples lenguajes, entre ellos C y Pascal, y compatible con ordenadores de objetivos múltiples. Para evitar tener que escribir todo el compilador desde cero, obtuve el código fuente del compilador Pastel, que era multiplataforma y había sido desarrollado en el Lawrence Livermore Lab. El compilador soportaba y estaba escrito en una versión ampliada de Pascal, diseñada para usarse como lenguaje de programación de sistemas. Le agregué una interfaz para C y comencé a adaptarlo al ordenador Motorola 68000, pero tuve que abandonar la idea al descubrir que el compilador necesitaba demasiados megabytes de espacio, mientras el sistema Unix 68000 admitía solo 64k. Noté que el compilador Pastel analizaba por completo el fichero de entrada transformándolo en un árbol sintáctico, después convertía todo el árbol en una cadena de «instrucciones» generando luego todo el fichero de salida, sin liberar en ningún momento el espacio ocupado. Así, concluí que tendría que escribir un nuevo compilador desde cero. Se trata del compilador que se conoce ahora como GCC; no hay nada del compilador Pastel en él, pero logré adaptar y usar la interfaz para C que había escrito. Pero eso sucedió años más tarde, antes trabajé en el desarrollo de Emacs de GNU. Emacs de GNU Comencé a trabajar en Emacs de GNU en septiembre de 1984, y a principios de 1985 ya comenzaba a ser utilizable. Esto me permitió empezar a utilizar sistemas Unix para las tareas de edición. Como nunca me interesó aprender a usar vi ni ed, hasta entonces había editado en otro tipo de máquinas. En aquel momento ya había personas que comenzaban a mostrarse interesadas en usar Emacs de GNU, lo que planteó la cuestión de cómo distribuirlo. Por supuesto, lo puse en el servidor anónimo ftp del ordenador del MIT que yo usaba (a raíz de ello, ese ordenador —el prep.ai.mit.edu— se convirtió en el principal sitio de distribución ftp de GNU, y cuando fue retirado unos años después, transferimos el nombre a nuestro nuevo servidor ftp). Pero en aquella época muchas de las personas interesadas no tenían acceso a Internet y por lo tanto no podían obtener copias por ese medio.

Transcript of GNU mapa conceptual

El Proyecto GNU

Software de GNU y el sistema GNU

El desarrollo de un sistema completo es un proyecto de gran envergadura. Para hacerlo más viable, decidí adaptar y utilizar partes de software libre ya existentes siempre que fuera posible. Por ejemplo, desde el principio decidí usar TeX como principal compaginador de texto, y unos años más tarde decidí usar el sistema X Window en lugar de escribir otro sistema de ventanas para GNU.

Debido a estas decisiones y a otras similares, el sistema GNU no es lo mismo que la colección de todo el software de GNU. El sistema GNU incluye programas que no son software de GNU, programas que fueron desarrollados por otras personas y otros proyectos para sus propios fines, pero que nosotros

podemos utilizar porque son software libre.

El inicio del proyecto

En enero de 1984 renuncié a mi empleo en el MIT y comencé a

escribir software para GNU. Fue necesario abandonar el MIT para

que la institución no interfiriera con la distribución de GNU como

software libre. De haber continuado como parte del personal, el

MIT habría podido reclamar la titularidad sobre la obra e imponer

sus propios términos de distribución, o incluso transformarla en un

paquete de software privativo. No tenía ninguna intención de hacer

un trabajo enorme solo para que después resultara inútil para lograr mi objetivo: crear una nueva comunidad para compartir software.

No obstante, el Profesor Winston, por entonces director del

laboratorio de inteligencia artificial del MIT, tuvo la amabilidad de

invitarme a que continuase utilizando las instalaciones del laboratorio.

Los primeros pasos

Poco antes de comenzar el Proyecto GNU, oí hablar del Free University Compiler Kit (Kit compilador de la universidad libre), también conocido como VUCK (la palabra holandesa equivalente a «libre» comienza con una V). Se trataba de un compilador diseñado para manejar múltiples lenguajes, entre ellos C y Pascal, y compatible con ordenadores de objetivos múltiples.

Para evitar tener que escribir todo el compilador desde cero, obtuve el código fuente del compilador Pastel, que era multiplataforma y había sido desarrollado en el Lawrence Livermore Lab. El compilador soportaba y estaba escrito en una versión ampliada de Pascal, diseñada para usarse como lenguaje de programación de sistemas. Le agregué una interfaz para C y comencé a adaptarlo al ordenador Motorola 68000, pero tuve que abandonar la idea al descubrir que el compilador necesitaba demasiados megabytes de espacio, mientras el sistema Unix 68000 admitía solo 64k.

Noté que el compilador Pastel analizaba por completo el fichero de entrada transformándolo en un árbol sintáctico, después convertía todo el árbol en una cadena de «instrucciones» generando luego todo el fichero de salida, sin liberar en ningún momento el espacio ocupado. Así, concluí que tendría que escribir un nuevo compilador desde cero. Se trata del compilador que se conoce ahora como GCC; no hay nada del compilador Pastel en él, pero logré adaptar y usar la interfaz para C que había escrito. Pero eso sucedió años más tarde, antes trabajé en el desarrollo de Emacs de GNU.

Emacs de GNU

Comencé a trabajar en Emacs de GNU en septiembre de 1984, y a principios de 1985 ya comenzaba a ser utilizable. Esto me permitió empezar a utilizar sistemas Unix para las tareas de edición. Como nunca me interesó aprender a usar vi ni ed, hasta entonces había editado en otro tipo de máquinas.

En aquel momento ya había personas que comenzaban a mostrarse interesadas en

usar Emacs de GNU, lo que planteó la cuestión de cómo distribuirlo. Por supuesto, lo

puse en el servidor anónimo ftp del ordenador del MIT que yo usaba (a raíz de ello,

ese ordenador —el prep.ai.mit.edu— se convirtió en el principal sitio de distribución

ftp de GNU, y cuando fue retirado unos años después, transferimos el nombre a

nuestro nuevo servidor ftp). Pero en aquella época muchas de las personas

interesadas no tenían acceso a Internet y por lo tanto no podían obtener copias por

ese medio.

¿Un programa es libre para cualquier usuario?

un programa es software libre cuando sale de las manos del autor, esto no significa necesariamente que seguirá siendo software libre para todos los que posean una copia del mismo. Por ejemplo, el software de dominio público (software que no está sujeto a copyright) es software libre, pero cualquiera puede tomarlo y hacer a partir de él una versión modificada privativa. Lo mismo ocurre con muchos programas libres que están sujetos a copyright pero se distribuyen bajo simples licencias permisivas que autorizan el desarrollo de versiones modificadas privativas.

El copyleft y la GPL de GNU

El objetivo de GNU era otorgar libertad a los usuarios, no simplemente alcanzar la popularidad. Para ello teníamos que aplicar términos de distribución que impidieran que el software de GNU pudiera ser convertido en software privativo. El método que empleamos se denomina «copyleft» (1).

El copyleft hace uso de la ley de copyright, pero le da la vuelta de modo que sirva para una finalidad opuesta a la habitual: en lugar de ser un medio para restringir un programa, se transforma en un medio para preservarlo como software libre.

La idea central del copyleft es que le otorgamos a todo el mundo el permiso para ejecutar el programa, copiarlo, modificarlo y redistribuir versiones modificadas; pero no le damos permiso para añadirle restricciones por su cuenta. De esta manera, las libertades cruciales que definen el «software libre» quedan garantizadas para todo aquel que posea una copia; estas libertades se transforman en derechos inalienables.

La Free Software Foundation

A medida que crecía el interés por el uso de Emacs, otras personas se involucraron en el proyecto GNU, y decidimos que había llegado el momento de volver a conseguir fondos. Con ese objetivo, en 1985 creamos la Free Software Foundation (FSF), una organización sin ánimo de lucro exenta de impuestos que se dedica al desarrollo de software libre. La FSF también se hizo cargo de la distribución de Emacs, y más adelante comenzó a añadir en las cintas otros programas libres de GNU (además de otros que no eran de GNU) y a vender manuales libres.

La mayor parte de los ingresos de la FSF provenía de la venta de

copias de software libre y otros servicios relacionados: CD-ROM

con código fuente, CD-ROM con los binarios, elegantes

manuales impresos (todos con la libertad para redistribuirlos y

modificarlos) y distribuciones de lujo con toda la colección de

software lista para usar en la plataforma preferida del cliente).

Software libre y servicios relacionados

La filosofía del software libre rechaza una práctica empresarial específica y ampliamente difundida, pero no está contra el comercio. Cuando las empresas respetan la libertad de los usuarios, les deseamos mucho éxito.

La venta de copias de Emacs es un ejemplo de actividad comercial con software libre. Cuando la FSF me sustituyó en esa actividad, tuve que buscar otro medio de vida. Lo encontré en la venta de servicios relacionados con el software libre que yo había programado. Esto incluía la enseñanza de temas tales como la programación de Emacs de GNU y la personalización de GCC, como así también el desarrollo de software, sobre todo la migración de GCC a nuevas plataformas.

Hoy en día existen corporaciones que ponen en práctica cada

uno de esos tipos de actividad comercial con software libre.

Objetivos técnicos

El principal objetivo de GNU es ser software libre. Aun en el caso de que GNU no tuviese ventajas técnicas sobre Unix, tendría una ventaja social, permitir la colaboración entre los usuarios, y otra ventaja ética, respetar la libertad de los usuarios.

Donación de ordenadores

A medida que crecía la reputación del Proyecto GNU, la gente comenzó a ofrecer al proyecto la donación de máquinas con Unix instalado. Fueron muy útiles, porque la manera más fácil de desarrollar componentes de GNU era hacerlo en un sistema Unix, reemplazando los componentes del sistema uno a uno. Pero esto trajo aparejado el dilema ético de si era correcto para nosotros poseer aunque fuera tan solo una copia de Unix.

Unix era —y es— software privativo, y según la filosofía del

Proyecto GNU no debíamos usarlo.

La lista de tareas de GNU

Mientras se proseguía con las labores en el Proyecto GNU, se desarrollaron o se encontraron componentes para el sistema en número cada vez mayor, por lo que eventualmente nos pareció útil elaborar una lista de las piezas que aún faltaban, que usamos luego para reclutar programadores que las desarrollaran. Esta es la lista que posteriormente se llamó «lista de tareas de GNU». Además de los componentes Unix faltantes, añadimos a la lista otros proyectos de software y documentación útiles que, en nuestra opinión, debía tener todo sistema verdaderamente completo.

En la actualidad (1) ya no queda casi ningún componente Unix

en la lista de tareas GNU; se concluyeron todas, excepto unas

pocas que no son esenciales. Pero la lista contiene muchos

proyectos que podrían considerarse «aplicaciones».

La GPL de GNU para bibliotecas

La biblioteca C de GNU usa un tipo especial de copyleft denominado GNU Library General Public

License (1) (Licencia Pública General de GNU para Bibliotecas) que autoriza el enlace de software

privativo con la biblioteca.

No es una cuestión de principios; no existe ningún principio que establezca el derecho de incluir nuestro código en productos de software privativo (¿por qué contribuir a un proyecto que se rehúsa a compartir con nosotros?). El uso de la LGPL para la biblioteca C, o para cualquier otra biblioteca, es más bien una cuestión de estrategia.

La biblioteca C tiene una función genérica; todo sistema o compilador privativo incluye una biblioteca C. Por lo tanto, poner nuestra biblioteca a disposición únicamente para el software libre, no habría significado ninguna ventaja para este, pero sí hubiera desalentado el uso de nuestra biblioteca.