Historia y antecedentes del software libre

GNU

Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, Versión 1.1 o cualquier versión posterior publicada por la Fundación de Software Libre (FSF); sin Secciones Invariantes, con los Textos de Tapa listados debajo, y sin Textos de Contra-tapa.


Historia y antecedentes del software libre
(C) 2004, 2005, 2006 Martin Andres Gomez Gimenez

Taxonomy upgrade extras: 

Nota Legal

"Historia y antecedentes del software libre" ofrece una noción acerca de los hitos que marcaron la história del Software Libre.


(C) 2004, 2005, 2006 Martin Andres Gomez Gimenez

Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, Versión 1.1 o cualquier versión posterior publicada por la Fundación de Software Libre (FSF); sin Secciones Invariantes, con los Textos de Tapa listados debajo, y sin Textos de Contra-tapa.

Taxonomy upgrade extras: 

Multics

A principios de la década de 1960 el concepto de "tiempo compartido" era recibido con considerable atención entre los investigadores de la computación. Esta novedosa idea era un intento de dar un soporte interactivo, en computadoras de propositos generales, a través de una teletipo o una pantalla de vídeo. Las computadoras comerciales en ese entonces solamente podian correr un programa a la vez, los usuarios debían encolar sus trabajos y luego estaban obligados a esperar horas o días para recibir el resultado.

El concepto de un sistema operativo era completamente nuevo. Pero el término comenzaba a utilizarse en los productos comerciales, pero no de la manera en que lo conocemos hoy en día. Este término era aplicado a una colección de programas utilitarios compatibles diseñados para cargar una secuencia o lote de programas en memoria y automatizar alguna de las configuraciones hechas por los operadores humanos.

El CTSS (Compatible Timesharing System) o Sistema Compatible de Tiempo Compartido fué uno de los primeros sistemas operativos de tiempo compartido. Desarrollado en MIT Computation Center por un equipo liderado por Fernando J. Corbató, el CTSS tuvo su primera demostración en 1961 sobre una IBM 709, intercambiando cintas. Con muy pocas modificaciones, el CTSS corrió sobre una IBM 7064 modificada con un segundo banco de memorias de 64 Kb, usando dos IBM 2301 para intercambio y proveer acceso remoto hasta 30 usuarios a través de un controlador de comunicaciones IBM 7750 conectado a módems de discado.

J. C. R. Licklide del MIT propuso la creación del proyecto MAC (Multiple Access Computers) en noviembre de 1962. Este proyecto concentraba sus esfuerzos en el desarrollo de CTSS de Fernando J. Corbató y el Laboratório de Inteligencia Artificial de Marvin Minsky. En noviembre de 1963 el proyecto MAC, encaró un estudio sobre CTSS, que atrajo a muchos de los bien conocidos científicos relacionados con la computación a Cambridge para usar CTSS y discutir sobre el futuro de la computación.

Los fondos para el proyecto MAC eran provistos por la oficina de Técnicas de Procesamiento de Información de la Agencia de Proyectos Avanzados de Investigación (ARPA) del Departamento de Defensa de los Estados Unidos de América. El ARPA contribuiría con u$s 2 millones por año al proyecto MAC para el desarrollo de un nuevo y ambicioso sistema, sucesor de CTSS, denominado MULTICS (Multiplexed Information and Computing Service).

El profesor Jack Dennis del MIT contribuyó con algunas ideas sobre la arquitectura que influenciaron mucho en el comienzo del desarrollo de MULTICS, especialmente la idea de segmentación. Las especificaciones de MULTICS comenzaron a ser desarrolladas a mediados de 1963.

MULTICS sería un sistema modular diseñado para bancos de procesadores de alta velocidad, memoria y equipamiento de comunicaciones. Por diseño, las partes de una computadora podrían salir de servicio para mantenimiento sin afectar a las otras partes ni a los usuarios del sistema. La meta era proveer de servicios informáticos 24 horas por día, 365 días al año.

