domingo, 22 de abril de 2012

Traducción: El extraño nacimiento y la larga vida de Unix



El clásico sistema operativo llegó a los 40 y su progenia abunda
Se dice que cuando una puerta se cierra, otra se abre. La gente generalmente ofrece este poquito de sabiduría para consolar a algun desafortunado. Pero a veces, es lo que ocurre realmente. Ciertamente fue el caso de Ken Thompson y más tarde Dennis Ritchie, dos grandes de la informática del siglo 20, cuando crearon el sistema operativo Unix; ahora considerado una de las más inspiradoras e influyentes obras de software jamás escritas.

Una puerta se había cerrado en la cara de Thompson y Ritchie en Marzo de 1969, cuando su empleador, la American Telephone & Telegraph Co., se retiró de un proyecto colaborativo con el MIT y General Electric que tenía el objectivo de crear un sistema interactivo de tiempo compartido llamado Multics, que quería decir "Multiplexed Information and Computing Service". El tiempo compartido, time-sharing, es una técnica que permite a múltiples personas utilizar simultáneamente una computadora, había sido inventado solamente una década atrás. Multics iba a combinar el time-sharing con otros avances técnicos de la época, permitiendo a los usuarios telefonear a una computadora desde terminales remotas y leer correo electrónico, editar documentos, correr cálculos, etc. Iba a ser un gran salto adelante en el modo de usar las computadoras respecto de cómo eran usadas hasta el momento: gente tediosamente preparando y enviando trabajos batch en tarjetas perforadas, a ser ejecutadas una por una.

Durante 5 años, AT&T invirtió millones en el proyecto Multics, comprando un mainframe GE-645 y dedicando al esfuerzo a muchos de sus mejores investigadores, de los renombrados Bell Telephone Laboratories - incluyendo a Thompson y Ritchie, Josep F. Ossana, Stuart Feldman, M.Douglas Mcllroy y al final, Robert Morris. Pero el nuevo sistema era demasiado ambicioso, y se pasó de la fecha límite del proyecto por mucho. Al final, los líderes corporativos de AT&T decidieron terminarlo.

Luego de que AT&T se retirara del proyecto Multics, los managers en el Bell Labs en Murray Hill, Nueva York, se volvieron reticentes en permitir cualquier trabajo posterior en sistemas operativos, dejando a algunos investigadores muy frustrados. A pesar de que Multics no había logrado muchos de sus objetivos, pudo - recordó más tarde Ritchie - proveer un "conveniente servicio de computación interactivo, un buen ambiente en el cual programar, (y) un sistema alrededor del cual se podía formar una comunidad". De repente, se había ido.

Con el corazón compungido, los investigadores volvieron a usar sus viejos sistemas batch. En ese momento tan poco auspicioso, con el management totalmente en contra de la idea, seguramente habrá parecido una idea tonta continuar diseñando sistemas operativos, pero eso es exactamente lo que Thompson, Ritchie y muchos colegas en los Bell Labs hicieron. Ahora, 40 años después, deberíamos dar gracias a que estos programadores ignoraron a sus jefes y continuaron su trabajo con amor,el cual dió Unix al mundo, uno de los grandes sistemas operativos de todos los tiempos.


El proyecto renegado..
..comenzó tan pronto como Thompson, Ritchie y un tercer colega de Bell Labs, Rudd Canaday, comenzaron a bocetar en papel el diseño para un sistema de archivos. Thompson luego programó lo básico para un nuevo sistema operativo para el mainframe GE-645 del laboratorio, pero, con el proyecto Multics terminado, también había culminado la necesidad del GE-645. Thompson se dió cuenta que cualquier trabajo posterior iba a terminar en nada, así que decidió no continuar.

Thompson pasó algo de su tiempo luego de la caída de Multics escribiendo un juego llamado Space Travel, el cual simulaba los planetas más grandes del sistema solar y una nave espacail que volaba entre ellos. Space Travel fue escrito para el GE-645 y era tosco de jugar y caro, alrededor de U$S 75 el juego por el tiempo de CPU necesario. Hurgando un poco, Thompson encontró un polvoriento PDP-7, una minicomputadora construída por la Digital Equipment Corp. (N.d.T.: Digital fue comprada décadas después por Compaq y ésta luego se fusionó con HP), y algunos colegas del Bell Labs la habían comprado antes para un proyecto de análisis de circuitos. Thompson reescribió Space Travel para que corriera sobre el PDP-7.

