domingo, 20 de enero de 2013

La historia de GNU HURD

Este articulo fue originalmente escrito para el monográfico de Pánico en el Núcleo 3x07, podcast en el que colaboro. Aprovechando la labor de investigación, esta es una versión modificada, extendida y adaptada para este blog.

Hoy en día tenemos muchas distros para elegir, que no son más que distintas formas de montar un mismo sistema operativo: GNU/Linux.

GNU es el sistema operativo de la Free Software Foundation que comenzó a crear Richard M. Stallman en el año 1983. Por otra parte, Linux es un núcleo (kernel) de sistema operativo creado por Linus B. Torvalds en el año 1991. Juntos hacen un sistema operativo libre y completo, a parte de otras muchas bondades técnicas.

Pero en un principio, la idea era que el núcleo de GNU fuese HURD. Lo que sucedió es que HURD fue un proyecto que duró muchos años y avanzó muy poco, y Linux le quitó el puesto, realmente sin pretenderlo. Entonces, ¿qué pasó con HURD? ¿Por qué nunca llegó a nada? ¿Y cual es su estado a día de hoy? Bien, estas son las preguntas que trato de responder en este artículo.

La búsqueda de un kernel para GNU

Como decíamos al comienzo, GNU se inició en 1983 para crear una alternativa libre a UNIX (recordad que GNU’s not UNIX), reemplazando en un principio cada uno de sus componentes por versiones libres, pero siempre funcionando sobre un UNIX comercial. Cuando GNU tuvo suficientes piezas de software para formar un sistema operativo, el siguiente paso era conseguir un kernel libre para tener un sistema operativo GNU completo. En vez de crearlo de cero, la idea de Richard Stallman era buscar alguno que ya existiera y que fuera software libre, para después simplemente adaptarlo a lo que querían.

En 1986, Richard Stallman optó por el núcleo de TRIX como kernel para GNU. TRIX era un sistema compatible con la versión 7 de UNIX, ya era software libre, y se había desarrollado a finales de los 70 en el MIT (donde Stallman había estado estudiando y trabajando). Pero en menos de un año se dieron cuenta de que necesitaban algo más grande y mejor que TRIX, y Richard Stallman ya tenía el ojo puesto en Mach, desarrollado en la Universidad Carnegie Mellon.

Mach es un microkernel, que a diferencia de un kernel monolítico, es un núcleo que solo ofrece servicios básicos de gestión de memoria, IPC (comunicación entre procesos), y poco más. El resto de servicios tales como drivers de dispositivos o sistemas de ficheros, típicos de un kernel, los debería proporcionar uno o más programas llamados servidores, y que funcionan en espacio de usuario como cualquier otro proceso. Desde el punto de vista de la ingeniería del software y el desarrollo de sistemas operativos, este modelo era mucho mejor que el tradicional, teóricamente, al permitir desarrollar y probar cada servidor de manera independiente.

En la FSF querían usar el modelo de microkernel y servidores para el núcleo de GNU, usando el microkernel Mach y desarrollando ellos los servidores. Era un proyecto muy ambicioso, algo que no se había hecho nunca hasta la fecha. Además pretendía dar libertad al usuario sobre ciertos límites habitualmente impuestos por los administradores de sistemas, como poder usar sus propios sistemas de ficheros, ejecutando sus propios servidores del núcleo sin necesidad de permisos especiales.

Siguiendo con la historia, el desarrollo de Mach iba muy lento, y antes de poder distribuirlo junto con GNU, había que aclarar las condiciones de la licencia con los abogados de la Universidad Carnegie Mellon. Por este motivo todavía se estaban barajando otras posibilidades. TRIX no se había descartado del todo, y entraba en juego el kernel de Sprite, otro sistema operativo desarrollado en la Universidad de Berkeley. Había llegado 1990 y la Free Software Foundation no estaba trabajando todavía en ningún kernel porque Richard Stallman tenía aun la esperanza de poder utilizar el microkernel Mach.

Por fin, en 1991 se llegó a un acuerdo con la Universidad Carnegie Mellon y la FSF se puso a trabajar en Mach: el núcleo de GNU estaba de camino. Richard Stallman le puso el nombre Alix al núcleo, por la novia que tenía en aquel momento, pero Thomas Bushnell, principal desarrollador del núcleo, lo cambió por HURD.