MULTICS sería desarrollado también con la seguridad militar en mente. Debería ser diseñado para ser resistente a los ataques externos y proteger a los usuarios del sistema. También debería soportar el concepto de niveles de seguridad: la información Ultra Secreta, Secreta, Confidencial y Desclasificada debería coexistir de manera segura en la misma computadora.

Cuando llegó el momento de elegir un fabricante que pueda soportar el nuevo sistema operativo, se pensó que debería ser IBM para implementarlo en su sistema 360/65, un modelo de la novedosa familia de computadoras del sistema /360. Pero ellos no estaban interesados en las ideas del proyecto MAC sobre paginación y segmentación. En cambio otras empresas como GE Schenectady y DEC se mostraron más entusiastas. La propuesta para implementar MULTICS en una GE-645 fué la elegida y GE Schenectady firmó contrato en agosto de 1964.

PL/I fué elegido como el lenguaje de programación en 1964. Mientras se aguardaba la disponibilidad de los compiladores PL/I, el equipo de desarrolladores escribío el Manual del Programador para el Sistema MULTICS. Este constaba de aproximadamente 3000 páginas, durante el transcurso del tiempo cada sección fué sometida a rigurosas revisiones y muchas de ellas fueron re-escritas, algunas más de una vez.

A principios de 1965 Bell Labs, una empresa del grupo AT&T, decidió adquirir una GE-645 y unirse a los esfuerzos para desarrollar software, y GE se sumó también ya que había acordado contribuir.

MULTICS recién estuvo disponible comercialmente en enero de 1973, cuando la Honeywell 6180 fué anunciada en el Museo de Ciencia de Boston. Los procesadores 6180 estaban cerca de 1 millón de instrucciones por segundo cada uno. Un sistema de dos CPU con 768KB de memoria, 8MB de volumen de almacenamiento, 1.6GB de disco, 8 unidades de cinta y dos DN355s, que podía comprarse por un precio de alrededor de u$s 7 millones.

Unix

Entre los años 1968-69 el desarrollo de MULTICS estaba muy retrasado y bajo una significante presión financiera al borde de la cancelación. MULTICS aún no estaba listo para ser usado y era evidente que quedaba mucho trabajo por hacer. Bell Labs estaba pagando una renta por su GE-645 y dedicaba una parte invaluable de su personal a los esfuerzos por desarrollar MULTICS. Pero ante la incertidumbre sobre cuanto tiempo demandaría llegar a una versión que pudiera ser usable, Bell Labs decidió abandonar el desarrollo de MULTICS.

En abril de 1969 Kem Thompson y Dennis Ritchie de Bell Labs comenzaron a trabajar en un sistema operativo menos ambicioso, que ofreciera un ambiente de trabajo cómodo y mucho más sencillo. MULTICS fue de gran influencia sobre el nuevo sistema operativo, ya que se emplearon sus conceptos en la organización básica del sistema de archivos, la idea de un interprete de comando (el shell) como un proceso de usuario, etc. Este derivado de MULTICS corria en una computadora DEC PDP-7, la cuál solo tenía 4096 bytes (4KB) de memoria para programas de usuario. Brian Kernighan lo llamó UNICS (Uniplexed Information & Computing Service) o Sistema de Información y Cómputo con Uniplexión.

UNICS estaba escrito en un lenguaje denominado BCPL (Basic Combined Programming Language), una herramienta para la escritura de compiladores y sistemas de programación. Pero conforme con la necesidad de economía extrema, Thompson re-escribió “una versión reducida de BCPL” que la denominó con el nombre abreviado de B.

A mediados de 1969 UNICS se convirtió en UNIX al ser portado a la moderna PDP-11 sobre la cuál se transformó en un verdadero sistema operativo. UNIX Version 1 fué distribuido el 3 noviembre de 1971, estaba escrito en el lenguaje B e incluía cerca de 60 comandos.

En 1972 Ritchie, diseñó un sucesor de B, al cual llamó C y escribió un compilador con el objeto de ofrecer un lenguaje que pudiera usarse para escribir una versión portable del sistema. La versión 2 de UNIX fué escrita en C y distribuida el 6 de diciembre de 1972. Así mismo también se le agregó una característica por demás de importante, la multiprogramación.

