¡Estás usando Unix! Puede que no lo sepas, pero tu teléfono, tu servidor, tu computadora de escritorio o incluso el estéreo de tu auto probablemente estén ejecutando Unix o alguna forma de él. Ahora el sistema operativo más potente del mundo cumple 50 años: contamos toda la historia. En el legendario libro Unix Haters Handbook, Donald Norman, entonces empleado de Appl€, escribe esto en el prefacio: "¿Sabes cuál es el verdadero problema con Unix? El verdadero problema es que se volvió tan popular. Unix no estaba destinado a ser popular, estaba hecho para unas pocas personas que trabajaban en sus laboratorios en la vieja computadora PDP-11 de Digital Equipment". Al final del prefacio, Norman añadió: "Si este libro no acaba con Unix, nada lo hará." No podría haber tenido más razón. Unix es en realidad el proyecto de software más improbable del mundo en forma de un sistema operativo al que se ha condenado una y otra vez, y donde su propietario original hizo todo lo posible para sacar dinero de un proyecto en el que el mismo realmente no tenía gran interés. Se trata de un sistema operativo que se ha inspirado y copiado de muchos otros, pero que independientemente de la forma que haya adoptado, sigue basándose en la misma filosofía que cuando se presentó por primera vez en 1969. Hablamos, por tanto, de Unix, que hoy en día puede verse como una filosofía más que como un sistema operativo real. Un sistema operativo que utilizas de una forma u otra a diario, lo quieras o no. Un fracaso exitoso Comenzó con un fracaso a mediados de la década de 1960 en la forma de un sistema operativo llamado Sistema de Computación y Operación Muliplexado, o Multics, desarrollado en colaboración entre General Electric y Bell Laboratories. A medida que las computadoras se volvieron cada vez más poderosas, creció el interés en hacer posible que varios usuarios operasen la misma computadora al mismo tiempo. El primer gran intento se desarrolló en la Universidad MIT de Estados Unidos a finales de los años 50 y principios de los 60. El sistema operativo se denominó Sistema de tiempo compartido compatible, CTSS, y se demostró por primera vez en noviembre de 1961 en una computadora central IBM 709 propiedad del MIT. El MIT también puede considerarse el lugar donde nació la cultura hacker y los hackers que eran estudiantes de la escuela consideraban, no del todo injustamente, que la computadora IBM 709 era una abominación en general (dependiendo mucho de las restricciones que rodeaban a la computadora). En particular dado que CTSS se basaba en que cada usuario tuviera sus propias cuentas de inicio de sesión, y si había algo que los hackers del MIT no podían soportar era una puerta cerrada o al menos una cuenta de inicio de sesión igualmente cerrada: la información debía estar disponible gratuitamente para todos. El hecho de que los estudiantes también tuvieran acceso más libre a una computadora PDP-6 de Digital Equipment significó que pronto comenzaron a improvisar una alternativa al CTSS, que el estudiante del MIT Tom Knight denominó con cierta ironía Sistema de Tiempo Compartido Incompatible (ITS), la cual fue ensamblado por la banda de hackers del MIT, íntegramente según sus propias habilidades, con sus gustos y valores. El desarrollo se traslada a una computadora PDP-10. Había cuentas de usuario en ITS (pero se podían usar sin iniciar sesión, lo cual se consideraba de mala educación), pero todos los archivos almacenados en la computadora eran accesibles para todos. ITS se escribió en Assembler en un tiempo récord; pronto los hackers obtuvieron acceso a una computadora PDP-10 mucho más rápida y todo el desarrollo de ITS se trasladó allí. El hecho de que ITS fuera escrito en Assembler puede considerarse sin importancia hoy en día, pero influyó de muchas maneras en cómo se desarrollaría Unix unos años más tarde. Por cierto, ITS se utilizó en el MIT hasta 1990, pero se había extendido por todo el mundo y el último lugar donde se utilizó fue en la asociación de informática Stacken en el Real Instituto de Tecnología de Estocolmo, donde se utilizó hasta 1995. ITS tenía muchas características interesantes: por ejemplo, cada computadora que ejecutaba ITS estaba conectada a Arpanet, el precursor de Internet, y era posible ejecutar un programa en varias computadoras con ITS al mismo tiempo, trabajando con archivos que existían localmente, en cada terminal. En ITS también se desarrollaron varios programas interesantes, incluido Emacs. CTSS también tuvo una buena cantidad de avances tecnológicos interesantes: entre otras cosas, la primera variante del correo electrónico apareció en CTSS en la forma en que los usuarios podían enviarse cartas entre sí en la misma computadora. Ken Thompson, a quien volveremos en breve en esta historia, desarrolló un editor de texto llamado QED que luego sirvió de inspiración para Ed, Vi y Vim. Y como mencionamos, CTSS fue el primer sistema operativo en implementar cuentas protegidas con contraseña. CTSS fue posteriormente portado a ti Todo un modelo de computadora más grande de IBM, el 7094, pero al igual que ITS no se extendió a otras plataformas de hardware. Multics ha seguido evolucionando CTSS se utilizó en el MIT hasta 1973 inclusive. A diferencia de ITS y CTSS, Multics ha seguido evolucionando, al menos hasta diciembre de 2016, cuando se lanzó la versión 12.6f. Hoy en día, Multics se basa en código fuente abierto y, naturalmente, se ejecuta en un emulador, ya que el hardware para el que fue escrito no es realmente práctico de usar hoy en día. Cabe señalar que Multics -cuando era un producto comercial propiedad primero de la división informática de General Electric, más tarde de Honeywell y finalmente de Bull- funcionaba con una gama de modelos de ordenador de las tres empresas. La última instalación conocida de Multics fue operada por las Fuerzas de Defensa Canadienses y fue dada de baja a finales de octubre de 1990. Entonces, ¿por qué es tan importante esta introducción a la historia de Unix? La respuesta es Ken Thompson. Fue uno de los desarrolladores detrás de Multics y pensó que había muchas ideas interesantes en Multics que quería desarrollar más, al mismo tiempo que Multics era demasiado complicado para su gusto y el ritmo de desarrollo era demasiado lento. Estas ideas fueron compartidas por cuatro personas más: Denis Ritchie, Brian Kernighan, Joe Ossanna y Douglas McIlroy, quienes se unirían al proyecto un poco más tarde. Según la leyenda, Ken Thompson envió a su esposa de vacaciones durante un mes y luego se puso a escribir las bases de lo que se convertiría en Unix, pero que luego recibió el nombre de "nuevo sistema de Ken": el nombre Unics fue propuesto por Brian Kernighan en 1970, pero luego se cambió a Unix. El resultado del hackeo de Thompson fue un embrión, difícilmente un sistema operativo terminado, sino de un núcleo, un intérprete de línea de comandos simple, un sistema de archivos más simple y unas pocas herramientas fueron suficientes para poner las cosas en marcha. Curiosamente, todo esto fue escrito en Multics antes de que pudiera ejecutarse en la computadora PDP-7 que estaba disponible. Inicialmente, el proyecto tuvo dificultades para conseguir el apoyo de los directivos de Bell Laboratories. La pandilla Unix nunca presentó ningún plan sólido, sino que siguió adelante y cuando se pusieron manos a la obra y quisieron comprar una computadora más rápida, los jefes los rechazaron. A pesar de esto, Ken Thompson y Dennis Ritchie continuaron su trabajo. El código para el sistema de archivos se escribió con tiza en grandes pizarras y llegó a ser conocido como "sistema de archivos de tiza", un tipo de metodología de programación que no se ve muy a menudo hoy en día. Un sistema de hermandad En 1979, Dennis Ritchie escribió un documento llamado La historia del sistema de tiempo compartido Unix en el que explicaba por qué él y sus colegas del proyecto Multics decidieron desarrollar lo que se convertiría en Unix: "Lo que queríamos no sólo era preservar un buen ambiente para programar, sino también un sistema donde se pudiera crear una hermandad. Sabíamos por experiencia que una piedra angular de los sistemas informáticos compartidos... no es sólo introducir programas a través de una terminal en lugar de una perforadora de tarjetas, sino también fomentar una comunicación estrecha”. A principios de 1970, se permitió al proyecto encargar un modelo de computadora completamente nuevo a Digital Equipment, una "minicomputadora" llamada PDP-11 que estaba alojada en un bastidor de 19 pulgadas. Increíblemente, la compra obtuvo el visto bueno de los directivos de los Laboratorios Bell y el ordenador se encargó en mayo de 1970. Un par de meses más tarde se entregó el ordenador, aunque sin ningún tipo de sistema de disco, por lo que no se pudo entregar hasta diciembre del mismo año. Apuestas El desarrollo de Unix cobró nuevo impulso y apenas medio año después de la llegada de los discos, la actitud de los laboratorios Bell hacia el nuevo sistema operativo había cambiado: ya nadie quería cerrar el proyecto y se compró más hardware. Un experimento en el que el departamento de patentes de Bell Laboratories utilizó un procesador de textos desarrollado internamente en la más simple computadora Unix resultó bien, y pronto más departamentos de la compañía comenzaron a usar aplicaciones en la computadora PDP-11, que ahora comenzó a tener problemas con el espacio de almacenamiento. El disco sólo podía almacenar medio megabyte y el resto de la información debía almacenarse en cinta. Es hora de C Unix fue escrito originalmente en Assembler, pero en 1971 se comenzó a trabajar en lo que sería la programación del lenguaje C. En 1973 el núcleo Unix fue reescrito en C y tomó la forma que perduraría durante muchos años. En su artículo de 1979, Dennis Ritchie escribió sobre cómo el éxito de portar el kernel de Assembler a C hizo que los programadores de Unix se dieran cuenta de que C era casi la herramienta perfecta para el desarrollo de software. Unix nunca estuvo completamente libre del código ensamblador, pero las pequeñas piezas que quedaron eran fáciles de portar a otras arquitecturas. Pronto, básicamente todos los programas de utilidad en Unix se escribieron en C y esto también hizo que Unix como sistema operativo fuera extremadamente portable: la conexión casi metalúrgica que el hardware subyacente requería con Assembler desapareció y en su lugar, con un esfuerzo más o menos grande, se podía recompilar todo el Unix para una nueva arquitectura de procesador o modelo de computadora donde fuera necesario. La portabilidad se convertiría en una de las principales características de Unix. Uno de las peores sería sin embargo la manera cómo se gestionaba el sistema operativo desde el punto de vista comercial. Bell Laboratories formaba parte de la compañía telefónica estadounidense AT&T, que ahora había comenzado a ofrecer Unix a universidades, autoridades y clientes comerciales en forma de una licencia en la que se incluía el código fuente completo de Unix en el paquete. Por supuesto, no pasó mucho tiempo para que el código fuente se difundiera con relativa libertad, lo que llevó, entre otras cosas, a que Arpanet adoptara Unix como sistema operativo estándar para toda su matriz a través de los antiguos ordenadores con procesador de mensajes de interfaz (IMP) que se había utilizado desde que se empezó a construir Arpanet, entre otros, en el ordenador DDP-516 de Honeywell. Estos fueron reemplazados por computadoras PDP y, por lo tanto, también tuvieron la posibilidad de correr Unix. Sin embargo, no fueron sólo los militares los que empezaron a utilizar Unix a través de Arpanet: las universidades también se interesaron, aunque a principios de los años 1980 el precio de Unix se volvió artificialmente tan alto que muchos tuvieron que abandonarlo y seguir corriendo, por ejemplo, VMS en sus computadoras DEC, comunes en ese momento. En la Universidad de Berkeley estaban especialmente interesados en ejecutar Unix, lo que llevó ya finales de los 70s al legendario Bill Joy -más tarde cofundador del farbicante de ordenadores Sun Microsystems- a iniciar el clonaje de Unix, llamándolo Berkeley Standard Distribution, BSD. Joy y varios otros programadores trabajaron durante la primera mitad de la década de 1980 en su clon de Unix, a partir del código fuente de Unix. Al poco tiempo de rodar reescribieron el código lo mejor que pudieron. En junio de 1991 lanzaron una versión de BSD llamada Net 2, primer clon de Unix donde el código fuente se liberaba de forma totalmente gratuita para que cualquiera pudiera utilizarlo y mejorarlo si así lo deseaba bajo la licencia BSD. Linux, GNU y BSD En 1983, Richard Stallman comenzó a obrar en su propio clon de Unix al que llamó GNU's Not Unix (GNU), pero el núcleo que debía formar la base de GNU -llamado GNU Hurd- jamás fue lanzado. Más tarde, Stallman afirmaría que Linux no habría existido sin sus esfuerzos y los de otros y que, por tanto, debía denominarse GNU/Linux. Si Stallman tiene razón en esa suposición está constantemente sujeto a escrutinio, pero la consideración de que Stallman podría haber lanzado su propio sistema operativo en lugar de intentar cambiar el nombre del ítem de otra persona. Linus Torvalds, por su parte, había empezado a trabajar en su propio clon de Unix. Lanzó su primera versión del kernel para su sistema operativo, que luego se llamó Freaxs (un acrónimo de las palabras free, freak y Unix) en septiembre de ese año, pero no fue hasta 1994 que Linux fue lanzado como un sistema operativo completo. Luego, el núcleo se distribuyó bajo la licencia pública GNU GPL, desde 1992. Entonces ¿por qué BSD no se convirtió en lo que es Linux hoy? A principios de los años 1990, una empresa llamada Unix System Labs (USL) había comprado los derechos de AT&T Unix y en 1992 demandó a Berkeley Software Design (BSDI), una empresa formada en 1991 que entonces se ganaba la vida desarrollando y distribuyendo BSD bajo el nombre BSD/OS. En 1992, BSDI lanzó el sistema operativo BSD/386 y fue entonces cuando "todo el asunto" se desató en serio. USL argumentó en su demanda que BSD/386 contenía "código fuente y secretos comerciales" de AT&T Unix. Todo el asunto se resolvió extrajudicialmente en 1994, cuando Novell compró la USL. Que USL demandara a BSDI probablemente tuvo poco que ver con el código fuente o con secretos comerciales, sino con el hecho de que BSD/386 costaba entonces 995 dólares, lo que podría compararse con AT&T Unix, que costaba más de 20.000 dólares. Probablemente también fue bastante revelador que de diez sitios web que existían a mediados de la década de 1990, la mayoría absoluta funcionaba con BSD/386 sobre cualquier otro sistema operativo, incluido AT&T Unix. La respuesta a por qué BSD no se convirtió en lo que Linux es hoy se remonta a cuando Red Hat salió a bolsa en agosto de 1999. La IPO fue un gran éxito para Red Hat y, por supuesto, BSDI quería hacer lo mismo, pero donde Red Hat tuvo éxito, BSDI se fue directo a la cuneta y tanto la IPO como el éxito fracasaron. En cambio, al año siguiente, BSDI se fusionó con Walnut Creek, una empresa que distribuía software gratuito en CD-ROM. Poco después, la empresa fue comprada por Telenet System Solutions y al año siguiente, en 2002, el negocio que incluía BSD/OS se vendió a Wind River Software, quien descontinuó BSD/OS con relativa rapidez. La competencia de FreeBSD y otros sistemas operativos basados en BSD se volvió demasiado fuerte. Cambios continuos de propiedad No fue sólo BSD el que cambió de propietario una, dos y tres veces. Novell compró AT&T Unix en 1993 y cambió el nombre de todo el club a Unixware. Luego lo revendieron a Santa Cruz Operations (SCO) en 1995. Al menos esa era la opinión de SCO, pero Novell no compartió por qué SCO demandó a Novell sobre si SCO realmente compró o no los derechos de Unix. En realidad, el caso nunca se decidió. SCO también demandó a varias distribuciones de Linux y a las empresas detrás de ellas (si las había) a principios de la década de 2000, lo que no hizo más que destruir completamente la marca SCO a los ojos de la industria de TI. Hoy en día, la marca Unix es propiedad de un consorcio llamado The Open Group con 461 empresas y organizaciones miembros que garantizan que los sistemas operativos que cumplan una serie de requisitos para que puedan llamarse a sí mismos Unix, y si quieres utilizar la marca tienes que certificarte y pagar una buena cantidad de dinero por ello, algo que también han hecho varios sistemas operativos a lo largo de los años: AIX y ZOS de IBM, HP-UX de Hewlett-Packard, Silicon Graphics Irix, Sun Microsystems Solaris, Tru64 de Digital y Mac OS de Apple están todos certificados. Por supuesto, había más variantes de Unix, quién no recuerda Nextstep, Minix, Plan 9, QNX, Coherent, Interactive 386/ix (que venía en más de 40 disquetes de 1,44 megabytes), Xenix, Unicos, Ultrix... Entonces, ¿qué tiene que ver todo esto con el teléfono móvil, el estéreo del coche, el servidor, el dispositivo de almacenamiento, el router, el ordenador y el televisor? Bueno, pueden ejecutar IOS, que está basado en parte en código de FreeBSD, o Android, que está basado en Linux. El estéreo del automóvil puede ejecutar Android Auto y su servidor en Linux o tal vez OpenBSD. El dispositivo de almacenamiento puede utilizar FreeNAS y el firewall PFsense, ambos basados en FreeBSD. Su computadora puede estar cargada con Linux o Mac OS. Y tu televisor con Samsung Tizen o Android TV, ambos basados en Linux. Allí ves a qué puede conducir un mes de programación.