GNU HURD: Altered visions and lost promise
by Richard Hillesley
The HURD was meant to be the true kernel at the heart of the GNU operating system. The promise behind the HURD was revolutionary – a set of daemons on top of a microkernel that was intended to surpass the performance of the monolithic kernels of traditional Unix systems and in doing so, give greater security, freedom and flexibility to the users – but it has yet to come down to earth.
Work on the GNU operating system began in 1984 and had been seven or eight years in the making by the time that Linux came along.
"If the GNU kernel had been ready last spring," Linus Torvalds wrote to Andy Tanenbaum in January 1992, "I'd not have bothered to even start my project: the fact is that it wasn't and still isn't".
Torvalds had built his monolithic kernel with the GNU tool set, and Linux slotted into the space that the HURD was meant to occupy at the heart of the GNU operating system. Ultimately, the choice of a monolithic kernel, if not the ideal solution, was the quickest route to a working kernel, and the Linux developers had the advantage of the GNU toolchain being in place.
The comment of Ted Ts'o, one of the early Linux developers, was that "Linux is here, and GNU isn't - and people have been working on HURD for a lot longer than Linus has been working on Linux".
The HURD was often talked about and plans were often made, but work on the nuts and bolts of the kernel was too often interrupted by altered visions and lost promise. The Linux developers were happy to work around their own mistakes to get something working. The HURD developers wanted to get it right in the first place, but may seem to have lost sight of the promise of the HURD in their unending search for the perfect kernel.
Some of my cities have fallen
Richard Stallman recounts that when he founded the GNU project in September 1983, people said, "Oh, this is an infinitely hard job; you can't possibly write a whole system like Unix. How can we possibly do that much? It would be nice, but it's just hopeless".
Stallman's response was that he was going to do it anyway. "This is where I am great. I am great at being very, very stubborn and ignoring all sorts of reasons why you should change your goal, reasons that many other people will be susceptible to".
Free software didn't have a community as it does now, and the ideas at its heart were still untried and new. In the early days Stallman was often isolated, as he observes in his history of the GNU project.
"I have done most of my work while anxious about whether I could do the job, and unsure that it would be enough to achieve the goal if I did. But I tried anyway, because there was no one but me between the enemy and my city. Surprising myself, I have sometimes succeeded".
Before a kernel could come into being, the bits and pieces that made the kernel possible had to be written - the editors and compilers, bash, make, autoconf, emacs, gcc and all the others. The sale of the software paid for the other bits to be written. The story of their evolution, and Stallman's experience of the obstacles he encountered, especially during the development of GNU Emacs, led to a hardening of the philosophical concepts behind free software and their encapsulation in the GPL, which didn't come into being until 1989.
By then the tools, instruments and philosophy of free software were falling into place. The kernel was to be the last part of the jigsaw.
Free with a V
In the beginning it was sufficient that the kernel was free, because the GNU project lacked the resources to build everything from scratch, so when a compiler had to be written, Stallman went to the obvious sources to find one that was already there.
"Shortly before beginning the GNU project," Stallman later wrote, "I heard about the Free University Compiler Kit, also known as VUCK. (The Dutch word for "free" is written with a V.)..."
"I wrote to its author asking if GNU could use it. He responded derisively, stating that the university was free but the compiler was not. I therefore decided that my first program for the GNU project would be a multi-language, multi-platform compiler," which evolved into gcc.
The concept for GNU/HURD evolved in much the same way. Stallman looked first for a ready made kernel that was in the public domain, and an obvious starting place was Trix, which had been developed on Stallman's homeground at MIT.