Y con ese pequeño ejercicio de programación, se abrió una grieta en una segunda puerta: fue durante el verano de 1969 en el que la esposa de Thompson, Bonnie, pasó un mes visitando a sus padres para hacerles conocer a su recién nacido nieto. Thompson tomó ventaja de su soltería temporal para escribir una buena parte de lo que luego se volvería el sistema operativo Unix para el  PDP-7. El nombre Unix proviene de una broma que hizo uno de los colegas de Thompson: debido a que el nuevo sistema operativo soportaba un solo usuario (Thompson en ese momento), él lo vió como una versión castrada de Multics y lo apodó "Un-Multiplexed Information and Computing Service", o Unics, nombre que luego mutó a Unix.

Inicialmente, Thompson usó el GE-645 para escribir y compilar el software, que luego descargaba al PDP-7, pero pronto se apartó del mainframe y para finales de 1969 ya podía escribir código de sistema operativo en el PDP-7. Eso fue un gran paso en la dirección correcta, pero Thompson y los demás sabían que el PDP-7 era obsoleto y no iban a poder seguir con su trabajo encubierto mucho tiempo más; también sabían que el management del laboratorio no iba a permitir más investigaciones sobre sistemas operativos.

Así que Thompson y Ritchie se pusieron creativos y formularon una propuesta a sus jefes para comprar una nueva minicomputadora DEC, un PDP-11, pero armaron la propuesta en términos atractivos: dijeron que iban a crear herramientas para editar y formatear texto, lo que hoy llamarías un procesador de texto. Fue casi una nota al pie el hecho de que también iban a tener que crear el sistema operativo para la nueva máquina, que permitiera ejecutar el editor y el formateador de texto.

El management se lo creyó, y una orden de compra para el PDP-11 fue cursada en mayo de 1970. La máquina en sí arribó poco después, aunque las unidades de disco tardaron más de 6 meses más en aparecer. En el interín, Thompson, Ritchie y otros continuaron desarrollando Unix en el PDP-7. Luego de que instalaran los discos del PDP-11, movieron el cada vez más complejo sistema operativo a la nueva máquina. A continuación migraron el formateador de textos roff, escrito por Ossana y derivado del programa runoff, que había sido usado en un sistema time-sharing prototipo.

Unix tuvo su primer test de uso en el mundo real dentro de los Bell Labs, cuando tres dactilografos del departamento de patentes de AT&T empezaron a usarlo para escribir, editar y formatear formularios para patentes. Fue un éxito, el departamento de patentes adoptó el sistema de todo corazón, lo que dió suficiente credibilidad a los investigadores para convencer al management de comprar otra máquina - un nuevo más potente modelo de PDP-11 - permitiendo que continuara su trabajo encubierto sobre Unix.


En los primeros días..
Unix evolucionaba constantemente, así que la idea de ponerles números de versión parecía inapropiada, sin embargo los investigadores sí liberaron nuevas ediciones del manual de programación periódicamente, y los primeros sistemas Unix fueron nombrados en base a tales ediciones. La primera edición del manual fue completada en noviembre de 1971.

Así que, ¿qué ofrecía la primera edición de Unix que hacía que fuera tan grandioso? Lo primero, el sistema proveía un sistema de archivos jerárquico, el cual permitía hacer algo que ahora damos por sentado: que los archivos pudieran ser ubicados en directorios - o carpetas - y ellos a su vez, pudieran ser ubicados dentro de otros directorios. Cada archivo podía contener no más de 64 kilobytes, y su nombre no podía tener más de 6 caracteres. Estas restricciones parecer horriblemente limitantes hoy, pero en ese momento parecían perfectamente adecuadas.

Aunque Unix fue eminentemente creado para procesamiento de texto, el único editor disponible en 1971 era "ed", orientado a edición en línea; hoy ed es todavía el único editor que tiene garantía de estar presente en todos los sistemas Unix. Además de procesamiento de texto y aplicaciones generales del sistema, la primera edición de Unix incluyó juegos como blackjack, ajedrez y tic-tac-toe. Para administradores de sistemas, había herramientas para dumpear y restaurar imágenes de disco a cinta magnética, para leer y escribir cintas de papel, y para crear, chequear, montar y desmontar packs de discos.

