El comienzo: BSD, GNU en Software libre

De wiki EOI de documentación docente
Saltar a: navegación, buscar


Estado de desarrollo de la sección: completo completo

Wikilibro: Software libre > Capítulo 2: Un poco de historia

Sección 2

El comienzo: BSD, GNU
Todos los casos descritos en el apartado anterior fueron iniciativas individuales o no cumplían estrictamente los requisitos del software libre. Hasta principios de la década de 1980 no aparecieron, de forma organizada y consciente, los primeros proyectos para la creación de sistemas compuestos de software libre. En esa época se empezaron también a fijar (lo que probablemente es más importante) los fundamentos éticos, legales y hasta económicos, que se han ido desarrollando y completando hasta hoy día. Y como el nuevo fenómeno necesitaba un nombre, durante esos años se acuñó también el propio término software libre.

Richard Stallman, GNU, FSF: nace el movimiento del software libre

A principios de 1984, Richard Stallman, en aquella época empleado en el AI Lab del MIT., abandonó su trabajo para comenzar el proyecto GNU. Stallman se consideraba un hacker de los que gozaban compartiendo sus inquietudes tecnológicas y su código. Veía con desagrado cómo su negativa a firmar acuerdos de exclusividad y no compartición le estaban convirtiendo en un extraño en su propio mundo, y cómo el uso de software privativo en su entorno le dejaba impotente antes situaciones que antes podía solventar fácilmente.

