Los inicios de Linux

La semana pasada se conmemoraron 20 años del lanzamiento de Linux, el ahora ubiquo sistema operativo que está detras de la mayoría de los servidores webs, smartphones y equipo de control industrial. Con ese motivo la Linux Foundation celebró una serie de conferencias en las que se discutió el pasado, presente y futuro de Linux, supongo que eso volvió a muchos nostálgicos y tal vez fue lo que motivó a Lars Wirzenius (compañero de estudios de Linus Torvalds), a escribir un extenso post en su blog, sobre como fueron los inicios de Linux desde la prespectiva de un amigo personal de Linus Torvalds y ciertamente es revelador. La parte más aleccionadora (la moraleja de todo el post) está casi al final y dice:

Lo más importante, todo el mundo puede hacer una diferencia. Un gran logro, consiste de una serie muy larga de pequeños pasos, y ayuda a tener lo que llamamos sisu (perseverancia) en finés. También ayuda si eres inteligente y sabes lo que estás haciendo, pero recuerda que con 20 años de edad, fue muy estúpido cuando posó semidesnudo estando borracho para unas fotos de cerveza? No tan inteligente, pero jamas se dio por vencido. Puede que ayude ser un poco estúpido e ignorante de la manera correcta de hacer las cosas, por lo que usted piensa "hey, yo puedo hacer eso" en lugar de "debe ser muy difícil de hacer eso".

Pero en general el post me ha parecido tan bueno que he decidido traducirlo al español para todos aquellos que tengan dificultades con el inglés.

Este post va a ser largo y laberíntico. Si usted va a leerlo, es posible que quiera esperar hasta que usted está enfermo, y no puede levantarse de la cama, y ​​su cabeza está llena de algodones, y que usted está comiendo los analgésicos como si fueran caramelos. No quiero que sienta ningun dolor durante su lectura. Estar inconsciente y con un sintetizador de voz que le lea a usted a alta velocidad es una opción aún mejor.

 
Linux cumple 20 años este año. Eso es mucho tiempo. Ya que estaba allí desde el principio pensé en compartir algunos recuerdos de lo sucedido.
 
En 1988 me gradué de la escuela secundaria, y me aceptaron en la Universidad de Helsinki para estudiar ciencias de la computación. Los estudios se iniciaron en septiembre, y en ese mismo mes me invitaron a unirse a Spektrum, el club de habla sueca de los estudiantes de matemáticas, física, química, geografía o ciencias de la computación.
 
Spektrum es un club social, lo cual era bueno, desde que yo era, y sigo siendo, tímido y torpe socialmente, y el club me ha proporcionado una forma de conocer fácilmente a nuevas personas luego de haberme mudado a una nueva ciudad. Ese es también el lugar donde me encontré con el único estudiante de habla sueca nuevo CS (Computer Science) de ese año, un joven llamado Linus Torvalds.
 
Ese primer año, tomos algunas clases juntos, ya que todos los alumnos de un nueva promoción toman las mismas clases, y nos encontramos en Spektrum también. Una especie de amistad creció.
 
Las computadoras eran bastante caras en aquel entonces, y la universidad proporcionan acceso a laboratorios llenos de computadoras con MS-DOS, además de unas pocas Macs, y algunas terminales conectados a una gran sistema VAX/VMS. Nunca me gustó mucho el MS-DOS, y además todas estaban casi siempre en uso. Nunca le ví ni pies ni cabeza al par de Macs que probé, nunca había visto una interfaz gráfica de usuario antes. Así que, naturalmente, opté por los terminales, a pesar de que el sistema VAX/VMS es horrible para el uso, o al menos eso creía.
 
Después de Navidad, las cosas cambiaron un poco. El departamento de CS tenía un pequeño equipo Ultrix escondido, sin usar en su mayoría, y se me ocurrió tener acceso a este. Ultrix era la versión de Unix de DEC (Digital Equipment Corporation). Había leído sobre Unix, particularmente en el libro de C de K&R (Kernighan y Ritchie), y me gustó lo que había leído. Yo había escrito unas cuantas herramientas de línea de comando para MS-DOS que funcionaban de forma similar a las herramientas de Unix. Fue una alegría poder acceder a un verdadero sistema UNIX: ¡tuberias (pipes) en tiempo real, no a través de los archivos temporales! Varios procesos al mismo tiempo! Los nombres de archivo no eran anormalmente estrechos! Fue muy liberador.
 
