PROYECTO GNU

La primera comunidad que comparte software

En 1971 en el AI Lab utilizaba  un sistema operativo de tiempo compartido llamado ITS (Incompatible Timesharing System), diseñado y escrito por los hackers de la plantilla del lab en lenguaje ensamblador para el Digital PDP-10, uno de los ordenadores más grandes de la época. Su labor de hacker  consistía en mejorar dicho sistema.

No llamaban  «software libre» a su software porque el término no existía todavía; pero era exactamente eso. Cuando alguien de otra universidad o de otra empresa quería instalar y utilizar un programa, se lo prestaban de buen grado.

  • EL colapso de la comunidad

En 1980 existieron cambios drásticos, con la desaparición de la comunidad hacker del AI Lab, seguida de la desaparición del ordenador PDP-10.

En 1981 la empresa pionera  fue Symbolics que contrató a casi todos los hackers del AI Lab.

En 1982 el AI Lab compró un nuevo PDP 10 en sus administradores decidieron usar un sistema de Digital de tiempo compartido no libre en lugar del ITS en la nueva máquina.

La idea de que el sistema social en torno al software propietario —un sistema que te impide compartir o modificar el software.

  • Una elección moral radical

Una vez desaparecida la comunidad, era imposible seguir como hasta entonces. De modo que se enfrentó a un dilema moral radical.

Podría haber ganado mucho dinero de esta forma, y quizás se hubiera divertido escribiendo código. Pero sabía que, al final de su carrera, echaría la vista atrás y sólo habría contribuido a levantar muros para dividir a la gente, habría pasado toda su vida convirtiendo este mundo en un lugar mucho peor.

La primera cosa necesaria era crear un sistema operativo, el software crucial para empezar a utilizar un ordenador. Con un sistema operativo puedes hacer muchas cosas; sin él, ni siquiera puedes hacer funcionar un ordenador. Mediante un sistema operativo libre podría armar una nueva comunidad cooperativa de hackers e invitar a todos a que se uniesen a ella. Y cualquiera podría utilizar un ordenador sin verse obligado previamente a conspirar para privar de esto a sus amigos.

Como desarrollador de un sistema operativo, tenía las aptitudes necesarias para desempeñar esta labor. De manera que, aun cuando el éxito no estuviera asegurado, comprendió que había sido elegido para llevar a cabo esta misión. Optó por crear un sistema compatible con Unix para dotarle así de portabilidad y facilitar el cambio a los usuarios de Unix.

Un sistema operativo no significa sólo un kernel, que apenas permite ejecutar otros programas. En los años setenta, cualquier sistema operativo decente incluía sus propios procesadores de comandos, ensambladores, compiladores, interpretes, depuradores, editores de textos, gestores de correo y mucho más. ITS, Multics, VMS y Unix, todos incluían estos componentes.

  • Libre en su acepción de libertad

A veces se malinterpreta el término de «software libre» para empezar, no tiene ninguna relación con el precio. Lo que nos interesa es la libertad. He aquí la definición de software libre. Un programa es software libre para el usuario siempre que, como usuario particular, tengas:

1. La libertad de ejecutar el programa sea cual sea el propósito.