El concepto de tuberia, tomar la salida desde un comando para usarlo como entrada de otro, fué introducida en la versión 3 el 15 de enero de 1973. La primera utilidad para el uso de tuberias fué introducida en la versión 4 de UNIX en noviembre de 1973. El concepto de tuberia fué la primera caracteristica original de UNIX y gracias a que fué escrito en un leguaje de "alto nivel" en lugar de un leguaje ensamblador específico para una máquina, UNIX se hizo sumamente portable.

En octubre de 1973 Ritchie y Thompson presentaron el primer artículo sobre UNIX, que estimuló a muchas universidades a pedir a Bell Labs una copia de UNIX para fines educativos. AT&T, la compañía dueña de los Bell Labs que al ser en ese entonces un monopolio regulado no podía explotar comercialmente UNIX, otorgó licencias de uso y el código fuente de UNIX de manera abierta y libre a los entes del ambiente académico y científico solicitantes a cambio de pagar los gastos de medio magnético, manual y flete. A cambio solicitaba que reporten toda investigación y mejora que se desarrolle con el sistema.

En 1978 Bell Labs realizó UNIX Timesharing System (UTS), septima edición, que estaba especialmente diseñada para mayor portabilidad (ya había sido portado al sistema 360 de IBM en 1977). Ahora UNIX incluía muchas características que habían estado disponible unicamente para las mainframes.

BSD

Entre las universidades a la que llego UNIX, se encontraba la Universidad Californiana de Bekerley. Allí se modificó el sistema incorporando una variante notable: la utilización de memoria virtual paginada. Así fué como en 1978 surgió UNIX 3BSD (Berkeley Software Distribution).

En 1980 el ARPA subvenciona el desarrollo de 4BSD. Poco después surge 4.1BSD incorporando nuevas utilidades como el clásico editor vi y la shell csh. En 1982 SUN desarrolla para sus arquitecturas el sistema SunOS basado en la versión BSD. Un año después surge la versión 4.2BSD que incorpora DEC en VAX y adopta SUN Microsystems. 1984 marca un nuevo hito en la historia de UNIX ya que SUN desarrolla los conceptos de RPC (Remote Procedure Call) y NFS (Network File System) y los incorpora a SunOS.

El licenciamiento de UNIX

En 1907 Theodore Vail Presidente de AT&T formuló un principio fundamental que establecia que el teléfono, por la naturaleza de su tecnología, funcionaría más eficientemente como un monopolio que brindara un servicio universal.

El gobierno de los Estados Unidos aceptó este principio, inicialmente en un acuerdo de 1913 conocido como el Compromiso de Kingsbury. Con la condición de que AT&T conectara a compañías telefónicas independientes no competidoras a su red y se deshiciera de su interés en el control de Western Union Telegraph.

Las administraciones federales posteriores investigaron el monopolio telefónico conforme a la ley general anti-monopólio y alegaron abusos por parte de la empresa que llevaron a presentar una demanda anti-monopólio en 1949. En 1956 se firmó un decreto con consentimiento por AT&T y el Departamento de Justicia y archivado en la corte mediante el cual AT&T acordaba restringir sus actividades al negocio del servicio nacional telefónico regulado y el trabajo gubernamental.

Con el paso de los años el Sistema Bell de AT&T brindaba el que era el mejor sistema telefónico del mundo. El porcentaje de hogares estadounidenses con teléfono alcanzó el 90% en 1969. Gran parte de la dirección llegó por la aplicación de la ciencia y tecnología desarrollada en la subsidiaria AT&T Bell Telephone Laboratories. La transición de componentes electromecánicos a componentes electrónicos permitió nuevas, más poderosas, y eventualmente menos costosos equipos de redes y servicios al cliente.

Los cambios tecnológicos y la flexibilidad de la FCC (Federal Communications Commision) o Comisión Federal de Comunicaciones, la agencia reguladora que supervisa las telecomunicaciones en los Estados Unidos de América, permitieron gradualmente la entrada a nuevos competidores del Sistema Bell. Para mediados de la década de 1970 la competencia había avanzado hacia el servicio general de larga distancia.