Mientras jugaba con la caja de Ultrix, que creo se llamaba kreeta (finés de la Isla de Creta), un día accidentalmente tipee el comando "rm". Ya que había desarrollado previamente el hábito de tipear "em", que era la versión local de MicroEMACS, como "rm" es el comando para borrar, trataba de no cometer errores tipográficos. Sin embargo, ese día, cometí un error tipográfico en lugar de "rm" tipee "rn", y descubrí Usenet.
 
Después de superado el asombro inicial y que los porteros me echaran porque el edificio estaba por cerrar, me fui a casa. Hay todo un mundo ahí afuera, con gente que hablaba de cosas interesantes, como el lenguaje C, y yo podía escuchar sus discusiones. ¿Qué podría ser mejor?
 
Le dije a Linus acerca de rn, y le gustó mucho. Los dos dos pasamos bastante tiempo leyendo los grupos de noticias (newsgroups). Ninguno de nosotros colocó un mensaje ese año, sin embargo. Había advertencias contra hacer perder el tiempo a otras personas, y los dos teníamos eso en mente.
 
En el grupo de noticias comp.lang.c, que rápidamente se convirtió en mi favorito, había gente de los Laboratorios Bell como participantes. Dennis Ritchie se había retirado relativamente hacía poco tiempo atras del grupo, pero otros todavía estaban allí, como Andrew Koenig, cuyo libro "C Traps and Pitfalls" yo acababa de leer. Como tímidos estudiante de primer año, no nos habriamos atrevido a molestar en esas discusiones. Linus no era tan tímido, pero él no quería publicar algo y que luego le mostraran que estaba equivocado.
 
Terminamos nuestro primer año de estudios en mayo y en junio los dos empezamos el servicio militar semi-obligatorio, pero en diferentes lugares. No vi a Linus sino hasta el próximo año. El ejército finlandés me enseñó a callar, dejar de pensar, darme prisa para esperar, disparar a la gente a distancia, y recoger los platos sucios del comedor. Mi coeficiente intelectual disminuyó notablemente durante esos nueve meses. No me gustó la experiencia.
 
Luego de haber terminado mi servicio militar en marzo, y un poco más tarde conseguí un trabajo de verano, escribiendo una aplicación de base de datos para la Oficina de Traductores Oficiales en Finlandia. La aplicación fue escrita en dBASE IV, que me enseñó que no debo dejar que los demás escojan mis herramientas, y que aunque puede ser posible escribir buen software con herramientas malas, es algo que debe evitarse en lo posible.
 
Ese verano, me volví a conectar con mis compañeros de la universidad, incluyendo Linus. Uno de los estudiantes unos años mayor que Linus y yo, Patrik, tenía una sauna en el edificio en el que vivía, y lo reservaba una vez por semana para nuestro grupo. Aquellos pervertidos que piensan que la palabra sauna es un sinónimo de burdel pueden dejar de imaginar orgías; en Finlandia, las saunas son sólo para baños medicinales, incluso la meditación, no el sexo.
 
Hay una foto semi-famosa de Linus, desnudo bebiendo una cerveza. La foto fue tomada por un compañero de estudios de Patrik, Stina, y Linus llevaba una trusa, porque fue un caluroso día de verano, así que no tenía camisa. No hubo orgías. Realmente.
 
Cuando los estudios comenzaron una vez más en otoño, yo seguí pasando el rato con Linus en las mismas clases, y las mismas fiestas, y especialmente en las salas de computo. Ambos disfrutamos jugando con el sistema Unix, y uno de los cursos que tomamos ese otoño fue Lenguaje C y programación en Unix. Yo había conocido el C desde 1987, cuando me lo enseñé a mí mismo con el libro de  K&R (Kernighan y Ritchie), y creo que Linus tenía alguna experiencia previa con él también. La mayor parte del curso fue tal vez demasiado básico para nosotros, así que pasamos mucho tiempo en cosas tontas como la compresión de nuestras respuestas a los ejercicios en tan pocas líneas de código como fuera posible, la competencia sobre quién tenía la respuesta más corta.
 
