## GNU Mach Revival Project
This page is a place to keep track of all those things that we need to improve in GNU Mach, so that it is a reliable microkernel for The Hurd, both in terms of stability and performance. If you find anything missing here, please feel free to add a entry with a short description.
If you want to help with any of the task (thanks!), please send a mail to the mailing list stating what task you wish to work on, so that no duplicate efforts end up.
**_Task List_**
* Clean up the Code. (Assigned to: **Team Leader:** _Gianluca Guida (gianluca)_, **Hackers:** _Alfredo Beaumont (ziberpunk)_, _We need **YOU** here!_)
* Remove all dead files from the GNU Mach source tree.
* Restructure the tree in a sane way.
* Remove dead functions/variables/etc from source files.
* Rewrite ugly code.
* Update the core architecture and drivers. (Assigned to: **Team Leader:** _Gianluca Guida (gianluca)_, **Hackers:** _Alfredo Beaumont (ziberpunk)_, _Sergio Lopez (koro)_, _We need **YOU** here!_)
* Check what NetBSD, FreeBSD and Linux do with their host specific code (i486, PPC, Sparc, ...). And if it might be wise to take that and use it in GNU Mach. There is no need to worry about purely internal API's, but the external ones shouldn't require any major changes.
* Write a list of all functions provided by the host dependant code in GNU Mach that gets used in the non-host specific code (kernel, IPC and VM).
* Once we have decided what the new internal API should look like, make a list of the new API and the old one, and try to make things as compatible as possible, but not at the expense of anything.
* Implement Migrating Threads. (Assigned to: _Sergio Lopez (koro)_)
* Migrating Threads (MT) could improve IPC performance and making easier the work of the scheduler. For more information, check this
* Improve the external pagers interface. (Assigned to: _We need **YOU** here!_)
* Making this interface synchronous should improve I/O performance significantly, without (almost) any drawbacks (we also get some advantage from MT's).
* Implement more paging eviction policies, so they fit better with usual behaviour of the pagers.
* Implement resource accounting for external pagers.
* VM. (Assigned to: _We need **YOU** here!_)
* Clean up the mess.
* Provide a fast way to read/write from/to a memory object.
* Simplify/normalise the code.
* Simplify the IPC Semantics. (Assigned to: _We need **YOU** here!_)
* There are a lot of things in GNU Mach's IPC that we don't need. Track down those things, and get rid of them without requiring many changes in the Hurd (the changes will affect MiG, but that is OK).
* Temporary mappings for Client-Server memory transfers. (Assigned to: _We need **YOU** here!_)
* Extend Mach's IPC to provide some kind of object which can represent a range of memory that can temporarily be mapped into the servers address space for sending/receiving data. This would allow us to avoid excessive memory copies.
* Find a new way to work with unaligned memory.
* GDB remote debugging support (Assigned to: _Alfred M. Szmidt (ams)_)
* Implement support for GDB debugging via serial line and/or network. Maybe this can be done together with the host-specific work above.
**_Wish List_**
* Interface for userspace non-critical drivers.
* Sound Support ;-)
-- [[Main/SergioLopez]] - 20 Dec 2005 (Corrections by Alfred M. Szmidt)