If someone of you is lurking around here and would like to contribute, but
feels she / he could do so better under formal mentoring: please
contact us, or just speak up at one of the regular IRC
meetings!

We also have a list of open issues and one for more elaborate project
ideas - the latter originally written for the
Google Summer of Code, but not exclusively. Even just
investigating open issues, without being able to fix them, can be useful,
because a issue that has been tracked down often becomes obvious to address for
people who know the stuff -- but these people typically don't have the time
that is needed to track down the issues.

Improve GNU Hurd Running on GNU Mach

This system has mostly been designed and implemented
in the '90s. It works and is usable.
For example, these web pages have been rendered on a GNU/Hurd system.

You can try it out for yourself: for getting access, installing
Debian GNU/Hurd will probably be the easiest and most
feature-complete solution. If you don't have spare hardware to use for doing
so, you can also get a
shell account on a public Hurd machine. Depending on the
things you're going to work on (and on your internet connection), this may be
an easy way of getting used to Hurd systems. Installing in a virtual machine
is another possibility, see the page about
running a Hurd system for the full story.
In particular, running a Debian GNU/Hurd QEMU image may
be a viable alternative.

Then you can either play around and eventually strive to do something
useful or -- if you want -- ask us to assign something to you, depending
on the skills you have and the resources you intend to invest.

Please spend some time with thinking about the items in this questionnaire.

Before you can significantly contribute to the operating system itself, you'll
need to take some time to learn about the system, for example:
microkernels for beginners, Mach's
concepts, Hurd's concepts, the
critique. Until you can understand and do the basic exercises
listed there, you won't be able to significantly contribute to the Hurd.

In terms of building and hacking on software, the easiest way to avoid having to
understand the whole picture from the start is install the Debian distribution,
and patch over the Debian source code. Installing from upstream source is much
more complexe since you would need to know which piece fits where. Building and
installing patched packages is much more simple.

Add a futex kernel trap to GNU Mach.
This can be useful for nicer locking
primitives, including inter-process primitives. vm_allocate can be used as an
example in the gnumach source tree for how to add a kernel trap. GNU Savannah task #6231

Add NX protection support to GNU Mach.

Write a partfs translator, to which one gives a disk image, and
which exposes the partitions of the disk image, using parted, and
the parted-based storeio (settrans -c foos1 /hurd/storeio -T typed
part:1:file:/home/samy/tmp/foo). This would be libnetfs-based.

Debian GNU/Hurd

Along with the official Debian "jessie" release (but not as an
official Debian release), in April 2015 the Debian
GNU/Hurd team released Debian GNU/Hurd
2015.
There is a goal of getting Debian GNU/Hurd into shape for a technology
preview for integration as a proper Debian release candidate.

Run it: qemu-kvm -m 512 -no-kvm-irqchip -drive cache=writeback,file=debian-hurd.img # …irq… is a currently necessary fix due to some changes in Linux. Optionally use --curses to keep your keyboard layout. If need be modprobe kvm_amd, kvm intel and kvm to get kvm support (which is much, much faster). See also: kvm FAQ.

For shutting down, use reboot, then press c in grub and issue halt (to avoid filesystem corruption). Adding --no-reboot to the qemu line should help, too.

Design / Research: GNU Hurd on a Modern Microkernel

Developers have identified a number of problem with the Hurd on
Mach system. Problems, that can not easily be fixed by bug-fixing the
existing code base, but which require design changes -- deep going ones
actually.

As such systems (as the desired one) are not in common use, but are -- if at
all -- research projects, this new Hurd on a modern microkernel project
itself is more a research project than a sit down and implement/code/hack
project.

If you're interested in contributing in this area, knowing the Hurd on Mach
system (see above) nevertheless is a
prerequisite. At least have a deep look at the documentation pointers. Also
read through the HurdNG section.

Please send email to the l4-hurd mailing list for discussing
this post-Mach system design.

Documentation

Technical Writer

Our hackers (programmers) typically do what their kind always does: they code.
What they don't like too much is documenting their wonderful achievements. On
the other hand, there are people (you?) who enjoy documenting technical
matters, so don't hesitate to contact us if technical documentation shall
be your contribution to GNU Hurd development.

A good start is probably to just start using the Hurd, and play with
the translators. In the process you will probably find that some of the
documentations are missing some details, are outdated, etc. That is were you can
start contributing for instance.

As an advice: do not start yet another documentation from scratch. There are
already a lot of tutorials in the wilds, and they are almost all completely
outdated. Rather contribute to the existing official documentation: this wiki,
the documentation in the Hurd source, the Debian Hurd port pages.

Web Pages

Final Words -- Difficulties

Please note that doing substantial contributions to a project as big and as
encompassing as the GNU Hurd is not a trivial task. For working on the GNU
Hurd's inner guts and getting useful work done, you have to plan for a
many-months learning experience which will need sufficient self-motivation.
Working on an advanced operating system kernel isn't something you can do in a
few free minutes -- even less so without any previous kernel hacking
experience.

Likewise, the Linux kernel maintainers are stating the exactly same
difficulties, which is well presented by Jonathan Corbet in his 2010 Linux
Kernel Summit report for the opening sessions about welcoming of
newcomers.

But of course, none of this is meant to be dismissive, or to scare you away --
on the contrary: just start
using the GNU Hurd, and either notice yourself what's not
working as expected, or have a look at one of the Open Issues, and we shall
see if you'll evolve to be the next core Hurd hacker!
You'll just have to get excited about it!

Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled GNU Free Documentation
License.