Aquellos cambios en las telecomunicaciones condujeron a una nueva demanda anti-monopólio presentada en 1974 por el gobierno de los Estados Unidos de América contra AT&T.

Cuando Bell Labs realizo la septima edición de UNIX (UTS), AT&T comprendió que UNIX era un valioso producto comercial y debido a ello comenzó a cobrar por su distribución: u$s 100 a las universidades y u$s 21000 a terceros en concepto de licencia de uso.

En 1979 AT&T licenció UNIX a Microsoft, pero como no pudo licenciar el nombre de UNIX, fué licenciado con el nombre de XENIX. En ese entonces XENIX fué promovido por Microsoft como el sistema operativo para las microcomputadoras del futuro, primero para la legendaria IBM PC y luego para la XT, pero con resultados desastrosos.

La demanda anti-monopólio, que comenzó en 1974, concluyó en enero de 1982 cuando AT&T fué obligada a separarse de las compañías telefónicas pertenecientes al sistema Bell que proveían servicios locales. Pero a cambio, el gobierno estadounidense acordó levantar las restricciones del decreto de 1956

AT&T anunció ese mismo año el soporte oficial para UNIX y la primera realización comercial desarrollada fuera de Bell Labs por el UNIX System Group (USG): UNIX System III. La licencia de UNIX System III prohibía el estudio del código fuente con el objeto de evitar poner en peligro su condición como secreto comercial, con lo cuál muchas universidades protestaron simplemente descartando el estudio de UNIX y enseñando sólo teoría.

En 1983 Computer Research Group (CRG), UNIX System Group (USG) y un grupo de terceros constituyeron el UNIX System Development Lab. AT&T anunció UNIX System V.

El desmantelamiento de AT&T tuvo lugar el 1 de enero de 1984. El sistema Bell había muerto, pero ese vacio fué reemplazado por una nueva AT&T y siete compañías Bell regionales operativas (conjuntamente denominadas RBOCs, Regional Bell Operating Companies).

Para cuando llegó UNIX System V Release 2, ya existían 100,000 UNIX instalados en todo el mundo.

El proyecto GNU

El ITS (Incompatible Timesharing System) o Sistema Incompatible de Tiempo Compartido fué desarrollado hacia 1967 por investigadores del Laboratorio de Inteligencia Artificial del MIT que estaban en desacuerdo con el rumbo que había tomado MULTICS. El ITS fué diseñado y escrito en lenguaje ensamblador para una DEC PDP-10, una de las más grandes computadoras de aquella época.

Cuando en 1971 Richard Matheu Stallman comenzó su carrera en el MIT se incorporó en una comunidad que ya tenía varios años de existencia compartiendo el software. Cabe destacar que el acto de compartir software no estaba limitado solamente a esta comunidad en particular, estaba presente entre los desarrolladores e investigadores, ya que era tan antigüa como las computadoras mismas.

[Cuando alguien de otra universidad o compañía deseaba portar y usar un programa, lo permitíamos con gusto. Si usted veía a alguien usando un programa interesante y poco conocido, siempre se podía pedir el código fuente para verlo, de manera que uno podía leerlo, cambiarlo, o canibalizar ciertas partes del mismo para hacer un nuevo programa. ]El Proyecto GNU - Richard M. Stallman

El trabajo de Richard Stallman como miembro de esa comunidad, dentro del Laboratorio de Inteligencia Artificial, era mejorar el ITS. Pero durante los primeros años de la década de 1980 la situación cambió drásticamente cuando la empresa DEC discontinuó la serie PDP-10 con el propósito de concentrarse en sus nuevos productos de las líneas PDP-11 y VAX. Esto significó que prácticamente todos los programas que componían a ITS se volverian obsoletos en un corto plazo. Puesto que el ITS no era portable tendría que volver a escribirse desde cero, lo que significaba una tarea titánica.

Casi todo el software de las computadoras modernas de la época era propietario, en el cuál se debía firmar un "acuerdo de no revelación" aún para obtener una copia ejecutable.