Más importante aún, el sistema ofrecía un entorno interactivo que ya permitía el time-sharing, el uso a tiempo compartido, de este modo varias personas podían usar la misma máquina al mismo tiempo. Varios lenguajes de programación estaban disponibles para ellas: BASIC, Fortran, los comandos de scripting Unix, ensamblador y B. El último de estos, era un descendiente de BCPL (Basic Combined Programming Language), que evolucionó en el inmensamente popular lenguaje C, el cual Ritchie creó mientras trabajaba en Unix.

La primera edición de Unix le permitía a los programadores hacer 34 diferentes llamadas de sistema, interconstruídas en el sistema operativo. Es un testamento a lo durable de la naturaleza del sistema operativo el que casi todas esas llamadas al sistema estén todavía disponibles y sean fuertemente utilizadas en los Unix y Linux modernos, cuatro décadas después.

Para su tiempo, la primera edición de Unix proveía un remarcablemente poderoso ambiente de desarrollo, a pesar de ello, solo contenía alrededor de 4200 líneas de código y ocupaba unos escasos 16 KB de memoria cuando corría.


La gran influencia de Unix
..puede ser rastreada a su elegante diseño, simplicidad, portabilidad y gráciles tiempos de respuesta, pero tal vez, incluso más importante, fue la devota comunidad de usuarios que pronto creció alrededor de él. Y ocurrió solo por un accidente en su singular historia.

La historia es esta: por años Unix permaneció como nada más que un proyecto de investigación de Bell Labs, pero en 1973 sus autores sintieron que el sistema estaba maduro y presentaron un paper sobre su diseño e implementación en el simposio de la Association for Computing Machinery. Ese paper fue publicado en 1974 la revista "Comunicaciones de la ACM". Su aparición trajo un chorro de pedidos de copias del software.

Esto puso a AT&T en aprietos. En 1956, AT&T acordó con el gobierno de EE.UU. un consentimiento que impedía a la compañía vender productos no directamente relacionados con telefonía y telecomunicaciones; como pago se les permitió continuar legalmente un monopolio en servicios telefónicos de larga distancia. Así que Unix no podía ser vendido como producto.

En cambio, AT&T liberó el código fuente de Unix bajo licencia a cualquiera que lo pidiese, cobrando solo un precio nominal. El punto crítico aquí fue que el acuerdo le impedía a AT&T darle soporte a Unix. De hecho, por muchos años los investigadores de Bell Labs mostraban una transparencia en las conferencias que decía: "Sin publicidad, sin soporte, sin arreglo de bugs, se paga por adelantado".

Sin otras posibilidades de soporte disponibles para ellos, los primeros usuarios de Unix se unieron para darse mutua ayuda, formando una fŕagil red de grupos de usuarios alrededor del mundo. Tenían el código fuente, lo que ayudaba. Ellos no veían a Unix como producto de software estándar, ya que nadie parecía estar detrás de él de ese modo. Así que estos primeros usuarios se ayudaron con buf fixes, escribiendo nuevas herramientas y mejorando el sistema a medida que hacía falta.

El grupo Usenix actuaba como garante en el intercambio de software Unix en Estados Unidos. La gente podía enviar cintas magnéticas con nuevo software o arreglos al sistema y recibir en devolución las cintas con software y arreglos que Usenix había recibido de otros usuarios. En Australia, la Universidad de Sidney produjo un más robusta versión de Unix, la Australian Unix Share Accounting Method, la cual podía manejar grandes cantidades de usuarios concurrentes y ofrecía mejor performance.

A mediados de los 70's 
el ambiente de compartición se había extendido se parecía mucho al movimiento open-source de estos días. Usuarios de todas partes mejoraban el sistema con entusiasmo, y muchas de sus mejoras eran añadidas en Bell Labs para su incorporación en futuras liberaciones. Sin embargo, a medida que Unix se hacía más popular,los abogados de AT&T comenzaron a fijarse más seriamente en lo que los licenciatarios estaban haciendo con sus sistemas.

