aboutsummaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO327
1 files changed, 327 insertions, 0 deletions
diff --git a/TODO b/TODO
new file mode 100644
index 00000000..562a99fc
--- /dev/null
+++ b/TODO
@@ -0,0 +1,327 @@
+-*- Mode: Outline -*-
+
+Before working on anything in this file, it's very important that you
+make contact with the core Hurd developers. Things herein might be
+slightly out of date or otherwise not easy to understand at first
+glance. So write to <bug-hurd@gnu.org> first.
+
+Priorities:
+ Check the end of this file for a task list referring to the next
+ public release.
+
+ Reported bugs generally have top priority.
+ Non-reported and non-encountered bugs (things we know don't work,
+ but don't really impede things) have lower priority.
+ Things in this file are ranked with one to three !; the more, the
+ higher priority.
+
+See `tasks', the exported task list.
+
+* Contents of =pending-changes.
+* Make sure all the pieces of the Hurd have adequate version stuff. !
+* syslogify everything !
+* fix root dependencies in filesystem, network, etc. !
+* Profile things !!
+* Make for easier installation !
+* Write coding standards suggestions for Hurd
+* Implement file_fetch_dir
+* Conform to coding standards (esp. CFLAGS setting)
+* Internationalization !
+* Use hostid in /etc/rc and mention it in installation instructions,
+ when suitable sh-utils is released.
+* "user-friendly" naming scheme for /dev
+
+* Fix emacs/src/unexelf.c to deal with occasional lack of mmap !
+
+* Currently libshouldbeinlibc (idvec, etc) and password.defs and login
+ all think there is one user per-uid, and that ain't necessarily so.
+ Needs fixed. !
+
+* Libraries
+
+** general:
+*** implement all the pathconf things from Posix.1 right.
+*** implement an soversion and symbol-versioning scheme similar to libc's.
+
+** libmom work:
+*** Hack interface definitions so that args are mom-ish
+*** Change libports and libpager to be mom-ish
+*** Change servers to be mom-ish
+
+** libc:
+*** (once vm_remap exists) implement mremap
+*** when a session leader _exits, it should SIGHUP, TIOCDRAIN, and revoke. !!!
+ [it is still under discussion exactly where to address this,
+ so don't do it in libc yet]
+*** convert to use libio (note exec needs conversion too) !!!
+*** Version of tmpfile that takes a directory
+*** Hurd versions of tmpfile that don't create transient files !
+*** flink
+*** make sure profiling works !!
+*** add chflags flags to appropriate header(s)
+*** declare reboot() somewhere.
+*** extra commas in enums in socket.h and errnos.h.
+*** many functions that are syscalls in unix can potentially leak send rights
+ if a signal handler longjmp's out past them. They should probably all
+ be using HURD_CRITICAL_SECTION to avoid this. !!
+** items relocated from libc/hurd/STATUS:
+*** We are not sure about possible races between setpgrp (A, pgrp) from
+ process B vs process A receiving proc_newids.
+*** does sigaltstack/sigstack really work?
+*** hurdmalloc kludge
+*** think more about environment variable use viz security
+*** SIGINFO handler?
+*** itimers could be implemented better
+*** mmap cannot do MAP_NOEXTEND.
+*** unimplemented calls(?)
+ acct
+ getfh
+ getfsstat
+ madvise
+ mincore
+ mount
+ msync
+ recvmsg
+ sendmsg
+ sstk
+ swapon
+ unmount
+
+
+** libports:
+*** Get rid of general `uninibited-rpcs' mechanism in libports, & just
+ special-case interrupt_operation. !
+
+** libstore:
+*** Add lock protocol for mutable stores.
+
+** libfsserver/libnetfs:
+*** convert libnetfs to libfsserver
+
+** libnetfs
+*** Support --readonly, --writable, and --update !
+*** Implement dir_reparent.
+
+** libpager:
+*** Put user-defined fns into a callback struct passed to pager_create. !
+*** Make libpager paging interface able to read/write multiple pages at once.
+*** Remove pagers from portset if there are too many incoming requests to
+ avoid forking too many threads. !
+*** flush functions don't actually force pending delayed copies. (and in
+ fact, they seem to block if a delayed copy is wired down) !
+
+** libshouldbeinlibc:
+*** Merge contents of libshouldbeinlibc that belong there into libc.
+ Rename the rest to libhurdutil or somesuch.
+*** argp: find some way to flag certain long options as only matching
+ exactly (add this as OPT_EXACT); use this on the built in option
+ --program-name.
+*** Rewrite argp to do its own parsing. Preferably, split up libc's
+ getopt into more primitive functions, which both argp and getopt
+ can call.
+
+** libdiskfs
+*** file_chflags does not do proper permission checking (non-root isn't
+ supposed to be able to change the low bits)
+*** Add the short-circuited-but-not-builtin translator startup code from
+ dir-lookup to fsys_getroot. Compare and match carefully these two
+ routines and then share common code.
+*** Implement Posix O_SYNC, O_DSYNC, and O_RSYNC under the right
+ names; change libc header to match current Posix.
+*** Handle dead name notifications on execserver ports. !
+*** Deal correctly with setting the translators on /servers/exec.
+*** Implement file_notice_changes.
+*** Implement async I/O. !
+*** Think of a way to have when-to-sync-nodes be more flexible so it can
+ be done right for each format.
+*** Check when-to-sync-nodes carefully against BSD 4.4 ufs implementation. !
+*** Provide for MNT_NODEV, etc. !
+*** Implement io_restrict_auth correctly. !
+*** Use off_t correctly. !!
+*** Add a consistent message printing facility for filesystems to use
+ (syslog, but takes special care when the root file system?). !!
+*** Some of diskfs_readonly_changed in ufs/ext2fs should be in generic
+ routines. !
+*** diskfs_default_sync_interval should not be changed, keeping the option
+ setting elsewhere, so that diskfs_append_std_options can elide the
+ --sync=N option when it reflects the default setting.
+
+** libfshelp
+*** Put functions here to deal with directory and file change notifications !!!
+*** Translator startup should provide a more useful stdin/stdout than nothing !
+
+** libtrivfs
+*** Allow for read/write/exec to be passed down.
+*** Implement file_exec when appropriate. !!
+*** Provide for the visible owner, etc., to be held in command-line args
+ instead of the underlying node, when it's important. !!
+
+** libps
+*** Add option to print values times with a delay,
+ and to print values relative to last printing.
+*** Whizzier columnation (autosizing?)
+*** Make getters more robust.
+
+* Servers
+** write default pager !!
+** Implement goaway in all the servers that don't already have it. !!
+** (init) sleep on spinning gettys !
+** Add calls to various servers to return interesting statistical information.
+** Test new-fifo & make it fifo. !
+** Login/utmp?
+** fifos are flaky. ?? Details ??
+** magic: `ls -ld /dev/fd' and `test -d /dev/fd' should work.
+** implement io_revoke for things in trans/ that need it. !
+
+** pflocal
+*** make peer addresses work?
+*** implement io_revoke on sockets !
+
+** term:
+*** find a way to reduce duplicate signals from repeated VINTR input
+*** when a session leader exits, netbsd SIGHUP's the terminal, drains output,
+ and then revokes it. (See Posix.1-1996, p. 184, l. 64-68.)
+*** when a session leader sets the ospeed to 0, netbsd SIGHUP's the termianl.
+*** enforce session leader / controlling terminal uniqueness rules. !
+ (1: if a terminal is matched to a session, then another session
+ can't make it its controlling terminal;
+ 2: tcsetpgrp to a pgrp that's not in the right sessions must
+ fail;
+ 3: when a session leader exits, the association has to be torn
+ down; bsd does SIGHUP + drain + revoke.)
+
+** exec:
+*** convert stdio magic to use libio (when libc converts) !!!
+
+** proc:
+*** Add a version of proc_wait usable by non-parent processes, and use it in
+ gdb; maybe just a flag WNOREAP to proc_wait that doesn't reap and allows
+ anyone to use it. !!
+*** Add proc_get_tty() [returns tty opened with no flags], so that ps can be
+ non-suid. !
+*** add timeouts to all the msg_* calls proc makes. !
+
+** pfinet
+*** Allow multiple pfinets to arp on the same ethernet interface for different
+ IP addresses. !!
+*** Diagnose why shutdown doesn't close TCP channels properly or reliably. !
+*** select for read on a UDP socket seems never to return. !!!
+*** Undefined functions at the end of pfinet/io-ops.c. !!
+*** Implement io_revoke on sockets. !
+
+** nfs
+*** Implement async I/O !!
+*** Finish work to turn on paging. !!
+*** Implement TCP nfs. !
+*** Implement V3 nfs.
+*** Implement nqnfs. !
+*** Add Hurd-specific calls. !!
+*** errors in mount_root should get reflected more usefully to users. !
+
+** storeio:
+*** Make a server (/servers/storeio?) to share multiple storeio nodes
+*** Get rid of global DEVICE variable and use the trivfs control hack
+*** Serverify, ala new-fifo.
+*** implement io_revoke !
+
+** ufs:
+*** Implement clustering, a la 4.4-lite sys/kern/vfs_cluster.c.
+*** Make file_get_storage_info work for files with indirect blocks. !!
+*** Optimizations:
+ pager.c/inode.c/libdiskfs count pager refs separately and then save
+ mappings in _diskfs_rdwr_internal and dir.c !
+*** Problems with DT_* hack: !
+**** Fix multiple-links DT_* bug.
+**** Deal with change of type which should update directory.
+**** Type is also wrong for translated nodes...
+*** Roland sez: ENOSPC detection flaky in ufs. Try write of >page,
+ non-page-multiple, when free space allows write size but not
+ round_page (write size).
+
+** ext2fs
+*** Try to write directories with 512-byte record boundaries. !!
+*** Maybe file_pager_write_page should be able to accurately reproduce holes
+*** Add byte-swapping. !!
+*** If the target of a symlink is the empty string, stat seems to spin forever !!!
+
+** crash
+*** Write core files. !!
+
+** arla -- port it
+
+
+* Utilities
+** Make id, et. al. work with no/multiple uids. !!!
+** Make things work with the `nobody' mode bits: chmod, ls, ... !
+** Make things work with filesystem extensions (author, etc.): ls!!!
+** Make things work better with translators, e.g., tar... !!!
+** Fix bash to turn on interrupts around syscalls more generally,
+ especially chdir. !!
+** talk doesn't work !!
+** login: Make --retry work correctly when invoked via a suid shell
+ script by other than root (it doesn't now if the script specifies
+ --retry="$0" because the exec server will use /dev/fd/N for name,
+ and child_lookup() doesn't supply more than fds 0-2). !!
+** Make w use utmp's tty instead of the process's
+
+** fsck:
+*** fsck should use fsys_get_options returned device instead of /etc/fstab !!
+
+** settrans:
+*** needs an option to make the active go away without using goaway. !
+*** -P should print the pid of the translator before pausing !
+
+** ps:
+*** ps should timeout quickly (one second?) on non-responsive message ports. !
+*** help displays for: stat letters, format specs.
+*** --match option?
+*** fetch and print task (and thread?) startup times.
+
+** gdb:
+*** Add various mach convenience features (vminfo, &c). !!
+*** Be even more vigilant about noticing new threads. In particular:
+**** For mach-indep thread commands, before validating against
+ internal thread list. !!!
+*** read core files !!
+*** Gdb doesn't work right if it doesn't have permission to frob the
+ inferior process (for instance, if it's a set[ug]id program), but
+ doesn't give a meaningful error message. Try `break main' in /bin/login.
+
+** nfsd
+*** Implement TCP nfs. !
+*** Implement V3 nfs. !
+*** Implement nqnfs. !
+*** Add Hurd-specific calls. !!
+*** writes don't seem to work properly !!!
+*** Report statfs correctly. !!
+
+* Mach:
+** Have some analogue of /dev/klog that syslogd can get kernel messages from
+ (maybe there is already?); the boot file system, and other people
+ deeming
+ it too risk to attempt to contact syslogd can use it too? !
+** Have the at-close actions on devices be more directly controllable
+ by users by deleting the current at-close actions and replacing
+ them with suitable device_set_status calls.
+** Specify and implement vm_remap.
+
+======
+
+???
+ [I'm not sure of the preconditions for this; it usually seems to happen to
+ new login shells (but not often enough to really get a handle on it).
+ If the command is repeated, then it usually works correctly.]
+ login> ps aux|head
+ bash: /bin/head: (ipc/send) invalid msg-header
+ Broken pipe
+ [bash only seems to print error messages in this particular format if an
+ execve fails]
+
+ I've also had it happen in shells that have been around a while. -thomas
+
+ I just saw it happen in make output; there the particular error
+ happens only when execvp fails. -thomas
+???
+
+* Next release:
+** transparent FTP working