En 1981, la compañía derivada Symbolics había contratado a casi todos los hackers del laboratorio de IA, y la despoblada comunidad ya no era capaz de mantenerse a sí misma. Cuando el laboratorio de IA adquiere una nueva PDP-10 en 1982, sus administradores deciden utilizar el sistema no libre de tiempo compartido de Digital en lugar de ITS.

Corria el año 1983 cuando Richard Stallman buscó la manera de salvar aquella comunidad, y llegó a la conclusión de que se necesitaba un sistema operativo con el cuál se podría tener de nuevo una comunidad de hackers cooperando e invitar a cualquiera a unírse.

Convencido por aquella solución Richard Stallman decidió que el nuevo sistema operativo tendría que ser compatible con Unix porque así sería portable, y los usuarios de Unix podrían cambiarse a él con facilidad. Siguiendo la tradición hacker eligió el nombre de GNU, como acrónimo recursivo para "GNU's Not Unix".

El desarrollo de un sistema operativo es un proyecto de gran envergadura que incluye procesadores de órdenes, ensambladores, compiladores, intérpretes, depuradores, editores de texto, programas de correo, y muchos otras aplicaciones. Con el objeto de ponerlo a su alcance Richard Stallman decidió adaptar y usar las piezas existentes de software libre siempre que fuera posible. A causa de esta decisión, el sistema GNU no estaría compuesto exclusivamente por software GNU. El sistema GNU incluiría programas que no son GNU, programas creados por otras personas y proyectos para sus propios propósitos, pero que en sí constituyen software libre.

En enero de 1984, para que el MIT no interfiriera con la distribución de GNU como software libre, Richard Stallman renunció a su trabajo y comenzó a escribir el software GNU. De continuar como parte del staff del Laboratorio de Inteligencia Artificial, el MIT podría reclamar la propiedad sobre el trabajo, y podría imponer sus propios términos de distribución, o incluso transformarlo en un paquete de software propietario. Pero pesar de haber renunciado, el Profesor Winston, por entonces a cargo del Laboratorio de Inteligencia Artificial del MIT, lo invitó amablemente a que continúe utilizando las instalaciones del Laboratorio.

Minix

En el ámbito academico las restricciones impuestas por AT&T sobre el código de fuente del sistema operativo UNIX dejaban los estudiantes con una visión desproporcionada de lo que en realidad es un sistema operativo. UNIX solo era enseñado en teoría y muchos temas de importancia en la práctica debían ser dejados de lado ya que existía muy poca teoría acerca de ellos.

Ante esta situación y convencido de que aquellas restricciones eran pejudiciales para sus alumnos, el profesor Andrew Tenembaum, de la Universidad de Vrije en Amsterdam, decidió escribir un nuevo sistema operativo desde cero que sería compatible con UNIX desde el punto de vista del usuario. Este nuevo sistema no compartiría una sola línea de código con el UNIX de AT&T y con lo cual podría utilizarse para dar una clase o para el estudio individual. De esta forma, los estudiantes tendrían la posibilidad de analizar minuciosamente un sistema operativo real. El nombre MINIX surgió de mini-Unix porque era lo suficientemente pequeño, para que alguien que no fuera un maestro en sistemas operativos pudiese entender la forma en que trabajaba.

MINIX se diseño para ser compatible con la versión 7 de UNIX (UNIX Timesharing System V7) y al igual que UNIX se escribió en el lenguaje C. Pero MINIX tenia ventajas sobre UNIX, ya que se escribió mucho después de este último y con lo cual se estructuro en forma más modular. El sistema de archivos de MINIX, por ejemplo, no era parte del sistema operativo en absoluto, y corría como un programa de usuario. Además MINIX se diseñó para ser legible (en vista de que se puede hablar de que cualquier programa de 12649 líneas es legible). El código de MINIX original, por ejemplo, incluía más de 3000 comentarios en él.

Los mínimos requerimientos de MINIX para la arquitectura ix86 y el hecho de estar disponible para cualquier estudiante, pronto hicieron que adquiriera fama y prestigio. Además se creo una legión de seguidores, incluyendo sus propios grupos de noticias de USENET.