HURD significa “Hird of Unix-Replacing Daemons”, y Hird significa “Hurd of Interfaces Representing Depth”, un doble acrónimo recursivo. Tanto Hird como HURD se pronuncian como la palabra inglesa herd (manada). La traducción seria "Manada de servidores que reemplazan a Unix" para HURD, y "Manada de interfaces que representan profundidad" para Hird.

En 1992, Linus Torvalds publicó el kernel Linux como software libre, aunque en aquel momento solo funcionaba sobre i386 y prácticamente era un hobby. En la FSF se enteraron de la existencia de Linux tiempo después de su creación, pero estaba muy lejos de ser el núcleo que necesitaban (no era portable), y por supuesto mucho más lejos de lo que HURD prometía ser. La FSF lo descartó como un posible kernel para GNU y siguió trabajando en HURD.

El declive de HURD

Como era un proyecto muy complejo, el desarrollo era lento y surgieron muchos problemas. Todas las supuestas ventajas de usar un microkernel con múltiples servidores quedaron ocultas bajo todos los problemas que producía. El rendimiento era pobre debido a las comunicaciones entre los servidores y Mach; además era muy difícil depurar problemas cuando varios servidores de HURD están implicados.

Durante la década de los 90, Linux creció rápidamente, mientras que HURD parecía estancarse. Linux tenía la ventaja de funcionar en ordenadores domésticos, lo que le permitió conseguir muchos seguidores. Empezaron a aparecer las primeras distribuciones, y en 1993 aparecieron Slackware y Debian. Finalmente Linux cubrió el hueco de HURD como el núcleo para GNU, y HURD quedó relegado a un proyecto de poca importancia. El propio Richard Stallman reconoció en 1999 que GNU/Linux es un buen sistema operativo, completo y libre.

Stallman estaba preocupado porque los usuarios de GNU/Linux lo usaran por motivos técnicos, sin ni siquiera conocer los ideales de libertad que hay tras el proyecto GNU. Thomas Bushnell piensa que todo habría sido diferente si Stallman le hubiera dejado utilizar el kernel de 4.4BSD-Lite para crear HURD; Thomas conocía el código, sabía como hacerlo, y cree que habría tenido éxito.

A pesar de todo, HURD todavía continuó su desarrollo. En 2002 HURD se modificó para que funcionase sobre L4, otro microkernel de nueva generación que simplificaba la comunicación entre HURD y el microkernel, pero en 2005 se descartó porque no se adaptaba bien a las características de HURD. En 2006 se inició un proyecto para portarlo al microkernel Coyotos, pero se abandonó la idea antes de escribir ni una sola línea de código por las diferencias en los fundamentos del diseño de ambos proyectos.

Después del 2006, los desarrolladores de HURD llegaron a la conclusión de que utilizar un microkernel existente acabaría nuevamente en desastre porque el diseño del microkernel estaba muy ligado al diseño de todo el sistema. Neal Walfield, desarrollador de HURD, creó el microkernel Viengoos a modo experimental basándose en la experiencia con los anteriores, pero en 2009 dejó el proyecto abandonado por falta de tiempo.

En 2010 Stallman dijo que no era muy optimista con HURD porque requería resolver muchos problemas, y terminar el desarrollo ya no es crucial para GNU porque Linux ya proporciona un kernel libre con muy buen soporte de hardware. Richard Stallman ha reconocido su error al querer usar Mach en su momento, decisión que les hizo perder muchísimo tiempo en negociaciones con la Universidad Carnegie Mellon, y posteriormente ralentizó el desarrollo.

HURD en la actualidad

A día de hoy HURD es usable pero no es apto para producción y todavía sigue utilizando oficialmente el microkernel Mach. Soporta aplicaciones gráficas usando X y es autónomo e independiente, es decir, un sistema GNU/HURD se puede compilar entero sobre un sistema GNU/HURD. Por contra, la interfaz POSIX no está completa y el soporte para dispositivos de caracteres (como tarjetas de sonido) prácticamente no existe.

Pero aunque HURD no está vivo, tampoco está muerto del todo. Si eres un nostálgico, un seguidor de Stallman y de la FSF, o un curioso al que le gusta probar cosas nuevas, todavía puedes probar HURD usando alguna de las distribuciones que lo incluyen:



No hay comentarios:

Publicar un comentario