GNU Hurd Task List Version 1.23.  Last updated 25 April 2006.

If you would like to work on one of these, please contact
bug-hurd@gnu.org.  It's important that you let us know what's being
worked on, because someone else might also be interested, and we should
coordinate work.

Items that we want done with more priority are marked with !!!.


Some of these items might be outdated.  If someone feels like triaging
this list, please go ahead.

These days, we tend to use the Savannah task tracker,
<URL:http://savannah.gnu.org/task/?group=hurd>.


General system work

  * Compile all the free programs you can find to help us fix bugs in
  the system, and to submit necessary ports to the maintainers of
  those programs.

  * Do whatever magic is necessary for Perl to take advantage of all
  the nifty Hurd features that Unix doesn't have.


GNU Mach Work

Please discuss proposed microkernel work with thomas@gnu.org.

  * Integrate stream device support so that the X server works
  out-of-the-box. 

!!!
 * Mach serial drivers support only a small subset of the
   available possibilities in the Posix c_cflag termios field.  Fix
   this, by adding a new device_set_status call that sets the whole
   thing and not just the old limited possibilities.

!!!
  * A replacement for MiG that understands C .h files.

!!!
  * Mach needs to provide support for task virtual timers similar
  in functionality to the Unix ITIMER_PROF and ITIMER_VIRTUAL timers.

!!!
  * Mach needs to make switches from MEMORY_OBJECT_COPY_DELAY to
  MEMORY_OBJECT_COPY_NONE have the effect of immediately completing any
  delayed copies.

  * Mach needs a facility to automatically send task and thread
  status on task/thread exit to a port that can only be changed by
  a privileged user; this would be used to implement process
  accounting.

  * Mach needs a facility to find out what task is the parent of
  a given task.

  * Mach needs a facility to find out which pages of a task's
  address space are in core to implement Unix's mincore call.

  * Mach needs a facility to do msync.

  * GNU Mach needs the OSF Mach vm_remap call.

  * Mach needs a replacement for MEMORY_OBJECT_COPY_CALL that
  works at least for the cases needed in ordinary files.  (Write
  thomas if you want to know what the problem is and some ideas about
  how to solve it.)

!!!
  * Mach needs proxy memory objects.  (thomas can tell you what
  these are and why they are important.)

  * Mach needs a way to do per-task resource counters that are
  accessible to servers called by the task.

  * Mach needs facilities to implement resource limits of various sorts.

  * Mach needs a way to have a thread's CPU time statistics
  include time spent by servers on its behalf.  [This has been done
  for the migrating-threads version of Mach; talk to thomas before starting
  work on it.]

  * Of course, free ports are always necessary to machines that don't
  already have free ports.

  * Much work can be done doing research in how to improve Mach VM
  performance and timesharing scheduling policy.

  * Mach needs facilities to get a list of all the devices which
  can be device_open'd, as well as to get the type of a device.

  * A way to have the kernel send a message on some designated port
  every time a new task is started.

  * OSF has enhanced the exception_raise protocol to include thread_state
    information.  This code should be merged into the kernel; OSF people
    have said their could could be released to the public (but it has not
    appeared).

  * Add an anonymous swap allocation statistic to the task info structure.


Hurd work (these are brief descriptions; thomas can give more information):

  * Make the thread timeout in libports/manage-multithread.c work.

  * Make thread death in C threads really free resources.

!!!
  * An RPC trace program to aid debugging.  Look at utils/rpctrace.c
  for starters and ask roland for more info.

  * Programs that use utmp need to be changed to use /utmp and utmp.defs.

  * We need some standard translators for /utmp nodes; most importantly
  one for ordinary terminals (set up by login) and one for X displays
  (set up by xdm).

!!!
  * We need some existing shell programs changed to do Hurd things:
  like ls, tar, cpio, etc.  Some of this work has already been
  done, but more is still needed.

!!!
  * Extend bash to call shell functions when various Hurdish async
  events happen.

  * Handy shell programs to send msgport msgs, and change default init
    ports and ints.

  * Shadow directory translators.

  * A system for write, send, talkd and so forth to bleep users;
  this should be integrated with the utmp replacement above.

  * A filesystem for /tmp that uses virtual memory instead of disk.
  (Roland has some ideas about this.)

  * Filesystem implementations (using libdiskfs) for other popular
  formats.  Importantly, MSDOS FAT format.

  * A fancy terminal driver that uses readline and supports
  detach/attach, color, and virtual consoles.

!!!
  * A PPP interface.  This will require some restructuring of pfinet.

  * A notepad program to hold and keep track of ports for shell scripts.



C library work.  See roland@gnu.org if you are interested in working
on anything in the C library.

  * Useful response to SIGINFO.

  * Get pthreads working and integrated.