2. La libertad para modificar el programa para ajustarlo a tus necesidades. (Para que se trate de una libertad efectiva en la práctica, deberás tener acceso al código fuente, dado que sin él la tarea de incorporar cambios en un programa es extremadamente difícil.

3. La libertad de redistribuir copias, ya sea de forma gratuita, ya sea a cambio del pago de un precio.

4. La libertad de distribuir versiones modificadas del programa, de tal forma que la comunidad pueda aprovechar las mejora introducidas.

  • El software GNU y el Sistema GNU

El desarrollo de un sistema operativo de principio a fin es un proyecto colosal. Como primera medida, decidió adaptar y utilizar algunas piezas existentes de software libre siempre que le fuera posible. Desde el inicio, decidió  usar TEX como principal procesador de texto, y unos años más tarde se pasó al  XWindow  System en vez de escribir otro sistema de ventanas para GNU.

Debido a esta decisión, el sistema GNU no consiste en una colección completa de software GNU. El sistema incluye programas desarrollados por otros individuos y para proyectos con sus propios propósitos que empleamos por su condición de software libre.

  • Los inicios del proyecto

En 1984 abandonó su  empleo en el MIT y comenzó  a escribir software GNU. Abandonar el MIT era imprescindible si él quería  que nadie interfiriera en la distribución de GNU como software libre.

No obstante, el profesor Winston, el entonces director del Lab AI en el MIT, me invitó a utilizar las instalaciones del laboratorio.

  • Los primeros pasos

Poco después de comenzar el proyecto GNU, le hablaron del Free University Compiler Kit, también conocido como VUCK. [La palabra danesa para libre (free) estaba escrita con una «V»] Se trataba de un compilador diseñado para trabajar con múltiples lenguajes, incluido C y Pascal, y compatible con ordenadores de objetivos múltiples.

Para evitar tener que reescribir todo el compilador, obtuvo el código fuente para el compilador Pastel, un compilador de plataformas múltiples desarrollado en Lawrence Livermore Lab.

Me di cuenta de que el compilador Pastel analizaba el archivo de entrada en forma de árbol sintáctico, convirtiéndolo en una cadena de «instrucciones» y luego generando todo el archivo de salida sin liberar espacio de almacenamiento. Así que concluí que tendría que escribir un nuevo compilador partiendo de cero. El resultado es el compilador conocido como GCC; aunque no contiene ningún elemento del compilador Pastel, conseguí adaptar y utilizar el front end C que había escrito.

  • GNU Emacs

En 1984 comenzó  a trabajar en el GNU Emacs .Esto le permitió comenzar a usar el sistema Unix para labores de edición. Dado que nunca se interesó aprender a usar vi o ed, hasta entonces había realizado sus  ediciones en otro tipo de máquinas.

  • ¿Un programa es libre para cualquier usuario?

Cuando un programa de software libre deja de estar en manos de su autor, esto no significa necesariamente que siga siendo software libre para cualquiera que se haga con una copia de él. Por ejemplo, el software de dominio público —software sin copyright— es software libre, pero cualquiera puede modificarlo y hacer una versión propietaria a partir de él. Lo mismo ocurre con muchos programas libres con copyright que se distribuyen con licencias simples muy permisivas que autorizan el desarrollo de versiones propietarias modificadas.

  • El Copyleft y la GNU GPL

El objetivo de GNU era proporcionar libertad a los usuarios, no simplemente ser popular. De modo que necesitábamos idear unos términos de distribución que impidieran que el software de GNU se convirtiera en software propietario. El método que empleamos se denominó copyleft.

Copyleft utiliza la ley de copyright, pero dándole la vuelta para servir a un propósito opuesto al habitual: en lugar de privatizar el software, ayuda a preservarlo como software libre.

La idea fundamental del copyleft es que se autoriza la ejecución del programa, su copia, modificación y distribución de versiones modificadas, siempre que no se añada ninguna clase de restricción a posteriori. De este modo, las libertades cruciales que definen el «software libre» quedan garantizadas para cualquiera que posea una copia; estas libertades se convierten en derechos inalienables.

  • La Free Software Foundation

A medida que aumentaba el interés por Emacs, otros vinieron a sumarse al proyecto GNU, y decidimos que era el momento de volver a buscar fuentes de financiación. De este modo, en 1985 creamos la Free Software Foundation, una organización sin ánimo de lucro dedicada al desarrollo de software libre. La FSF también se hizo con la empresa de distribución de copias de Emacs, a lo que más tarde añadiría otros programas libres— no sólo de GNU— así como la venta de manuales libres.

  • Los servicios relacionados con el software libre

La filosofía del software libre rechaza una práctica empresarial concreta y muy generalizada, pero no rechaza el negocio en general. Cuando una empresa respeta la libertad de los usuarios, le deseamos mucho éxito.

La venta de copias de Emacs ilustra una clase de empresa relacionada con el software libre. Cuando la FSF se hizo con el negocio, él se vio  obligado a buscar nuevamente la vida. Así fue como empezó  a vender servicios relacionados con el software libre que acababa de desarrollar. Esto incluía la enseñanza de cuestiones como la programación  de GNU Emacs, la modificación del GCC a la medida del usuario o el desarrollo de software, normalmente para instalar el GCC en nuevas plataformas.

Hoy por hoy, una serie de corporaciones se dedican a este tipo de servicios relacionados con el software libre. Algunas distribuyen colecciones de software libre en CD-Rom; otras proporcionan servicio técnico a distintos niveles, contestando a las preguntas de los usuarios, subsanando bugs o añadiendo nuevas funciones. Incluso, estamos empezando a ver empresas dedicadas al lanzamiento de nuevos productos de software libre.

  • Los objetivos técnicos

El principal objetivo de GNU era ser software libre. Aun cuando GNU no entrañara ninguna ventaja técnica frente a Unix, sí tendría una ventaja social, al permitir que los usuarios cooperaran, y otra ética, al respetar su libertad.

Por otro lado, rechazábamos ese empeño de Unix en conservar una memoria reducida, y así decidimos no dar soporte a las máquinas de 16 bits —estaba claro que las de 32 bits serían la norma.

Estas decisiones permitieron que muchos programas GNU superasen a sus homólogos de Unix en fiabilidad y velocidad

  • La donación de ordenadores

A medida que iba aumentaba la popularidad del proyecto GNU, la gente empezó a donar ordenadores que operaban con Unix. Y fueron de gran utilidad, porque la forma más fácil de desarrollar componentes de GNU era partiendo de un sistema Unix y reemplazar sus componentes uno a uno. Pero esto nos planteó un dilema ético: ¿era correcto poseer, aunque fuera tan solo una copia, de Unix?

Unix era —y es— software propietario, y según la filosofía del proyecto GNU no debíamos recurrir a él.

  • La lista de tareas de GNU

A medida que avanzaba el proyecto GNU y se desarrollaron o descubrieron un creciente número de componentes de sistema, por lo cual se elaboró una lista de asignaturas pendientes. La utilizamos para reclutar desarrolladores que escribieran las piezas que faltaban. Esta lista se conoció como la lista de tareas de GNU. Además de los componentes de Unix, incluimos en la lista otros proyectos útiles de software y la documentación que, en nuestra opinión, precisaba cualquier sistema completo. En la actualidad, apenas figuran algunos componentes de Unix.

  • La librería GNU GPL

La librería C GNU utiliza un copyleft especial llamado GNU Library General Public License, que autoriza el enlace de software propietario con la librería. ¿Por qué permitir esta excepción? Ningún principio establece el derecho de los productos de software propietario a incluir nuestro código.

La librería C desempeña tareas genéricas; todo sistema o compilador propietario viene acompañado de una librería C. Por lo tanto, limitar nuestra librería C al software libre no reportaría ninguna ventaja para éste  —hubiera desalentado el uso de nuestra librería.

  • ¿Un reto personal?

Eric Raymond dice que «todo buen trabajo de software empieza cuando un desarrollador se plantea un reto personal». Pero muchos componentes esenciales del software GNU se desarrollaron con el fin de crear un sistema operativo libre y completo. Su origen está en una visión y un plan, no en un impulso individual.

Ejemplo, desarrollamos la librería C GNU, la Bourne Again Shell (BASH) y el GNU  porque cualquier sistema similar a Unix precisaba de estos componentes. Lo mismo puede decirse de mis propios programas—el compilador C GNU, GNU Emacs, GDB y GNU Make.

  • El GNU Hurd

En 1990, el sistema GNU estaba casi terminado. Faltaba solo el componente central, el kernel. Así que se lo creo como una colección de procesos de servidor que se ejecutaría sobre Mach. Mach es un microkernel desarrollado en la Carnegie Mellon University. El GNU Hurd es una colección de servidores o «manada de gnus» implantados en Mach que desempeñan las diversas tareas propias del kernel de Unix.

Una de las razones que nos impulsó a elegir este diseño era evitar lo que parecía la parte más dura del trabajo: depurar un programa de kernel sin un depurador de fuentes. Esto ya se había resuelto en Mach, y esperábamos depurar los servidores Hurd como programas de usuarios, con el GDB.

  • Linux y GNU/Linux

El GNU Hurd no está listo para producción. Pero se encontraba otro kernel a disposición. En 1991, Linus Torvalds desarrolló un kernel compatible con Unix y lo llamó Linux. En el año 1992, la combinación de Linux con el incompleto sistema GNU resultó en un sistema operativo libre. Denominamos esta versión GNU/Linux para explicar su composición, una combinación del sistema GNU con Linux como kernel.

  • Los retos futuros

Existen diversos retos que plantean un futuro incierto para el software libre tales como:

  • Hardware secreto

Los fabricantes de hardware tienden cada vez más a mantener en secreto las especificaciones del hardware. Esto dificulta enormemente la tarea de escribir drivers libres para que Linux y Xfree86 sean compatibles con el hardware nuevo. Aunque se cuenta con sistemas libres y completos, pero no durará mucho si no son compatibles con los ordenadores del mañana.

Hay dos formas de enfrentarse a este problema.

Los programadores pueden hacer ingeniería inversa para descubrir cómo crear programas compatibles con el hardware.

Elegir qué hardware será compatible con el software libre.

  • Librerías no libres

La librería no libre que opera en un sistema operativo libre constituye una trampa para los desarrolladores de software libre. Las atractivas funciones de la librería son el cebo perfecto; al utilizar la librería, caes en la trampa, porque tu programa no puede integrarse de forma útil en un sistema operativo libre. Y, lo que es peor, en caso de popularizarse un programa que utilice una librería propietaria, podría arrastrar a otros programadores desprevenidos hacia la misma trampa.

  • Patentes de software

La amenaza más seria a la que nos enfrentamos procede de las patentes de software, que pueden introducir algoritmos y funciones fuera del alcance del software libre al menos durante veinte años. Las patentes del algoritmo de compresión LZW se aplicaron en 1983, y todavía no puede publicar software libre que produzca GIFs adecuadamente comprimidos. En 1998, se suspendió la distribución de un programa libre para producir archivos de audio MP3 comprimidos bajo amenaza de una demanda judicial por patente.

Existen formas de abordar la cuestión de las patentes:

Buscar pruebas que demuestren la invalidez de una patente

Buscar modos alternativos para realizar una tarea.

Pero estos métodos funcionan sólo de vez en cuando; cuando fallan ambos, la patente puede resultar en un software libre desprovisto de alguna función necesaria para los usuarios.

  • Documentación libre

La mayor deficiencia de nuestros sistemas operativos no reside en el software, sino en la ausencia de buenos manuales libres para nuestros sistemas. La documentación es una parte esencial de cualquier paquete de software; un paquete importante de software libre sin un buen manual libre que lo acompañe constituye un lastre considerable.

Tenemos muchos ejemplos de ello en la actualidad. La documentación libre, al igual que el software, es una cuestión de libertad, no de precio. Los criterios para el manual libre son bastante parecidos a los del software libre: hay que darles a los usuarios ciertas libertades. Debe autorizarse la redistribución —incluida la venta comercial— en papel y on line, de modo que el manual pueda acompañar a todas las copias del programa.

  • Es necesario hablar de libertad

Actualmente, se calcula que existen diez millones de usuarios de sistemas GNU/Linux como Debian GNU/Linux y Red Hat Linux. El software libre ha desarrollado tales ventajas prácticas que está ganando adeptos por razones puramente prácticas.

Las consecuencias positivas de esto son evidentes: un mayor interés por desarrollar software libre, más clientes para las empresas de software libre y una mayor capacidad para alentar a las empresas a desarrollar software libre comercial en lugar de productos de software propietario.

  • «Open Source» (código fuente abierto)

Los términos «software libre» y «código abierto» describen más o menos la misma categoría de software, pero implican cosas muy distintas acerca del software y sus valores.

El Proyecto GNU sigue empleando el término «software libre» para expresar la idea de que la libertad, y no sólo la tecnología, es importante.

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: