viernes, 14 de enero de 2011

El Proyecto GNU

Este es un artículo hecho por Richard Stallman en el que se da un breve resumen de la Historia del Software Libre, GNU/Linux, El Kernel, La Filosofía y las licencias:

LA PRIMERA COMUNIDAD QUE COMPARTE SOFTWARE
Cuando empecé a trabajar en el Laboratorio de Inteligencia Artificial del MIT (Instituto de Tecnología de Massachusetts) en 1971, formé parte de una comunidad que compartía software que había existido por muchos años. El compartir software no se limitaba a nuestra comunidad en particular; es tan antiguo como las computadoras, del mismo modo que compartir recetas de cocina es tan antiguo como cocinar. Pero nosotros lo hicimos más que la mayoría.
El laboratorio de IA usaba un sistema operativo de tiempo compartido llamado ITS (sistema de tiempo compartido incompatible) que los hackers de la administración del laboratorio (1) habían diseñado y escrito en lenguaje ensamblador para el PDP-10 (Procesador de Datos Programados) de Digital, una de las computadoras más grandes de la época. Como miembro de esta comunidad, un hacker de sistema de la administración del Laboratorio de IA, mi trabajo era mejorar este sistema.
No llamábamos «software libre» a nuestro software porque ese término todavía no existía; pero eso es lo que era. En cualquier ocasión que personas de otra universidad o de una empresa quisieran portar y usar un programa, les dejábamos con gusto. Si veía a alguien usar un programa que no era familiar e interesante, siempre podía pedir ver el código fuente, para que pudiera leerlo, modificarlo, o tomar partes del mismo para hacer un nuevo programa.
El uso de «hacker» para querer decir «intruso en la seguridad» es una confusión provocada por los medios de masas. Nosotros los hackers rechazamos reconocer ese significado, y continuamos usando la palabra para decir alguien que ama programar, alguien que disfruta de la inteligencia pícara, o la combinación de ambos.


EL COLAPSO DE LA COMUNIDAD
La situación cambió drásticamente a comienzos de los años 80 cuando Digital discontinuó la serie PDP-10. La comunidad hacker del laboratorio de IA ya había colapsado, no mucho tiempo antes. En 1981, la compañía derivada Symbolics había contratado a casi todos los hackers del laboratorio de IA, y la comunidad despoblada no era capaz de mantenerse a sí misma.
Las computadoras modernas de esa época, como la VAX o la 68020, tenían sus propios sistemas operativos, pero ninguno de ellos era software libre: debía firmar un acuerdo de no divulgación incluso para obtener una copia ejecutable.
Esto quería decir que el primer paso para poder utilizar una computadora era prometer que no ayudaría a su prójimo. Se prohibía la existencia de una comunidad cooperativa. La regla hecha por los dueños de software privativo era: «si comparte con su prójimo, es un pirata. Si usted desea algún cambio, ruéguenos para que lo hagamos».
La idea de que el sistema social del software privativo, el sistema que dice que no tiene permiso para compartir o cambiar el software, es antisocial, que no es ético, que es sencillamente incorrecto, puede resultar una sorpresa para algunos lectores. ¿Pero qué otra cosa podríamos decir sobre un sistema basado en dividir al público y mantener a los usuarios indefensos?. Los lectores que se puedan sorprender por esta idea es porque han tomado el sistema social del software privativo tal como se lo han dado, o porque lo han juzgado en función de los términos sugeridos por las empresas que hacen software privativo. Los distribuidores de software han trabajado duro durante mucho tiempo para convencer a las personas de que únicamente hay una manera de ver el tema.
Los usuarios de computadoras deberían ser libres para modificar los programas para ajustarlos a sus necesidades, y libres para compartir el software, porque la base de la sociedad está en ayudar a las demás personas.

UNA ELECCIÓN MORAL SEVERA.
Al desaparecer mi comunidad, se hizo imposible continuar como antes. En lugar de ello, me enfrenté a una elección moral severa.
La elección fácil era unirme al mundo del software privativo, firmando acuerdos de no revelación, y prometiendo que no iría en ayuda de mi compañero hacker.
Podría haber hecho dinero de esta manera, y tal vez me hubiese entretenido escribiendo código. Pero sabía que al final de mi carrera miraría hacía los años en los que construí muros para dividir a la gente; y sentiría que usé mi vida para hacer al mundo un lugar peor.
Ya había estado del lado en que se reciben los acuerdos de no revelación, por experiencia propia, cuando alguien se negó a entregarme, a mí y al laboratorio de IA del MIT, el código fuente del programa de control de nuestra impresora (la ausencia de ciertas características en este programa hacía que el uso de la impresora fuese extremadamente frustrante.).
Otra elección, sencilla pero dolorosa, era abandonar el campo de la computación. De esta manera no se usarían mis habilidades para mal, pero aún así se desperdiciarían.
Así que busqué la manera en la cual un programador podría hacer algo para bien. Me pregunté: ¿existe algún programa o programas que yo pueda escribir, de tal manera de hacer posible una comunidad nuevamente?
La respuesta era clara: lo primero que se necesitaba era un sistema operativo. Con un sistema operativo libre, podríamos tener de nuevo una comunidad de hackers cooperando, e invitar a cualquiera a unirse. Y cualquiera sería capaz de utilizar una computadora sin que de movida conspire a favor de la privación de sus amigos.
Como programador de sistemas operativos, tenía las habilidades apropiadas para esta tarea. Así que aún cuando no podía asegurarme el éxito, me di cuenta que había sido elegido para hacer ese trabajo. Decidí hacer al sistema compatible con Unix para que fuera portable, y para que los usuarios de Unix pudieran cambiarse a él con facilidad. El nombre GNU se eligió, siguiendo una tradición hacker, como acrónimo recursivo para ,«GNU No es Unix».
Un sistema operativo no implica sólo un núcleo, apenas suficiente para hacer funcionar otros programas. En los 70, todo sistema operativo digno de llamarse así incluía procesadores de comandos, ensambladores, compiladores, intérpretes, depuradores, editores de texto, programas de correo y muchos otros. ITS los tenía, Multics los tenía, VMS los tenía, y Unix los tenía. El sistema operativo GNU los incluiría también.

LIBRE COMO EN LIBERTAD
El término «software libre» a veces se malinterpreta; no tiene nada que ver con el precio, «free» en «free software» puede significar «libre» o «gratis», por lo que esta aclaración no aplicaría al español. Se trata de la libertad. Aquí, por lo tanto, está la definición de software libre.
Un programa es software libre para usted, un usuario en particular, si:
  1. Tiene la libertad de ejecutar el programa, como quiera, para cualquier propósito.
  2. Tiene la libertad de adaptar el programa de acuerdo a sus necesidades (para que esta libertad sea efectiva en la práctica, debe tener acceso al código fuente; porque modificar un programa sin disponer del código fuente es extraordinariamente difícil.).
  3. Tiene la libertad para redistribuir copias, tanto gratis como por un precio.
  4. Tiene la libertad para distribuir versiones modificadas del programa, de modo que la comunidad pueda beneficiarse de sus mejoras.
EL INICIO DEL PROYECTO
En enero de 1984 renuncié a mi trabajo en el MIT y comencé a escribir software de GNU. Era necesario abandonar el MIT para que no pudiera interferir con la distribución de GNU como software libre. Si hubiese continuado como parte del personal, el MIT podría haber reclamado la titularidad sobre el trabajo, y podría haber impuesto sus propios términos de distribución; o incluso podría haberlo transformado en un paquete de software privativo. Yo no tenía la intención de hacer un trabajo enorme sólo para ver que perdía la utilidad para la cual se había realizado: crear una nueva comunidad para compartir software.

LOS PRIMEROS PASOS
Poco después de comenzar el Proyecto GNU, escuché acerca del Free University Compiler Kit (Kit compilador de la universidad libre), se trataba de un compilador diseñado para manejar múltiples lenguajes, entre ellos C y Pascal, y para admitir múltiples máquinas destino. Le escribí a su autor para consultarle si GNU lo podría usar.
Él me respondió burlescamente, dejando en claro que la universidad era libre, pero el compilador no. Por lo tanto, decidí que mi primer programa para el proyecto GNU sería un compilador multilenguaje y multiplataforma.
Ese nuevo compilador se conoce ahora como GCC; y me las arreglé para adaptar y usar la interfaz que había hecho para C. Pero eso pasó unos años más tarde; primero trabajé en Emacs de GNU.