Exploramos el sistema Unix y las tecnologías relacionadas con otros aspectos del sistema, y nos divertimos mucho. Escribí mi primera tarea programada (cron), con el fin de inundar el buzón de corrreo electrónico de Linus, y le mostré que sí, en efecto, Unix no actualiza las marcas de tiempo de acceso en tiempo real (esto ya se ha solucionado en Linux). Él, en un momento dado, se dio cuenta de que la universidad tenía una impresora PostScript (PS), y escribió un código PS a mano para ver lo que era, y disfrutó de impresión de páginas con cuadros de extrañas formas en ellas.
 
Nos lo pasamos muy bien con kreeta, a excepción de los tiempos que se colgaba. Ultrix no era un sistema de alta calidad. Uno de sus defectos es que cada vez que un usuario normal hacía uso de una llamada de sistema al mknod, el kernel se caería en un minuto. Durante la semana de clases del curso de Lenguaje C y programación en Unix, cuando estudiábamos a mknod, kreeta estuvo caído la mayor parte del tiempo.
 
Llegó la Navidad de 1990 y pasó, y para el 5 de enero, Linus había comprado una computadora nueva. Ya que había estado usando una Sinclair QL en casa, pero quería una PC con un CPU Intel 386. Tomó su préstamo de estudiante y se compró una. Tenía la intención de aprender acerca de cómo era que funcionaba la multitarea en el 386. Desafortunadamente, él también recibió una copia del juego de computadora Prince of Persia (creo que era).
 
Meses más tarde, cuando finalmente se aburrió del juego, comenzó en realidad el aprendizaje de programación 386. Un día, cuando yo lo visitaba, me mostró un pequeño programa que había logrado hacer funcionar. Fue una cosa increíble, aunque no parecía gran cosa: un hilo de ejecución escribía en la pantalla As, y el otro escribía Bs, y se podía ver los hilos de ejecución alternandose cuando las As se detenía y comenzaron a aparecer las Bs, y de nuevo un poco más tarde otra vez las As.
 
Ese sorprendente pequeño progama, por supuesto, había sido escrito por Linus mismo en su totalidad. Este no fue una costosa pieza de software comercial escrito por grises asistentes. Esto fue un muy buerno, pero rápido hack escrito por un estudiante. Ese fue el momento donde se hizo evidente para mí que hasta un programador individual puede lograr grandes cosas, y que la tecnología algo aparentemente misteriosamente mágico podría ser bastante simple bajo el capó.
 
Por supuesto, yo no esperaba que el rápido hack de Linus se convertirse en realidad en algo importante, por dos razones. En primer lugar, que sólo se trataba de As y Bs, y eso es demasiado simple para llegar a algo más. En segundo lugar, yo conocía a Linus desde hacía un buen tiempo, y aunque era inteligente, también era perezoso, y algunas veces, cuando estaba borracho, se ponía a discutir sobre cualquier cosa y decía algunas de las cosas más tontas y estúpidas que se pueda uno imaginar a alguien diciendo.
 
Sin embargo, Linus siguió jugando con la multitarea en su 386, y la hizo hacer más, pieza por pieza. Una de las cosas que quería era tener acceso a kreeta a través de un módem. En lugar de utilizar un programa de terminal existente (había un montón), empezó a añadir una simple emulación de terminal a su programa multitarea. Había dos temas: uno era leer el teclado, y escribir los caracteres en el puerto serie, y el otro era leer del puerto serie y escribir los caracteres en la pantalla. Después de haber añadido alguna interpretación de las secuencias de los caracteres de escape del estándar VT-100, él ya tenía un emulador de terminal lo suficientemente bueno para la lectura de Usenet desde casa.
 
Lo que Linus quería, sin embargo, era un equipo Unix en casa. Había oído hablar de Minix, y se había comprado el libro, y sé que llegó a ejecuta Minix en su PC 386. Funcionó, pero de ninguna manera estaba cerca a lo bien que funcionaban las máquinas en la universidad. Así que se mantuvo insistiendo con Minix, y mejorando su propio programa multitarea, y por lo general haciendo hacking.
 