Su idea al abandonar el MIT. era construir un sistema software completo, de propósito general, pero completamente libre stallman:gnu-project:99. El sistema (y el proyecto que se encargaría de hacerlo realidad) se llamó GNU (acrónimo recursivo, GNU's Not Unix). Aunque desde el principio el proyecto GNU incluyó en su sistema software ya disponible (como TeX o, más adelante, el sistema X Window), había mucho que construir. Richard Stallman comenzó por escribir un compilador de C (GCC) y un editor (Emacs), ambos aún en uso (y muy populares).

Desde el principio del proyecto GNU, Richard Stallman estaba preocupado por las libertades que tendrían los usuarios de su software. Estaba interesado en que no sólo los que recibieran los programas directamente del proyecto GNU, sino cualquiera que lo recibiera después de cualquier número de redistribuciones y (quizás) modificaciones, siguiera pudiendo disfrutar de los mismos derechos (modificación, redistribución, etc.). Para ello escribió la licencia GPL, probablemente la primera licencia de software diseñada específicamente para garantizar que un programa fuera libre en este sentido. Al mecanismo genérico que utilizan las licencias tipo GPL para conseguir estas garantías, Richard Stallman lo llamó copyleft, que sigue siendo el nombre de una gran familia de licencias de software libre foundation91:_gnu_gener_public_licen.

Richard Stallman también fundó la Free Software Foundation (FSF) para conseguir fondos que dedica al desarrollo y la protección del software libre, y sentó sus fundamentos éticos como The GNU Manifesto stallman:gnu-manifesto:85. y Why Software Should Not Have Owners stallman:why-software-not-owners:98.

Desde el punto de vista técnico, el proyecto GNU fue concebido como un trabajo muy estructurado y con metas muy claras. El método habitual estaba basado en grupos relativamente pequeños de personas (habitualmente voluntarios) que desarrollaban alguna de las herramientas que luego encajarían perfectamente en el rompecabezas completo (el sistema GNU). La modularidad de Unix, en el que se inspiraba el desarrollo, encajaba perfectamente en esta idea. El método de trabajo generalmente implicaba el uso de Internet, pero ante la escasa implantación en aquellos días, la Free Software Foundation también vendía cintas en las que grababa las aplicaciones, siendo probablemente una de las primeras organizaciones en beneficiarse económicamente (aunque de manera bastante limitada) de la creación de software libre.

A principios de la década de 1990, unos seis años después de su nacimiento, el proyecto GNU estaba muy cerca de tener un sistema completo similar a Unix. Aún así, hasta ese momento aún no había producido una de las piezas fundamentales: el núcleo del sistema (también llamado kernel, la parte del sistema operativo que se relaciona con el hardware, lo abstrae, y permite que las aplicaciones compartan recursos y, en el fondo, funcionen). Sin embargo, el software de GNU era muy popular entre los usuarios de las distintas variantes de Unix, por aquella época el sistema operativo más usado en las empresas. Además, el proyecto GNU había conseguido ser relativamente conocido entre los profesionales informáticos, y muy especialmente entre los que trabajaban en universidades. En esa época, sus productos ya gozaban de una merecida reputación de estabilidad y calidad.

El CSRG de Berkeley

El CSRG (Computer Science Research Group) de la Universidad de California en Berkeley fue, desde 1973, uno de los centros donde más desarrollo relacionado con Unix se hizo durante los años 1979 y 1980. No sólo se portaron aplicaciones y se construyeron otras nuevas para su funcionamiento sobre Unix, sino que se hicieron importantes mejoras al núcleo y se le añadió mucha funcionalidad. Por ejemplo, durante la década de los años 1980, varios contratos de DARPA (dependiente del Ministerio de Defensa de EE.UU.) financiaron la implementación de TCP/IP que ha sido considerada hasta nuestros días como la referencia de los protocolos que hacen funcionar a Internet (vinculando, de paso, el desarrollo de Internet y la expansión de las estaciones de trabajo con Unix). Muchas empresas utilizaron como base de sus versiones de Unix los desarrollos del CSRG, dando lugar a sistemas muy conocidos en la época, como SunOS (Sun Microsystems) o Ultrix (Digital Equipment). De esta manera, Berkeley se convirtió en una de las dos fuentes fundamentales de Unix, junto con la oficial, AT&T.

Para poder utilizar todo el código que producía el CSRG (y el de los colaboradores de la comunidad Unix que ellos de alguna manera coordinaban), hacía falta la licencia de Unix de AT&T, que cada vez era más difícil (y más cara) de conseguir, sobre todo si se quería el acceso al código fuente del sistema. Tratando de evitar en parte este problema, en junio de 1989 el CSRG liberó la parte de Unix relacionada con TCP/IP (la implementación de los protocolos en el núcleo y las utilidades), que no incluía código de AT&T. Fue la llamada Networking Release 1 (Net-1). La licencia con que se liberó fue la famosa licencia BSD que, salvo ciertos problemas con sus cláusulas sobre obligaciones de anuncio, ha sido considerada siempre como un ejemplo de licencia libre minimalista (que además de permitir la redistribución libre, también permitía su incorporación a productos privativos). Además, el CSRG probó un novedoso método de financiación (que ya estaba probando con éxito la FSF): vendía cintas con su distribución por 1.000 dólares. Aunque cualquiera podía a su vez redistribuir el contenido de las cintas sin ningún problema (la licencia lo permitía), el CSRG vendió cintas a miles de organizaciones, con lo que consiguió fondos para seguir desarrollando.

Viendo el éxito de la distribución de Net-1, Keith Bostic propuso reescribir todo el código que aún quedaba del Unix original de AT&T. A pesar el escepticismo de algunos miembros del CSRG, realizó un anuncio público pidiendo ayuda para realizar esta tarea, y poco a poco las utilidades (reescritas a partir de especificaciones) comenzaron a llegar a Berkeley. Mientras tanto, el mismo proceso se realizó con el núcleo, reescribiéndose de forma independiente la mayor parte del código que no se había realizado por Berkeley o por colaboradores voluntarios. En junio de 1991, después de conseguir el permiso de la Administración de la Universidad de Berkeley, se distribuyó la Networking Release 2 (Net-2), con casi todo el código del núcleo y todas las utilidades de un sistema Unix completo. De nuevo se distribuyó el conjunto bajo la licencia BSD, vendiéndose miles de cintas al precio de 1.000 dólares la unidad.

Sólo seis meses después de la liberación de Net-2, Bill Jolitz escribió el código que faltaba en el núcleo para que funcionase sobre arquitectura i386, liberando 386BSD, que fue distribuida por Internet. A partir de este código surgieron más tarde, en sucesión, todos los sistemas de la familia *BSD. Primero apareció NetBSD, como una recopilación de los parches que se habían ido aportando en la Red para mejorar 386BSD. Más adelante apareció FreeBSD como un intento en soportar fundamentalmente la arquitectura i386. Varios años más tarde se formó el proyecto OpenBSD, con énfasis en la seguridad. Y también hubo una distribución propietaria basada en Net-2 (aunque era ciertamente original, ya que ofrecía a sus clientes todo el código fuente como parte de la distribución básica), realizada de forma independiente por la desaparecida empresa BSDI (Berkeley Software Design Inc).

En parte como reacción a la distribución hecha por BSDI, Unix System Laboratories (USL), subsidiaria de AT&T que tenía los derechos de la licencia de Unix, puso una demanda judicial, primero a BSDI y luego a la Universidad de California. En ella les acusaba de distribuir su propiedad intelectual sin permiso. Después de varias maniobras judiciales (incluyendo una contra-demanda de la Universidad de California contra USL), Novell compró los derechos de Unix a USL y en enero de 1994 llegó a un acuerdo extrajudicial con la Universidad de California. Como resultado de este acuerdo, el CSRG distribuyó la versión 4.4BSD-Lite, que fue pronto utilizado por todos los proyectos de la familia *BSD. Poco después (tras liberar aún la versión 4.4BSD-Lite Release 2), el CSRG desapareció. En ese momento hubo quien temió que era el fin de los sistemas *BSD, pero el tiempo ha demostrado que siguen vivos y coleando, con una nueva forma de gestión más típica de proyectos libres. Aún en la década de 2000 los proyectos que gestionan la familia *BSD son de los más antiguos y consolidados en el mundo del software libre.

Sugerencia: La historia de Unix BSD es muy ilustrativa de una forma peculiar de desarrollar software durante los años 1970 y 1980. Quien esté interesado en ella puede disfrutar de la lectura de mckusick:_twent_years_berkel_unix. En él se puede seguir su evolución desde la cinta que llevó Bob Fabry a Berkeley con la idea de hacer funcionar en un PDP-11 una de las primeras versiones del código de Thompson y Ritchie (comprada conjuntamente por los departamentos de informática, estadística y matemáticas) hasta las demandas judiciales de AT&T, y las últimas liberaciones de código que dieron lugar a la familia de sistemas operativos libres *BSD.

Los comienzos de Internet

Casi desde su nacimiento, a principios de la década de 1970, Internet tuvo mucha relación con el software libre. Por un lado, desde sus comienzos, la comunidad de desarrolladores que la construyeron tuvieron claros varios principios que luego se harían clásicos en el mundo del software libre. Por ejemplo, la importancia de que los usuarios puedan ayudar a depurar errores, o la compartición de código. La importancia de BSD Unix en su desarrollo (al proporcionar durante los años 1980 la implementación más popular de los protocolos TCP/IP) hizo que muchas costumbres y formas de funcionamiento pasasen fácilmente de una comunidad (la de desarrolladores alrededor del CSRG) a otra (los que estaban construyendo lo que entonces era NSFNet y luego sería Internet), y viceversa. Muchas de las aplicaciones básicas en el desarrollo de Internet, como Sendmail (servidor de correo) o BIND (implementación del servicio de nombres) fueron libres, y en gran medida fruto de esta colaboración entre comunidades.

Por último, la comunidad del software libre, durante el final de los años 1980 y la década de 1990, fue una de las primeras en explorar hasta el fondo las nuevas posibilidades que permitía Internet para la colaboración entre grupos geográficamente dispersos. Esta exploración fue la que hizo posible, en gran medida, la propia existencia de la comunidad BSD, la FSF o el desarrollo de GNU/Linux.

Uno de los aspectos más interesantes del desarrollo de Internet, desde el punto de vista del software libre, fue la gestión completamente abierta de sus documentos y sus normas. Aunque hoy pueda parecer algo normal (pues es lo habitual, por ejemplo, en el IETF o el WWW Consortium), en su época la libre disposición de todas las especificaciones y documentos de diseño, incluyendo las normas que definen los protocolos, fue algo revolucionario y fundamental para su desarrollo. Podemos leer en hauben-hauben:notha:97 (página 106):

Este proceso abierto promovía y llevaba al intercambio de información. El desarrollo técnico tiene éxito sólo cuando se permite que la información fluya libre y fácilmente entre las partes interesadas. La promoción de la participación es el principio fundamental que hizo posible el desarrollo de la Red.

Observe el lector cómo este párrafo podría ser suscrito, casi con toda seguridad, por cualquier desarrollador refiriéndose al proyecto de software libre en el que colabora.

En otra cita, roberts:teops:78 (página 267) podemos leer:

Como ARPANET era un proyecto público que conectaba a muchas de las principales universidades e instituciones de investigación, los detalles de implementación y rendimiento se publicaban ampliamente.

Obviamente, esto es lo que suele ocurrir en los proyectos de software libre, donde toda la información relacionada con el proyecto (y no sólo la implementación) suele ser pública.

En este ambiente y hasta que Internet, ya bien entrados los años 1990, se convirtiese sobre todo en un negocio, la comunidad de usuarios y su relación con los desarrolladores era clave. En esa época muchas organizaciones aprendieron a confiar no en una única empresa proveedora del servicio de comunicación de datos, sino en una compleja combinación de empresas de servicios, fabricantes de equipos, desarrolladores profesionales y voluntarios, etc. Las mejores implementaciones de muchos programas no eran las que venían con el sistema operativo que se compraba con el hardware, sino implementaciones libres que rápidamente las sustituían. Los desarrollos más innovadores eran fruto no de grandes planes de investigación en empresas, sino de estudiantes o profesionales probando ideas y recogiendo la realimentación que les enviaban cientos de usuarios que usaban sus programas libres.

Como ya se ha dicho, Internet proporcionó al software libre también las herramientas básicas para colaborar a distancia. El correo electrónico, los grupos de News, los servicios de FTP anónimo (que fueron los primeros almacenes masivos de software libre) y más tarde los sistemas de desarrollo integrados basados en web han sido fundamentales (e imprescindibles) para el desarrollo de la comunidad del software libre tal y como la conocemos y, en particular, para el funcionamiento de la inmensa mayoría de los proyectos de software libre. Desde el principio, proyectos como GNU o BSD hicieron un uso masivo e intenso de todos estos mecanismos, desarrollando, a la vez que las usaban, nuevas herramientas y sistemas que a su vez mejoraban Internet.

Sugerencia: El lector interesado en una historia de la evolución de Internet, escrita por varios de sus protagonistas, puede consultar barry97:_brief_histor_inter.

Otros proyectos

Durante la década de 1980 vieron la luz otros importantes proyectos libres. Entre ellos destaca, por su importancia y proyección futura, el sistema X Window (sistema de ventanas para sistemas tipo Unix), desarrollado en el MIT, que fue uno de los primeros ejemplos de financiación en gran escala de proyectos libres con recursos de un consorcio de empresas. También merece la pena mencionar Ghostscript, un sistema de gestión de documentos Postscript desarrollado por una empresa, Aladdin Software, que fue uno de los primeros casos de búsqueda de un modelo de negocio basado en la producción de software libre.

A finales de los años 1980 hay ya en marcha toda una constelación de pequeños (y no tan pequeños) proyectos libres. Todos ellos, junto con los grandes proyectos mencionados hasta aquí, estaban sentando las bases de los primeros sistemas libres completos que aparecieron a principios de la década de 1990.

< Sección anterior
El software libre antes del software libre

Sección siguiente >
Todo en marcha