sábado, 27 de diciembre de 2008

Historia de Unix (parte 1)

Historia de Unix

Linux es, hoy en día, uno de los sistemas operativos para computadoras personales, estaciones de trabajo y otras computadoras, de mayor confiabilidad en el mercado. Puede parecer para muchos, conociendo el origen humilde de este sistema, impresionante como es que a partir de esfuerzos aislados geográficamente de miles de personas en apariencia poco coordinadas, que un sistema así pueda llegar al nivel de calidad que el que Linux y sus aplicaciones tienen hoy en día. Sin embargo, como es común en estas situaciones, es mi opinión que todos somos producto de nuestra historia, y Linux no es la excepción. Tanto la esencia del sistema, basada en el clásico Unix que ha perdurado por décadas, como el método de desarrollo que Linux llevó al éxito son, entre otras cosas, la consecuencia obvia de la historia que llevó a los personajes de la historia de Unix a involucrarse en la historia misma de Linux.

"The Art of UNIX Programming" (TAOUP, 'El arte de programar en UNIX') es un libro publicado por Addison y Wesley en el año 2004, escrito por Eric S. Raymond (sitio de internet: http://www.catb.org/esr), un hacker considerado por muchos como el antropólogo e historiador del movimiento hoy conocido como 'Open Source'. Raymond es autor también de importantísimos ensayos en este aspecto: 'La Catedral y el Bazar' (1997), llevó en el año 1998 a la compañía Netscape a liberar el código de su navegador de internet Mozilla (el ancestro del tan de moda hoy en día Firefox), y con ello vino el éxito comercial y financiero que también ha acompañado al 'código abierto' y al 'software libre' tal como los conocemos hoy (véanse los casos de Linux, GNU, Apache, X, Perl, Python, y un largo etcétera).

Por un lado, la filosofía de programación de Unix, que convoca a métodos sencillos, modulares y reutilizables, entre otras características. Por el otro, la metodología de desarrollo 'abierta', o de 'bazar', característica de proyectos como la Wikipedia (http://wikipedia.org), en donde la 'revisión por pares' se convierte en la esencia del funcionamiento y la calidad de estos proyectos. Y además, la actitud hacker, la de superarse siempre, la de no conformarse con las cosas mal hechas sino mejorarlas, la de, por lo tanto, buscar siempre utilizar y reutilizar sobre plataformas que garanticen esa calidad. Todos estos aspectos, y otros más, se retratan de manera muy concreta en el capítulo 2 del libro TAOUP.

Esta serie de posts son mi traducción personal a este capítulo. Pueden ser vistos en mi blog en Blogger (http://jstitch.blogspot.com/), así como en el de Wordpress (http://jstitch.wordpress.com/). Debo mencionar, que el libro 'The Art of UNIX Programming' está sujeto a los términos de la licencia Creative Commons Attribution-NoDerivs 1.0 (que puede ser leída en http://creativecommons.org/licenses/by-nd/1.0/legalcode), con la estipulación extra de que el derecho a publicar en papel para fines de lucro, se reserva para Pearson Education, Inc. En pláticas vía email con Mark Taub, encargado de los derechos de traducción de Addison-Wesley, obtuve el derecho para traducir el capítulo 2 del libro TAOUP, y de publicarlo únicamente en las direcciones de internet pertenecientes a mis dos blogs antes citados. Mi intención al traducir y publicar en web la traducción del capítulo 2 de TAOUP es difundir también en el habla hispana parte de la sabiduría contenida en este libro, y qué mejor que el capítulo 2, que habla de la historia y los orígenes de Unix para entender mejor el por qué y el cómo es que se ha llegado hasta donde hoy en día (2008) se ha llegado en Linux, el código abierto, el software libre y demás conceptos relacionados. Por ello, hago aviso de estas estipulaciones de licencia, y no me hago responsable por el uso que se haga de la información de los posts relativos a mi traducción, aunque espero que el propósito inicial de servir como medio de difusión se mantenga siempre puro. Nótese, claro está, que estas advertencias mías no están ni deben interpretarse como que están por encima de lo estipulado en la licencia Creative Commons-NoDerivs 1.0, ni en el derecho de Pearson Education, Inc. a publicarlo en papel para fines de lucro, ni en el permiso que Mark Taub tan amablemente me concedió de publicar por medio electrónico la traducción del capítulo 2 de TAOUP únicamente en mis dos blogs que ya mencioné. Con respecto a las imágenes utilizadas a lo largo de la traducción, fueron sacadas del sitio en línea del libro (http://www.catb.org/esr/writings/taoup/), y los créditos y restricciones de las mismas son idénticos a los del sitio antes mencionado.

Por último, he de decir que, aunque la traducción que propongo pretende ser lo más fiel posible al texto original (véase http://www.catb.org/esr/writings/taoup/translation.html para las notas del autor con respecto a lo que el autor mismo requeriría para una buena traducción), siempre he intentado reflejar en lo que hago el proceso mental que me llevó a ello (podrían preguntar a mis colegas por mi afición para comentar y documentar el código que yo escribo ;-). Es por ello que dentro de la traducción incluyo notas propias, referenciadas dentro del texto principal como pies de sección a través de la marca [NT#], donde '#' es un número consecutivo a partir de 1. Mi intención de estas notas es únicamente reflejar el reto que para mí ha implicado la traducción lo más fiel posible del texto, incluyendo sobre todo el sentido de las frases encontradas en la versión original en inglés, más que la traducción literal del texto, que por demás está decirlo, muchas veces produce traducciones de muy pobre calidad. Esta es mi primer traducción 'formal' de un texto, con eso de que se incluye la licencia y todo eso, y por ello la emoción me ganó para incluir dichas notas. Con respecto a las notas a pie de sección, decidí mantener la numeración original del texto, a pesar de que estos posts sólo incluirán el capítulo 2 del libro, por lo que no debe de extrañar que la numeración no comience con '1'.

Ahora sí, dicho todo esto, comencemos pues...

Atte.
Javier Novoa Cataño (jstitch)






Capítulo 2. Historia
Un recuento de dos culturas

Tabla de Contenido
Orígenes e Historia de Unix, 1969 - 1995
Génesis: 1969 - 1971
Éxodo: 1971 - 1980
TCP/IP y las Guerras Unix [NT1]: 1980 - 1990
Nosotros Venceremos [NT2]: 1991 - 1995

Orígenes e Historia de los Hackers, 1961 - 1995
Jugando en el recinto universitario [NT3]: 1961 - 1980
Fusión con Internet y el Movimiento del Software Libre: 1981 - 1991
Linux y la Reacción Pragmática: 1991 - 1998

El movimiento Open-Source (Código Abierto): 1998 y siguientes

Lecciones de la historia de Unix



Aquellos que no pueden recordar el pasado están condenados a repetirlo
-- Jorge Santayana [NT4] - The Life of Reason (1905)

El pasado informa de la práctica. Unix tiene una larga y colorida historia, mucha de la cual aún está viva como folclore, presuposiciones y (muy seguido) cicatrices de guerra en la memoria colectiva de los programadores Unix. En este capítulo, examinaremos la historia de Unix, desde un punto de vista para explicar el porque, en 2003, la cultura Unix se ve de la forma que es.


Orígenes e Historia de Unix, 1969 - 1995

Un notorio 'efecto del segundo sistema' aflige seguido a los sucesores de pequeños prototipos experimentales. La urgencia de incluir todo lo que no se incluyó la primera vez frecuentemente lleva a un diseño gigante y sobre complicado. Menos conocido aún, por lo menos común, es el 'efecto del tercer sistema'; algunas veces, luego de que el segundo sistema se colapsa por su propio peso, hay posibilidades de regresar a la simplicidad y hacerlo todo bien esta vez.

El Unix original era un tercer sistema. Su abuelo era el pequeño y sencillo Sistema de Tiempo Compartido Compatible (CTSS, Compatible Time-Sharing System), el primer o segundo sistema de tiempo compartido de la historia (dependiendo algunas cuestiones de definición que determinadamente ignoraremos). Su padre fue el proyecto pionero Multics, un intento de crear una 'utilidad de información' llena de características que graciosamente soportaría tiempo compartido interactivo de computadoras centrales (mainframes) por parte de grandes comunidades de usuarios. Multics, desafortunadamente, de hecho se colapsó bajo su propio peso. Pero Unix nació de ese colapso.


Génesis: 1969 - 1971

Unix nació en 1969 de la mente de un científico de la computación de los Laboratorios Bell (Bell Labs), Ken Thompson. Thompson fue un investigador en el proyecto Multics, una experiencia que lo desilusionó del primitivo cómputo por lotes que era común prácticamente en todos lados. Pero el concepto de tiempo compartido aún era nuevo a finales de los 60's; las primeras especulaciones apenas fueron formuladas diez años antes por el científico de la computación John McCarthy (el inventor del lenguaje Lisp), la primer implantación de un sistema así fue hecha en 1962, siete años antes, y los sistemas operativos de tiempo compartido aún eran bestias experimentales y temperamentales.

El hardware de las computadoras era en ese tiempo más primitivo de lo que incluso lo que la gente que lo llegó a ver puede recordar fácilmente. Las máquinas más potentes de la época tenían menos potencia computacional y memoria interna que un típico teléfono móvil celular de hoy en día. [13] Las terminales de vídeo estaban en su infancia y no serían ampliamente implementadas hasta luego de otros seis años. El dispositivo de interacción estándar de los primeros sistemas de tiempo compartido era el teletipo ASR-33 - un dispositivo lento y ruidoso que imprimía solamente letras mayúsculas en grandes rollos de hojas amarillas. El ASR-33 fue el padre natural de la tradición en Unix de los comandos escasos y las respuestas concisas.

Cuando Laboratorios Bell se alejaron del consorcio de investigación de Multics, Ken Thompson se quedó con algunas ideas inspiradas en Multics sobre cómo construir un sistema de archivos. Así mismo se quedó sin una máquina en la cual jugar un juego que él había escrito, llamado Space Travel, una simulación de ciencia ficción que involucraba navegar con un cohete a través del sistema solar. Unix comenzó su vida en una minicomputadora PDP-7 limpiada [14], como la mostrada en la figura 2.1, como plataforma para el juego Space Travel y como zona de pruebas para las ideas de Thompson sobre diseño de sistemas operativos.

[Figura 2.1 la PDP-7]

La historia completa del origen se cuenta en [Ritchie79] desde el punto de vista del primer colaborador de Thompson, Dennis Ritchie, el hombre que sería conocido como el co-inventor de Unix y el inventor del lenguaje de programación C. Dennis Ritchie, Doug McIlroy, y unos pocos colegas se habían acostumbrado al cómputo interactivo bajo Multics y no querían perder esa posibilidad. El sistema operativo de Thompson en la PDP-7 les ofrecía una línea de vida [NT5].

Ritchie anota: "Lo que queríamos conservar no era sólo un buen ambiente en el cual programar, sino un sistema alrededor del cual una comunidad se pudiera formar. Sabíamos por experiencia que la esencia del cómputo comunal, tal como lo proveían las máquinas de acceso remoto y tiempo compartido, no estaba solamente en escribir programas en una terminal en vez de una tarjeta perforada, sino en reforzar la comunicación cercana". El tema de las computadoras vistas no solamente como dispositivos lógicos sino como núcleos de comunidades estaba en el aire; 1969 fue también el año en que ARPANET (el ancestro directo del Internet de hoy en día) fue inventada. El tema de "comunidad" resonaría por la historia de Unix de ahí en adelante.

La implementación de Space Travel por Thompson y Ritchie atrajo atención. Al inicio, el software de la PDP-7 tenía que ser pasado por un compilador cruzado en una mainframe GE. Los programas utilitarios que Thompson y Ritchie escribieron para soportar el desarrollo de juegos en la PDP-7 se convirtió en el núcleo de Unix - aunque el nombre no llegó sino hasta 1970. Originalmente, el nombre se deletreaba "UNICS" (UNiplexed Information and Computing Service, Servicio de Información y Cómputo UNiplexado), que posteriormente Ritchie describió como una "especie de broma truculenta sobre Multics", que significaba MULTiplexed Information and Computing Service (Servicio de Información y Cómputo MULTiplexado).

Incluso en sus etapas tempranas, el Unix de la PDP-7 tenía una fuerte semejanza a los Unixes de hoy en día, y proveía un ambiente de programación ligeramente más placentero que el que estaba disponible en cualquier otro lado en esos días de mainframes de proceso por lotes alimentadas por tarjetas perforadas. Unix estaba muy cerca de ser el primer sistema bajo el cual un programador podía sentarse directamente en la máquina y hacer programas al aire, explorando posibilidades y probando mientras componía. A lo largo de toda su vida, Unix se ha caracterizado por poseer un patrón que acrecienta las posibilidades atrayendo los esfuerzos de voluntarios hábiles a partir de programadores impacientes con las limitaciones de otros sistemas operativos. Este patrón se estableció temprano, inclusive dentro de los mismos Laboratorios Bell.

La tradición Unix de desarrollo ligero y métodos informales también comenzó desde sus inicios. En donde Multics fue un proyecto largo con miles de páginas con especificaciones técnicas escritas antes que se tuviera el hardware, el primer código de Unix fue inspirado por tres personas e implementado por Ken Thompson en dos días - en una máquina obsoleta que fue diseñada como terminal gráfica para una computadora 'real'.

El primer trabajo real de Unix, en 1971, fue soportar lo que hoy en día sería llamado procesamiento de palabras para el departamento de patentes de los Laboratorios Bell; la primera aplicación Unix fue el ancestro del formateador de textos nroff(1). Este proyecto permitió la justificación para la compra de una PDP-11, una minicomputadora mucho más capaz. La Administración se mantuvo dichosamente inadvertida del hecho de que el sistema de procesamiento de palabras que Thompson y colegas estaban construyendo estaba incubando un sistema operativo. Los sistemas operativos no estaban en los planes de los Laboratorios Bell - AT&T se unió al consorcio Multics precisamente para evitar desarrollar un sistema operativo por sí mismos. Aún así, el sistema terminado fue un éxito en ascenso. Estableció a Unix como una parte permanente y valorada de la ecología computacional en los Laboratorios Bell, y comenzó otro tema en la historia de Unix - una fuerte asociación con el formateo de documentos, tipografías y herramientas de comunicación. El manual de 1972 presumía de contar con 10 instalaciones.

Posteriormente, Doug McIlroy escribiría sobre este período [McIlroy91]: "La presión de los colegas y un simple orgullo en el trabajo hecho, provocaron que cantidades [NT6] de código fueran reescritas o desechadas conforme emergían ideas mejores o más elementales. La rivalidad profesional y la protección territorial eran prácticamente desconocidas: muchas cosas buenas estaban sucediendo que nadie necesitaba apropiarse las innovaciones". Pero tendría que ocurrir otro cuarto de siglo para que todas las implicaciones de esta observación llegaran a lugar.


Notas al pie de esta sección:
[13] Ken Thompson me recordó que los teléfonos móviles de hoy en día tienen más RAM que la PDP-7 tenía en RAM y espacio en disco juntos; un disco grande, en esos días, consistía en menos de un mega byte.

[14] Hay una FAQ en la Web sobre las computadoras PDP, que explica el papel, de otra forma extremadamente oscuro, en la historia de la PDP-7.


Referencias bibliográficas de esta sección:
[Ritchie79] Dennis M. Ritchie. The Evolution of the Unix Time-Sharing System. 1979. Disponible en la Red.

[McIlroy91] Proc. Virginia Computer Users Conference. Volume 21. M. D. McIlroy. "Unix on My Mind". p.1-6.


Notas de traducción de esta sección:
[NT1] Personalmente, el término 'Unix Wars' siempre se me ha hecho una referencia a 'Star Wars', una famosísima película de ficción en los 70s-80s. Sin embargo, la traducción al español de Star Wars es 'Guerras de las Galaxias', lo que no quedaría muy bien traducido como 'Guerras de Unix', por lo que me tomé la libertad de quitar la preposición 'de' para darle al título un aire más de ficción, al estilo del mismo título 'Unix Wars'. Una forma tal vez más correcta sería 'Guerras de los Unixes', pero al mismo tiempo tal vez esa traducción haría la analogía 'Star Wars' - 'Unix Wars' más evidente, siendo que esta relación es algo que yo personalmente he pensado, hasta estar seguro de la misma no intentaría establecer el término de manera definitiva.

[NT2] Con base en los comentarios de ESR en http://www.catb.org/esr/writings/taoup/translation.html, el nombre de esta sección quedó haciendo referencia a la rebeldía heroica, ya que 'Blows against the Empire', título de un álbum de Paul Kantner, anterior líder de Jefferson Airplane, no tiene (o no encontré una) traducción al español oficial para utilizar. 'Nosotros Venceremos', según Google, hace referencia tanto a una canción gospel del Rvdo. Charles Tindley, ('We shall overcome'), canto de protesta que se convirtió en himno del movimiento de derechos civiles en Estados Unidos. También se encuentran en Google referencias a un canto cristiano que hace referencia al éxito contra el mal, tomado como 'imperio' en el sentido que también se puede interpretar en el título en inglés original de esta sección.

[NT3] El original en inglés 'At Play in the Groves of Academe' (lit. 'Jugando en las arboledas de la universidad'), me da la impresión de ser una expresión local, por lo que busqué la forma de adaptarla a una expresión más genérica, pues en español no ubiqué ninguna expresión que pudiera equipararse a la original en inglés.

[NT4] Jorge Agustín Nicolás Ruiz de Santayana y Borrás, nacido en España, es mundialmente conocido como George Santayana.

[NT5] La 'línea de vida' ('lifeline' en el original), es una cuerda utilizada por los buzos y mineros, entre otros, para guiarse en el camino de regreso de las profundidades en las que se sumergen, a la Teseo en el laberinto del minotauro. No encontré traducción literal para 'lifeline', por lo que traduzco libremente aquí.

[NT6] El original en inglés dice 'gobs', que yo sustituyo de forma genérica por 'cantidades', al no encontrar una traducción más adecuada. Los 'gobs' son una forma en que se conoce comúnmente a los restos desechables del carbón en una mina.




--
Eru kaluva tielyanna (Dios iluminará tu camino)
Visita la página de la Casa de la Juventud, TOR: www.torcasajuv.com
"Ama y haz lo que quieras. Si callas, callarás con amor; si gritas, gritarás con amor; si corriges, corregirás con amor; si perdonas, perdonarás con amor. Si tienes el amor arraigado en ti, ninguna otra cosa sino amor serán tus frutos." (San Agustín) Solamente asegúrate que en realidad sea AMOR...

No hay comentarios.: