[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="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|/fdl]]."]]"""]] So, you are interested in contributing to the GNU Hurd project? Welcome! Every single contribution is very much encouraged! There are various ways of contributing, read on about contributing to... [[!toc levels=3]] 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 speak up at one of the [[regular_IRC_meetings|IRC#regular_meetings]]! Generally we also have a list of [[open_issues]] and one for [[project_ideas|community/gsoc/project_ideas]] - the latter written for the Google Summer of Code. # Documentation ## These Web Pages Please read about [[how_to_contribute_to_these_web_pages|web_pages]]. # The System Itself There are essential two kinds of Hurd system designs. ## Hurd on Mach For one there's the implementation of the *[[Hurd]] running on the [[GNU_Mach_microkernel|microkernel/mach/gnumach]]*. This is what is commonly meant when people are talking about GNU/Hurd systems. This system has mostly been designed and implemented [[in the '90s|history]]. 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|hurd/running/debian]] 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|public_hurd_boxen]]. 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|hurd/running]] for the full story. Then you can either play around and eventually strive to do something useful or -- if you want -- [[ask_us|contact_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, take some time to learn about the system, e.g., [[microkernels_for_beginners|microkernel/for_beginners]]. Until you can do the basic exercises listed there, you won't be able to significantly contribute to the Hurd. For more reading resources, please see these web pages, for example, [[Hurd_documentation|hurd/documentation]] and [[Mach_documentation|microkernel/mach/documentation]] for links to a bunch of documents. ### Porting Packages Debian is currently the Hurd distribution of choice among Hurd users and developers. Here is a [[list_of_Debian_packages_that_need_porting|hurd/running/debian/porting]]. You can also just [[install_Debian_GNU/Hurd|hurd/running/debian]] and find what doesn't work or suit you and try to improve that. ### Open Issues Here is a list of [[open_issues]]. ## Hurd on a modern microkernel Developers [[have_identified|hurd/critique]] 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 nevertheless is a prerequisite. At least have a deep look at the documentation pointers given in the previous section. Also read through the [[HurdNG|hurd/ng]] section. Please send email to the [[mailing lists/l4-hurd]] mailing list for discussing this post-Mach system design. # 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*](http://lwn.net/Articles/412639/). But of course, none of this is meant to be dismissive, so just [[start using|hurd/running]] 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!