Pese a alimentar más del 90% de las cargas de trabajo en la nube actualmente, Unix (y Linux con él) tuvo comienzos humildes. Jim Hall analiza cómo Unix de Bell Labs en la década de 1970 se convirtió en la columna vertebral de muchos sistemas operativos modernos.
Los orígenes de Unix
En los primeros días de la informática, los usuarios interactuaban con la computadora a través de una gama de medios bizantinos. El ENIAC original ni siquiera presentaba una “interfaz de programación” como creemos en la actualidad; en su lugar, los programadores conectaron «unidades funcionales» separadas a través de enchufes y cables. A medida que las computadoras se volvieron más prácticas, se convirtieron en una plataforma para operaciones por lotes, como a través de pilas de tarjetas de datos perforadas.
En sistemas posteriores, más «modernos» como el mainframe, la administración del sistema seguía siendo compleja. La creación de un archivo requería especificar la cantidad de espacio en disco para adjudicar más otros atributos. Los operadores regularmente interactuaban con el sistema usando dispositivos terminales de papel similares a una máquina de escribir. Y en esos primeros días, así era como la gente esperaba trabajar con las computadoras.
A mediados y finales de la década de 1960, el MIT, Bell Labs y GE colaboraron en un nuevo sistema llamado MULTICS, el Servicio de Informática e Información Multiplexada. MULTICS iba a ser una revolución en la informática. Pero a través de su desarrollo, MULTICS además se volvió cada vez más complejo. Frustrado con el proyecto, Bell Labs se retiró, dejando a otros para llevar adelante el proyecto más tarde, aún cuando muy tarde.
Mientras tanto, Ken Thompson regresó de MULTICS a Bell Labs para trabajar en otros proyectos. Un esfuerzo involucró una unidad de disco concretamente rápida conectada a una minicomputadora DEC PDP-7. Thompson quería aprovechar al máximo el rendimiento en esta unidad y, por extensión, en cualquier dispositivo de almacenamiento. Entonces, comenzó a trabajar en un programador de discos.
Al abordar este proyecto, Thompson se dio cuenta de que su proyecto de prueba estaba entrando en el territorio del «sistema operativo». Durante las siguientes tres semanas, mientras su esposa estaba de vacaciones para visitar a sus padres, Thompson completó las piezas que faltaban y agregó una interfaz de llamada ejecutiva, un ensamblador, un editor y un caparazón. Y de esos pequeños comienzos nació Unix.
Desarrollo Unix
A lo largo de su desarrollo en Bell Labs, no hubo un «diseño maestro» que definiera lo que Unix debería hacer o convertirse. En cambio, Unix creció orgánicamente a medida que diferentes usuarios necesitaban nuevas funciones.
Una de mis historias favoritas de los primeros Unix es cómo los investigadores de Unix lograron comprar un nuevo sistema informático para continuar su trabajo y crearon un nuevo comando estándar de Unix al mismo tiempo. El departamento de Patentes planeaba comprar un nuevo sistema informático dedicado para escribir solicitudes de patentes en nombre de Bell Labs. El equipo de Unix sugirió que el departamento de Patentes comprara una nueva minicomputadora DEC PDP-11, y el equipo de Unix instalaría Unix y escribiría software personalizado para ayudar al departamento de Patentes a redactar las solicitudes de patente. ¿Ese nuevo software para escribir patentes? Una nueva implementación del sistema de formato de documentos Roff, en sí mismo una derivación de un programa CTSS anterior llamado RUNOFF. Hoy, «New Roff» o nroff
, es una parte fundamental de Unix.
Los propios comandos de Unix recibieron nombres muy cortos. los ls
, rm
, mv
, y otros comandos estándar de Unix eran tan cortos debido a que los primeros terminales de teletipo Modelo 33 utilizados en Bell Labs requerían un esfuerzo significativo para teclear cada letra. Era más fácil de escribir rm
que un nombre de comando más descriptivo como remove
, o cp
que copy
.
Una de las características definitorias de Unix, la «tubería», que permitía que un comando enviara su salida a otro comando para procesamiento adicional, además se agregó a instancias de otro investigador de Bell Labs, Douglas McIlroy. Hasta entonces, los comandos actuaban en archivos individuales al mismo tiempo. Pero con las tuberías, puede encadenar varios comandos para crear resultados más interesantes. A modo de ejemplo, el ls
comando enumera los archivos en un directorio, y el wc
comando cuenta las líneas de su entrada. Si conecta los dos comandos juntos como ls|wc
, obtiene el número de archivos en un directorio.
Se agregaron otros comandos de manera semejante debido a que alguien los solicitó. Thompson escribió el grep
comando basado en una sugerencia de McIlroy de que Unix debería tener una utilidad para buscar texto en archivos. Thompson reutilizó código de Unix ed
editor para crear una utilidad para realizar una «impresión de expresión regular global» de cualquier texto que coincida con el del usuario expresión regular. Este comando de «impresión de expresión regular global» se denominó simplemente grep
, ahora un comando estándar de Unix.
Unix en todas partes
Unix continuó creciendo, principalmente como investigación y como plataforma para proyectos dentro de Bell Labs hasta mediados de la década de 1980. Alrededor de ese tiempo, un grupo de diferentes proveedores comenzaron a comercializar sus propias versiones de Unix, incluidos HP-UX de Hewlett Packard, AIX de IBM, Xenix de Microsoft, SunOS de Sun (más tarde rebautizado como Solaris), entre otros. En 1983, Richard Stallman inició un nuevo proyecto para crear una versión de software libre de Unix, llamado GNU (un recursivo acrónimo, que significa «GNU no es Unix»).
Cada distribución de Unix era ligeramente distinto e incompatible entre sí. Algunos se derivaron del Unix original de AT&T Bell Lab, como HP-UX y AIX. Otras versiones de Unix se derivaron de una variante universitaria popular de la Universidad de California en Berkeley, llamada BSD para «Berkeley Software Distribution». Muchos de los comandos eran iguales o similares entre las diferentes versiones de Unix, pero los detalles acerca de cómo administraba el sistema de forma general diferían mucho. Una diferencia clave fue cómo se inició Unix: AT&T «System V» Unix utiliza niveles de ejecución controlado por una central /etc/inittab
archivo, mientras que BSD Unix comienza todo usando ejecutar control guiones que comienzan con el /etc/rc
texto.
Otros sistemas Unix aparecieron y desaparecieron durante las décadas de 1980 y 1990. Steve Jobs, después de ser destituido como CEO de Apple en 1985, fundó NeXT, que produjo su propia variante de Unix, derivada de BSD. NeXT trajo varias innovaciones a Unix, incluido un microkernel basado en Mach. El escritorio gráfico de NeXT, NeXTSTEP, agregó otras ideas nuevas, como Display PostScript para crear gráficos en pantalla, un «muelle» de aplicaciones disponibles y en ejecución, y una capa de aplicación orientada a objetos con kits de herramientas.
En 1991, un estudiante finlandés llamado Linus Torvalds comenzó a trabajar en un proyecto que posteriormente se convirtió en el kernel de Linux. El 25 de agosto de 1991, Torvalds publicó un breve anuncio en un grupo de discusión de Usenet sobre su proyecto de afición e invitó a otros a contribuir. Torvalds lanzó Linux bajo la Licencia Pública General GNU, lo que significaba que cualquiera podía modificar Linux para corregir errores o agregar nuevas funciones. Este modelo de «código abierto» o «software libre» impulsó rápidamente el desarrollo de nuevos sistemas Linux.
Surgieron comunidades alrededor de Linux, portando herramientas GNU y otros comandos de Unix para ejecutar en Linux. En 1992, los desarrolladores portaron el sistema X Window, lo que le dio a Linux su primera interfaz gráfica de usuario. El resultado es lo que la mayoría de la gente piensa cuando decimos «Linux», aún cuando Linux en realidad es solo el kernel que ejecuta todo.
Unix moderno
Aunque aún existen sistemas Unix propietarios, la mayoría de los sistemas Unix son Linux. Al menos en los servidores web, Linux domina. Linux además es común para muchas cargas de trabajo empresariales, incluidos servidores de aplicaciones y servidores de bases de datos. Es difícil saber exactamente cuántos servidores Linux ejecutan cosas, pero muchas estimaciones sugieren que Linux ejecuta más de dos tercios de los servidores web y otra infraestructura de Internet. Inclusive Microsoft es compatible con Linux; su plataforma Azure ejecuta Linux, del mismo modo que el Subsistema de Windows para Linux en los escritorios de Windows.
En el escritorio, Linux nunca ganó un punto de apoyo significativo. Una mordaza corriente en la comunidad de Linux es «El próximo año será el Año del escritorio Linux. » Pero Windows reina supremo en el escritorio. A pesar de esto, si está buscando Unix en el escritorio, considere macOS de Apple. En 1996, como parte del regreso de Steve Jobs a Apple como CEO, Apple compró NeXT y usó NeXT como base para el sistema operativo de próxima generación en las nuevas Mac. MacOS es verdaderamente Unix bajo el capó; abra una ventana de terminal y podrá hallar un shell de Unix con las utilidades estándar de Unix. En realidad, macOS es un Unix oficial, reconocido por el Open Group.
¿Hacia dónde se dirige Unix ahora? Ya no estoy seguro de si «Unix» es la etiqueta correcta. En una época en la que los sistemas Linux superan ampliamente en número Unix servidores, es factible que hayamos pasado el punto en el que «Unix» tiene mucho significado. Ya no se trata de «Unix como plataforma», sino de «Linux como plataforma». Y así como Unix creció más allá de su diseño original, agregando nuevas características donde se necesitaban, Linux continúa evolucionando para satisfacer nuevas necesidades. Al menos en el futuro previsible, se trata de «Linux», no de «Unix».