Una persona que recibió mucha atención fue John Lyons, un científico de computadoras que enseñaba en la University of New South Wales, en Australia. En 1977, publicó lo que fue probablemente el más famoso libro de computación de su tiempo, "A commentary on the Unix Operating System", el cual contenía un listado anotado del código fuente central de Unix.

Las condiciones de licenciamiento de Unix permitían el intercambio de código fuente, e inicialmente el libro de Lyons fue vendido a licenciatarios. Pero en 1979, los abogados de AT&T cortaron la distribución del libro y su uso en clases universitarias. La comunidad Unix, antiautoritaria, reaccionó como se podría esperar y copias piratas del libro se espacieron como un incendio. Muchos de nosotros tenemos una fotocopia de fotocopia, casi ilegible, del libro original.

Ir esquivando a los abogados de AT&T se volvió la norma, incluso dentro de Bell Labs. Por ejemplo, entre la liberación de la sexta edición de Unix en 1975 y la séptima edición en 1979, Thompson acumuló docenas de importantes bug fixes al sistema, de origen interno, de Bell Labs, y de terceros; él quería filtrarlos a la base de usuarios Unix existente, pero los abogados de la empresa creyeron que esto constituiría una forma de soporte e impidieron la liberación. Sin embargo, esos bug fixes pronto se distribuyeron a través de canales no oficiales. Por mencionar algo, Lou Katz, el presidente fundador de Usenix, recibió una llamada un día diciendole que si iba a cierto lugar en la avenida Mountain (donde estaba ubicado el Bell Labs), a las 2 PM, iba a encontrar algo interesante. Como era de esperarse, Katz encontró una cinta magnética con los bug fixes, los cuales estuvieron rápidamente en manos de sus incontables usuarios.

Para finales de los 70's, Unix, que había comenzado una década antes como una reacción contra la pérdida un confortable entorno de desarrollo, estaba creciendo como la hierba en universidades y en la industria IT. Unix florecería a principios de los 80's antes de alcanzar su máxima popularidad a principios de los 90's.

Por muchas razones, desde ese entonces, Unix ha cedido su espacio a otros sistemas comerciales y no comerciales, pero su legado, de una elegancia, buen diseño y confortable ambiente para desarrollar, sigue vivo. En reconocimiento por sus logros, Thompson y Ritchie recibieron  el Japan Prize a principios de año (2011), añadiendolo a la colección de menciones y honores recibidos, que incluye el Turing Award de la Association of Computing Machinery. Muchos otros, de índole personal, fueron tributos a Ritchie y su enorme influencia en la computación, y llegaron luego de su fallecimiento en octubre pasado.

Unix es de hecho uno de los más influyentes sistemas operativos.. 
..jamás inventados. Sus descendientes directos se cuentan hoy por centenares. Una rama del arbol familiar son varias versiones de Unix propiamente dicho, que comenzó a ser comercializado en los 80's luego de que las medidas por el  monopolio de Bell Systems fueran dejadas
sin efecto, liberando a AT&T de las limitaciones del acuerdo de 1956. Por otro lado, hay varios sistemas tipo-Unix derivados de la versión de Unix desarrollada en la Universidad de Berkeley, incluyendo el que usa Apple en sus computadoras, OS X. Digo "tipo-Unix" porque los desarrollares de la Berkeley Software Distribution (BSD) Unix - a partir del cual fueron desarrollados estos sistemas derivados - trabajaron duro para borrar cualquier rastro del código original de AT&T, para que su software, BSD Unix y sus descendientes fueran libremente distribuíbles. La efectividad de esos esfuerzos fue, de todos modos, puesta en cuestión cuando el Unix Systems Laboratoratories, subsidiaria de AT&T, demandó a BSD y los regentes de la Universidad de California en 1992, por derechos de propiedad intelectual en este software. La universidad contrademandó a AT&T por faltas a la licencia provista por AT&T para el uso del código desarrollado en Berkeley. El embrollo legal desaceleró el desarrollo de los clones de Unix libres, incluyendo el 386BSD, que estaba diseñado para el chip Intel 386, la cpu que se podía encontrar en muchos IBM PCs de esa época.
Si este sistema operativo hubiera estado disponible en aquel entonces, Linus Torvalds dijo que él probablemente no habría creado Linux, un sistema operativo tipo-Unix que desarrolló desde cero para PCs a principios de los 90's. Linux ha llevado el bastón de mando de Unix al siglo XXI, corriendo en un amplio rango de dispositivos incluyendo routers wireless, TVs, PCs de escritorio, y smartphones Android. Incluso corre en supercomputadoras.

