The GNU Hurd is a set of servers, libraries and interfaces, running on top of a micro kernel, and providing the services which used to be inside the kernel.
The Hurd is the core of the GNU project. Every program running on the GNU system will rely upon the Hurd to perform most of all operating system related tasks. The philosophy of the GNU project, as defined in the GNU manifesto, was the philosophy leading to the Hurd design. The goal of the GNU project is to give back the freedom to the users of computer systems; but not only at the license level. Every technical limitation which is not strictly necessary is a reduction of user freedom. The fact that non-privilegied user in a Unix system cannot mount an ISO image (setuid does not count), or test his own file system implementation, is a reduction of user freedom. With its highly modular design, the Hurd gives back some additional freedom to the users. This is a major idea of the whole GNU project, displayed even in the name of the project: we want to stay compatible with Unix programs as much as possible, but we want to overthrow as much limitations as we can.
Interfaces between components of the GNU Hurd were clearly defined and fixed as soon as possible during the development. Fixed interfaces are very important to allow users to design their own replacement of some part of the system, without breaking the other parts. It also suppress compatibility problems.
Interfaces of the GNU Hurd were designed to fill the flaws of Unix systems. For example, there is no (standard) way in a Unix system to create a file with no name. The commonly used method is to create it in /tmp, and then unlink it without closing the file descriptor. The kernel will wait for the file descriptor to be closed before deleting it. But during a short amount of time, the file has a name, and this causes many security holes. Another example is notification: the most common way to ask the kernel of Unix system to be informed when a file is changed (SIGIO) is non-portable, and not very flexible (in recent Unix kernels, other ways can exist, but still lack flexibility).
All this is possible, because we have the experience of Unices and many other operating systems.
1983 | Richard Stallman starts the GNU project |
1988 | Mach 3 is chosen as micro-kernel |
1991 | Mach 3 is released under a Free license |
1991 | Thomas Bushnell, BSG, founds the Hurd |
1994 | GNU/Hurd boots for the first time |
1997 | The Hurd version 0.2 is released |
1998 | Marcus Brinkmann creates Debian GNU/Hurd |
2002 | Debian GNU/Hurd has 4 CDs |
2002 | Port of the Hurd to L4 is started |
2002 | POSIX threads are now supported |
2003 | L4Ka::Pistachio 0.1 is released |
2003 | Ext2fs without the 2GB limit in alpha stage |
2004 | Ext2fs without the 2gb limit reach release candidate |
2005 | Ext2fs without the 2gb in Debian GNU/Hurd |
2005 | First program running on L4Hurd |
2005 | Initial Gnome port |