Esa primavera de 1991, conseguí un trabajo paralelo, con el fin de conseguir algo de dinero para que yo pudiera comprar mi propio ordenador. El trabajo consistía en escribir un software GIS en C++. Se me había olvidado la lección de permitir que otros escojan las herramientas por mi. Este trabajo me mantuvo bastante ocupado, así que perdí de vista la mayor parte de lo que Linus hizo aquella primavera y verano. Sin embargo, en un momento, estábamos hablando de varias cosas acerca de la programación, y le estaba explicando algo acerca de cómo escribir mensajes de registro en su proyecto de multitarea. El hubiera tenido funciones tales como 'print_string(" error: i = "); print_int(i); print_string(" n ");' y yo estaba bastante horrorizado. Linus sabía, por supuesto, acerca de printf de la biblioteca estándar de C, que hacía estas cosas mucho más fáciles, pero como él estaba, en esencia, escribiendo un kernel de sistema operativo, la biblioteca estándar no estaba disponible para él, y él no sabía cómo escribir su propio printf.
 
Así que escribí un sprintf para él. Esa fue mi primera contribución al kernel de Linux. Todavía está allí, a pesar de que ha sido transformado ahora en snprintf (y eso es un interfaz mucho mejor, por supuesto). Linus, siendo como era él mismo, pensó que podría mejorar el código y optimizó a mano algunas partes de la misma manera que me hizo una mueca de dolor, pero mientras él estubiera feliz, no me importaba realmente.
 
El programa multitarea de Linus creció, y creció, y ganó características tales como un controlador de disco duro, y la gestión de memoria y un sistema de ficheros. Ya tenía bastantes partes de un kernel como para ejecutar algunos programas en el espacio de usuario, y lo hizo, así que él podía compilar los programas en Minix, y utilizarlos en su propio kernel.
 
En ese momento, verano de 1991, ambos habíamos empezado a publicar en Usenet. En agosto, Linus mencionó su proyecto de kernel en comp.os.minix por primera vez. Más tarde, decidió hacer público el código, y teniendo uno de los administradores de sistemas como amigo puso el código en ftp.funet.fi. Para ello, el proyecto necesitaba un nombre. Linus quería llamarlo Freax, pero Ari Lemmke, el administrador de sistemas de ftp.funet.fi, decidió llamarlo Linux en su lugar. Ustedes puede encontrar el nombre Freax en el Makefile de las primeras versiones de Linux.
 
La primera versión de Linux no se podía instalar, por lo que recuerdo. Linus necesitaba desarrollar una manera de instalar su sistema operativo. Su propia computadora se había convertido poco a poco de una computadora que ejecutaba Minix/386 en una computadora con Linux. Le ofrecí mi computadora, y Linus llegó, y se mantuvo hackeando hasta que pudo instalar Linux en él, a través de un disquete de arranque. El proceso de instalación no fue precisamente fácil, se requería la edición hexadecimal del sector de arranque del disco, pero fue un paso en la dirección correcta.
 
Durante los meses siguientes, Linux ganó interés, y otros empezaron a hackear en él también. Durante las vacaciones de Navidad de 1991, Linus agregó memoria virtual para el kernel, y ese sólo hecho hizo de Linux un sistema masivamente más útil en el mundo real.
 
Durante 1992, la popularidad de Linux creció rápidamente, y un montón de gente que no eran todos ellos hackers del kernel empezó a usarlo. Empezamos un grupo Usenet para los nuestros, alt.os.linux, que finalmente se convirtió en comp.os.linux, y que eventualmente se dividió en un montón de subgrupos. Durante el año 1992, ayudé a iniciar el Proyecto de Documentación de Linux, y más tarde, cuando fue creado comp.os.linux.announce, me convertí en uno de sus moderadores. No obstante, hackear el kernel, aún era un asunto misteriosa magia que me asustaba.
 
Sin embargo, en 1992, Linus fue pensando que se estaba acercando a la liberación de la versión 1.0, por lo que se bombeo el número de versión de 0.12 a 0.95 en un sólo release. Luego vino 0.96, 0.96b, 0.96c, y creo que puede haber existido hasta un 0.96c+2, incluso. En algún momento, creo que en el release 0.97, me cansé de la falta de documentación en el kernel y escribí el primer README que ayudaba a las personas a compilar su propio kernel.
 
En 1993, tanto Linus y yo fuimos contratados por el departamento de CS como profesores asistentes: teníamos que ayudar a otros estudiantes con sus tareas, y revisar que las hayan hecho. Esto significó que tuvimos que compartir una oficina. Esto fue muy bueno para el desarrollo de Linux. Linus tenía un ingreso, por lo que no tenía que preocuparse por eso, y lo más importante, el acceso rápido a Internet, que ayudó un poco, especialmente desde que Linux estaba ganando su red de contactos.
 