EL COPYLEFT Y LA GPL DE GNU
La meta de GNU era dar libertad a los usuarios, no sólo ser popular. Por lo tanto, debíamos usar términos de distribución que impidieran que el software de GNU se transformara en software privativo. El método que utilizamos se denomina .«copyleft».
El copyleft usa la ley del copyright, pero le da la vuelta para servir a lo opuesto de su propósito usual: en lugar de ser un medio para restringir un programa, se transforma en un medio para mantener al programa libre.
La idea central del copyleft es que le damos a cualquiera el permiso para ejecutar el programa, copiar el programa, modificar el programa y redistribuir versiones modificadas; pero no le damos permiso para agregar restricciones por su cuenta. De esta manera, las libertades cruciales que definen al «software libre» quedan garantizadas para cualquiera que tenga una copia; se transforman en derechos inalienables.
Para que el copyleft sea efectivo, las versiones modificadas también deben ser libres. Esto asegura que todo trabajo basado en el nuestro quedará disponible para nuestra comunidad si es publicado. Cuando los programadores que tienen trabajo como programadores se ofrecen como voluntarios para mejorar software de GNU, es el copyleft lo que impide que sus empleadores digan: «No puedes compartir esos cambios, porque los queremos usar para hacer nuestra versión privativa del programa».
La exigencia de que los cambios deben ser libres es esencial si queremos asegurar la libertad para cada usuario del programa. Las compañías que privatizaron el sistema de ventanas X, en general, realizaron algunos cambios para portarlo a sus sistemas y su hardware. Estos cambios fueron pequeños comparados con el gran tamaño de X, pero no fueron triviales. Si hacer cambios fuera una excusa para negar libertad a los usuarios, sería fácil para cualquiera tomar ventaja de la excusa.
Un tema relacionado trata la combinación de un programa libre con código que no es libre. Tal combinación inevitablemente no será libre; cualesquiera libertades que falten a la parte que no sea libre, le faltarán también al todo. Permitir tales combinaciones abriría un agujero lo suficientemente grande como para hundir un barco. Por consiguiente, una oblilgación crucial para el copyleft es tapar este hoyo: cualquier cosa agregada a o combinada con un programa bajo copyleft debe ser de tal forma que la versión combinada total sea también libre, y esté bajo copyleft.
La implementación específica de copyleft que usamos para la mayoría del software de GNU es la Licencia Pública General de GNU (GNU General Public License) o GPL de GNU para abreviar. Tenemos otras clases de copyleft que se usan en circunstancias específicas. 

LA FUNDACIÓN PARA EL SOFTWARE LIBRE
A medida que el interés en el uso de Emacs crecía, otras personas se involucraron en el proyecto GNU, y decidimos que era el momento de buscar fondos de nuevo. Por ello, en 1985 creamos la Free Software Foundation (FSF), una organización sin ánimo de lucro exenta de impuestos para el desarrollo del software libre. La FSF también acaparó el negocio de distribución en cinta de Emacs; más adelante lo extendió al agregar otros productos de software libre (tanto de GNU como no) a la cinta, y con la venta de manuales libres.
Los empleados de la Free Software Foundation han escrito y mantenido una cantidad de paquetes de software de GNU. Dos notables casos son la biblioteca C y la consola. La biblioteca C de GNU es lo que usa todo programa que corre en un sistema GNU/Linux para comunicarse con Linux. Fue programada por un miembro del personal de la Free Software Foundation, Roland McGrath. La consola que se usa en la mayoría de los sistemas GNU/Linux se llama BASHBASH, de Bourne Again SHell (1), que fue programada por el empleado de la FSF Brian Fox.

METAS TÉCNICAS
La meta principal de GNU es ser software libre. Aún en el caso que GNU no tuviese ventajas técnicas sobre Unix, tendría una ventaja social, permitir cooperar a los usuarios, y una ventaja ética, respetar la libertad de los usuarios.
Pero era natural aplicar los estándares conocidos de buenas prácticas al trabajo; por ejemplo, reservar dinámicamente las estructuras de datos para evitar límites de tamaño fijo arbitrarios, y manejar todos lo posibles códigos de 8 bits cuando tuviese sentido.
Además, rechazamos el enfoque de Unix para pequeños tamaños de memoria, al decidir que no soportaríamos máquinas de 16 bits (estaba claro que las máquinas de 32 bits serían la norma para cuando el sistema GNU estuviese terminado), y no hacer ningún esfuerzo para reducir el uso de memoria, a menos que excediera el megabyte. En los programas para los cuales no era crucial el manejo de ficheros muy grandes, incentivamos a los programadores a leer el fichero completo en memoria, y luego explorar su contenido, sin tener que preocuparse por la E/S.
Estas decisiones permitieron que muchos programas GNU sobrepasaran a sus contrapartidas Unix en confiabilidad y velocidad.

COMPUTADORAS DONADAS
A medida que la reputación del Proyecto GNU crecía, la gente comenzó a ofrecer al proyecto donaciones de máquinas con Unix instalado. Estas fueron muy útiles, porque la manera más fácil de desarrollar componentes de GNU era hacerlo en un sistema Unix, e ir reemplazando los componentes del sistema uno a uno. Pero estas trajeron una cuestión ética: si era correcto para nosotros siquiera tener una copia de Unix.
Unix era (y es) software privativo, y la filosofía del Proyecto GNU decía que no debemos usar software privativo. Pero, aplicando el mismo razonamiento que lleva a la conclusión que la violencia en defensa propia está justificada, concluí que era legítimo usar un paquete privativo cuando ello era crucial para desarrollar un reemplazo libre que ayudara a los demás a dejar de usar el paquete privativo.

LA LISTA DE TAREAS DE GNU
A medida que proseguía el Proyecto GNU, se desarrollaron o encontraron una cantidad creciente de componentes de sistema, y eventualmente se vio la utilidad de hacer una lista con los agujeros que faltaban cubrir. La usamos para reclutar programadores para escribir las piezas que faltaban. Esta lista comenzó a conocerse como la lista de tareas de GNU. Además de los componentes Unix faltantes, agregamos a la lista otros proyectos de software y documentación útiles que, según pensamos, debe tener un sistema verdaderamente completo.

LA GPL PARA BIBLIOTECAS DE GNU
Considere la Readline de GNU, una biblioteca desarrollada para proporcionar la edición en línea de comandos para BASH. Readline se publica bajo la GPL de GNU ordinaria, no bajo la LGPL. De esta manera probablemente se reduce la cantidad de uso de Readline, pero eso no significa una pérdida para nosotros. Mientras tanto, al menos una útil aplicación se ha transformado en software libre específicamente para poder usar Readline, y ésa es una ganancia real para la comunidad.
Los desarrolladores de software privativo tienen las ventajas que el dinero proporciona; los desarrolladores de software libre necesitan crear ventajas entre sí. Tengo la esperanza de que algún día tendremos una gran colección de bibliotecas cubiertas por la GPL que no tengan equivalente entre el software privativo, proporcionando módulos útiles que sirvan como bloques constructivos de software libre nuevo, y que sumen una mayor ventaja para el desarrollo futuro de software libre.

¿RASCARSE UNA PICADURA?
Eric Raymond dice que «Todo buen trabajo de software comienza con un programador rascándose una molestia personal». Puede que ocurra algunas veces, pero muchas de las piezas esenciales de software de GNU se programaron con el fin de tener un sistema operativo libre completo. Vinieron desde una visión y un plan, no desde el impulso.
Por ejemplo, desarrollamos la biblioteca C de GNU porque un sistema del estilo Unix necesita una biblioteca C, BASH porque un sistema del estilo Unix necesita una consola, y el tar de GNU porque un sistema del estilo Unix necesita un programa tar. Lo mismo se aplica a mis propios programas; el compilador C de GNU, Emacs de GNU, GDB y Make de GNU.
Algunos de los programas de GNU se programaron para tratar con amenazas específicas para nuestra libertad. Por ello, desarrollamos gzip para reemplazar al programa Compress, perdido para nuestra comunidad a causa de las patentes LZW. Proporcionamos fondos para programar LessTif, y más recientemente iniciamos GNOME y Harmony, para lidiar con los problemas causados por cierta biblioteca propietaria (vea más abajo). Estamos desarrollando el GNU Privacy Guard para reemplazar un software popular de cifrado que no es libre, porque los usuarios no deben verse obligados a elegir entre privacidad y libertad.
Por supuesto, la gente que escribía estos programas se interesó en el trabajo, y diversas personas han agregado muchas características para satisfacer sus propias necesidades e intereses. Pero ése no es el motivo por el cual existe el programa.

SITUACIONES INESPERADAS
Al comienzo del Proyecto GNU, imaginé que desarrollaríamos el sistema GNU completo, y luego lo entregaríamos como un todo. No es así como sucedió.
Como cada componente de un sistema GNU se implementó en un sistema Unix, cada componente podía correr en sistemas Unix, mucho antes de que existiera un sistema GNU completo. Algunos de esos programas se hicieron populares, y los usuarios comenzaron a extenderlos y portarlos, a las distintas versiones incompatibles de Unix, y algunas veces a otros sistemas también.
El proceso hizo que dichos programas sean más potentes, y atrajeran tanto fondos como contribuyentes al Proyecto GNU. Pero probablemente también demoró la conclusión de un sistema mínimo en funcionamiento por varios años, dado que el tiempo de los desarrolladores de GNU se usaba para mantener nesas migraciones y en agregar características a los componentes existentes, en lugar de continuar, uno tras otro, con la escritura de los componentes que faltaban

