-*- Text -*-

If you're ``just'' looking for something to work on, have a look at the
  * bug list, <http://savannah.gnu.org/bugs/?group=hurd> and
  * task list, <http://savannah.gnu.org/task/?group=hurd>.

HOW TO CONTRIBUTE LARGER CHUNKS
===============================

If you want to help the maintainers to be quickly able to evaluate and
check in your contribution, please try to follow these suggestions:

Try to mark in the code stuff (i.e. whole functions, parts of header
files) that you've just copied (and then perhaps modified; also note that
briefly) from somewhere else and stuff that you've actually written
yourself.  Either do that by simply writing a ChangeLog in parallel (an
informal one is fine as well) or put notes in the modified / imported
files.  The one who will be checking in your patches will then probably
remove most of these notes, as soon as everything is written down in the
real ChangeLog.  Logging your changes right from the beginning makes it
much easier for the maintainers to track down where which chunk is coming
from, so that they can be handled appropriately.

HISTORY
=======

`gnumach-1-branch-before_removing_unused_and_unsupported_code' was tagged
on 2006-02-20.  After creating that tag, code for unused and unsupported
device driver for ISA cards and a good deal of i386 dependent, also
unused and unsupported code was removed.

On 2006-03-19, support was removed for FIPC, which only ever was used
within the native Mach NE2000 NIC device driver, see
<http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#FIPC>.
<http://lists.gnu.org/archive/html/bug-hurd/2006-01/msg00162.html>.

Support for NORMA was removed on 2006-03-20.
<http://lists.gnu.org/archive/html/bug-hurd/2006-03/msg00007.html>.

Support for PS2, i860, iPSC 386/860 and MB1/MB2/EXL was removed on
2006-11-05.
<http://lists.gnu.org/archive/html/bug-hurd/2006-11/msg00001.html>.

Support for the old ipc interface, MACH_IPC_COMPAT, was removed on 2006-12-03.
<http://savannah.gnu.org/patch/?5017>.

Support for building without CONTINUATIONS was removed on 2006-12-03.
<http://savannah.gnu.org/patch/?5019>.

Support for FP emulation was removed on 2006-12-13.
<http://lists.gnu.org/archive/html/bug-hurd/2006-12/msg00031.html>.

Support for Olivetti XP7 & XP9 was removed on 2007-01-02.
<http://lists.gnu.org/archive/html/bug-hurd/2006-12/msg00107.html>.

Support for the `iopl' device and some i/o emulation code (that might be useful
for DOSEMU) was removed on 2007-04-02.
<http://lists.gnu.org/archive/html/bug-hurd/2007-04/msg00002.html>.


Be sure to check the ChangeLog and have a look at the repository at that states
if you want to work on those parts of GNU Mach.

LAYOUT OF THE SOURCE TREE (very incomplete)

  * include/ 

[TODO: Check.]

    ... is mainly for installed header and definition files, but it also holds
    pseudo-clones of C library headers, which don't get installed because the C
    library has better versions.  In that category are <mach/error.h>,
    <mach/mach_traps.h>, <mach/mig_support.h>, <sys/ioctl.h>, <sys/reboot.h>,
    <sys/time.h>, <sys/types.h>, <alloca.h> and <string.h>.  By putting such
    headers into there, the relevant kernel code is easier to understand,
    because the user will expect that the file named <alloca.h> or
    <sys/types.h> does more or less what the normal C library file does, and
    calling those <kern/alloca.h> or <kern/types.h> would make the reader have
    to wonder or remember what they are.  The directory is, essentially, a
    special `/usr/include' for use by the kernel itself when compiling.  It
    only should get things which belong in `/usr/include'.  The reason for
    <alloca.h> and <sys/types.h> is because those are files found in
    `/usr/include', even if on an actual installed system the versions in
    `/usr/include' are provided by a different package.