Durante un tiempo, Linux no podía hacer bien el manejo de los protocolos de red, por lo que fue baneado (expulsado) de la red universitaria. Eso le dio a Linus una gran motivación para arreglarlo, por supuesto.
 
Una de las cosas que el acceso rápido a Internet hizo posible fue que en tan sólo segundos se podía descargar la mayoría del software, tales como el kernel de Linux. Esto último desmotivó a Linus de hacer copias de seguridad (back-up) o de hacer el control de versiones, excepto haciendo lanzamientos frecuentes de tarball, que se distribuían a través de muchos sitios espejo (mirror sites).
 
El acceso rápido a Interent también permitió que Linus y yo a echaramos un vistazo a las diferentes distribuciones Linux que estaban por todas partes. Por alguna razón, Linus decidió usar Red Hat. Yo pensaba que la "Fuerza" necesitaría un poco de equilibrio, así que opté por Debian. Los dos hemos mantenido nuestra decisiones desde entonces.
 
La aparición de las distribuciones de Linux, por supuesto, fueron una gran ayuda para Linux. Aunque los sistemas son mucho más difíciles de usar que, por ejemplo, los Mac o Windows, por lo menos ya no era necesario usar editores hexadecimales para conseguir que el sistema se instale y arranque. Esto hizo que la base de usuarios fuese mucho mayor, y trajo un montón de gente nueva, algunos de los cuales también participaron en el desarrollo del sistema. Y la bola de nieve creció más rápido.
 
Ser empleado de la universidad también nos ayudan cuando decidimos organizar un evento de lanzamiento para Linux versión 1.0, en 1994, cuando finalmente sucedió. Tuvimos acceso al auditorio, y el jefe del departamento de CS pronunció un discurso, y todo esto nos dio la suficiente credibilidad por lo que había un poco de interés por parte de medios de comunicación. Hubo incluso un equipo de televisión, y las imágenes se encuentra ocasionalmente en varios lugares en el Internet. Durante los discursos, se hizo una compilación ceremonial del kernel 1.0 ejecutándose en segundo plano.
 
En 1997, Linus se graduó y fue contratado por Transmeta, y se mudó a los EE.UU., y yo perdí el contacto directo con él.
 
Para tener una visión de cómo yo veía al mundo Linux de 1998, ver Anécdotas Linux.
 
Entonces, ¿qué es lo que he aprendido durante estos veinte años?
 
Lo más importante, todo el mundo puede hacer una diferencia. Un gran logro, consiste de una serie muy larga de pequeños pasos, y ayuda a tener lo que llamamos sisu (perseverancia) en finés. También ayuda si eres inteligente y sabes lo que estás haciendo, pero recuerda que con 20 años de edad, fue muy estúpido cuando posó semidesnudo estando borracho para unas fotos de cerveza? No tan inteligente, pero jamas se dio por vencido. Puede que ayude ser un poco estúpido e ignorante de la manera correcta de hacer las cosas, por lo que usted piensa "hey, yo puedo hacer eso" en lugar de "debe ser muy difícil de hacer eso"
 
También es más importante, independientemente de la cantidad de perseverancia que se tenga, y lo inteligente que uno sea, el tener la ayuda de los demás. Una revolución requiere de una década, por lo menos, pero no puede ser hecha del todo si es que uno está solo.
 
La libertad es también lo más importante. La libertad de usar, estudiar, compartir, modificar y compartir software modificado, y la libertad de escribir software en primer lugar, son esenciales. Son esenciales no sólo para Linux, pero para el bienestar de todas las personas en el mundo moderno.
 
En los últimos veinte años, hemos visto una revolución. Linux ha sido una parte de ella, pero no la única. El Internet ha sido uno de los facilitadores y el software libre (Open Source) el otro. El núcleo de la revolución ha sido el convertir a las personas de consumidores pasivos, pacientemente viendo la televisión, en creadores, en actores de la comunicación que dan forma al mundo. Esta revolución de la libertad sigue en marcha, por supuesto.
 
Esperemos que Linux y el software libre aún exista para todos nosotros en los próximos veinte años, y continue contribuyendo a la naturaleza de la revolución misma aún más.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.