ALIX
El núcleo de GNU originalmente no iba a llamarse Hurd. Su nombre original era Alix, denominado a partir de la mujer que era mi amor en aquella época. Ella era administradora de un sistema Unix y había hecho notar que su nombre seguía el patrón de nomenclatura común a las versiones de sistema Unix; a modo de broma, le dijo a sus amigos «alguien debería darle mi nombre a un núcleo». Yo no dije nada, pero decidí sorprenderla con un núcleo llamado Alix.
No se mantuvo de esa manera. Michael Bushnell (ahora Thomas), el programador principal del núcleo, prefirió el nombre Hurd y redefinió Alix para referirse a cierta parte del núcleo; la parte que captura las llamadas del sistema y las maneja por medio del envío de mensajes a los servidores Hurd.
Después, Alix y yo nos separamos, y ella cambió su nombre; independientemente, el diseño de Hurd se modificó para que la biblioteca C enviara los mensajes directamente a los servidores, y esto hizo que el componente Alix desapareciera del diseño.
Pero antes que estas cosas sucedieran, un amigo de ella encontró el nombre Alix en el código fuente de Hurd, y se lo mencionó. Así que ella tuvo la oportunidad de encontrar que se puso el nombre al núcleo por ella.

LINUX Y GNU/LINUX
El Hurd de GNU no está listo para el uso en producción, y no sabemos si alguna vez lo estará. El diseño basado en la capacidad ha tenido problemas como consecuencia directa de la flexibilidad del diseño, y no existen soluciones claras.
Afortunadamente, hay disponible otro núcleo. En 1991, Linus Torvalds programó un núcleo compatible con Unix y lo denominó Linux. Cerca de 1992, al combinar Linux con el sistema, que no era tan completo, GNU, resultó en un sistema operativo libre completo (Por supuesto, la combinación en sí misma dio un considerable trabajo.). Es debido a Linux que podemos ejecutar un sistema GNU en la actualidad.
Denominamos a esta versión del sistema GNU/Linux, para expresar su composición como una combinación del sistema GNU con Linux como el núcleo.

DEBEMOS HABLAR ACERCA DE LA LIBERTAD
En la actualidad se estima que hay unos diez millones de usuarios de sistemas GNU/Linux, tales como el Debian GNU/Linux y Red Hat «Linux». El software libre ha desarrollado ciertas ventajas prácticas que hacen que los usuarios estén congregándose hacia allí por razones puramente prácticas.
Las buenas consecuencias de esto son evidentes: mayor interés en el desarrollo de software libre, más clientes para empresas de software libre, y mayor capacidad para animar a las compañías a que desarrollen software libre, en lugar de productos de software privativo.
Pero el interés en el software crece más rápido que la conciencia acerca de la filosofía sobre la cual está basado, y esto crea problemas. Nuestra capacidad de enfrentar los desafíos y amenazas que se describieron más arriba depende de la voluntad de mantenerse firmes por la libertad. Para asegurarnos de que nuestra comunidad tiene esta voluntad, necesitamos esparcir la idea entre los nuevos usuarios a medida que llegan a nuestra comunidad.
Pero estamos fracasando en eso: los esfuerzos para atraer nuevos usuarios a nuestra comunidad sobrepasan por lejos a los esfuerzos dedicados a la enseñanza cívica acerca de nuestra comunidad. Necesitamos hacer ambas cosas, y es necesario que mantengamos ambos esfuerzos balanceados.

«OPEN SOURCE» - «CÓDIGO ABIERTO»
La enseñanza acerca de la libertad a los nuevos usuarios se hizo más difícil en 1998, cuando una parte de la comunidad decidió dejar de usar el término «software libre» y usó «software de código abierto» («open source software» en inglés) en su lugar.
Algunos de los que favorecieron este término tenían como objetivo evitar la confusión de «free» con «gratis»; una meta válida. Otros, sin embargo, apuntaban a dejar de lado el espíritu de principio que había motivado el movimiento por el software libre y el Proyecto GNU, y en cambio resultar atractivos a los ejecutivos y usuarios comerciales, muchos de los cuales sostienen una ideología que pone las ganancias por encima de la libertad, la comunidad, y los principios.

Es un consuelo y un placer cuando veo un regimiento de hackers excavando para mantener la trinchera, y me doy cuenta que esta ciudad puede sobrevivir; por ahora. Pero los peligros son mayores cada año, y ahora Microsoft tiene a nuestra comunidad como un blanco explícito. No podemos dar por garantizado el futuro de la libertad. ¡No lo dé por garantizado!. Si desea mantener su libertad, debe estar preparado para defenderla.

No hay comentarios.:

Publicar un comentario