A pesar de que AT&T rápidamente acordó en sus disputas legas con BSD y la Universidad de California, la batalla legal sobre los derechos de propiedad intelectual sobre varias partes de Unix y Linux han continuado a lo largo de los años, a menudo envolviendo a corporaciones enteras en la lucha. Para 2004, no menos de cinco demandas mayores habían sido abiertas. Hace muy poco, en agosto, la empresa TSG Group (antes conocida como SCO _Group), perdió una demanda que clamaba derechos de propiedad de copyrights de Unix que Novell adquirió cuando compró los Unix System Laboratories de AT&T en 1993. Como programador e historiador de Unix, no puedo sino encontrar estas batallas legales algo tristes. Desde el mismo principio, los creadores y usuarios de Unix trabajaron lo mejor posible para construir y compartir, incluso si ello significaba desafiar a la autoridad. Esa desinteresada generosidad contrasta mucho con la codicia que ha conducido las subsecuentes batallas legales sobre la propiedad de Unix.

El mundo del hardware.. 
.. y software se mueve hacia delante muy rápido. Para los profesionales IT, el rápido ritmo de cambio es típicamente algo maravilloso, pero nos hace susceptibles a perder nuestra propia historia, que incluye importantes lecciones del pasado. Para solucionar un poco esto, en 1995 inicié un lista de correo de viejos aficionados de Unix. Ese esfuerzo se convirtió  en la Unix Heritage Society. Nuestro objetivo no es solo salvar la historia de Unix, sino también coleccionar y conservar estos viejos sistemas y si es posible, devolverlos a la vida. Con ayuda de muchos miembros talentosos de la sociedad, pude restaurar mucho del viejo software Unix y ponerlo a funcionar, lo que incluye el viejo compilador C de Ritchie de 1972 y el primer sistema Unix escrito en C, de 1973. Un santo grial que nos uludió por largo tiempo fue la primera edición de Unix en cualquier forma, electrónica u otra. Entonces, en 2006, Al Kossow del Computer History Museum de Mountain View, California, desenterró una copia impresa de un estudio sobre Unix de 1972, que no solo cubría el funcionamiento interno de Unix, sino que tambien incluía una lista completa del kernel y los componentes del sistema operativo. Este fue un asombroso descubrimiento, como encontrar un Ford modelo T acumulando polvo en un rincon. Pero no solop queríamos admirar el trabajo de lejos, queríamos ver la cosa funcionando de nuevo.

En 2008, un programador independiente de Hawaii, Tim Newsham, y yo formamos un equipo de mentes entusiastas de Unix y nos preparamos para recuperar este viejo sistema de la muerte. El trabajo fue arduo en lo técnico y a menudo frustrante, pero al final, con logramos correr una copia de la primera edición de Unix en un PDP-11/20 emulado. Enviamos nuestro mensaje anunciando nuestro éxito a todo el que estuviera interesado. Thompson, siempre breve, respondió simplemente "asombroso". De hecho, su creación fue asombrosa y me ha alegrado poder hacer lo que estuviera a mi alcance para hacerlo, a él a su historia, más conocidos.

Acerca del autor 
Warren Toomey enseña en la Bond University, en Australia. Fue mordido por el bicho de Unix en 1982 cuando estaba en la escuela secundaria todavía, cuando pasó dos semanas en la universidad de Wollongong aprendiendo sobre computadoras. Allí encontró un "asombroso sistema llamado Unix". Su posterior descubrimiento de software para simular las computadoras que corrían las primeras versiones de Unix lo llevaron a coleccionar viejas copias de este sistema operativo.


The Strange Birth and Long Life of Unix
http://spectrum.ieee.org/computing/software/the-strange-birth-and-long-life-of-unix/1

No hay comentarios: