TODO revision 1.13
11.13Sjmmv#	$NetBSD: TODO,v 1.13 2005/09/23 12:10:32 jmmv Exp $
21.1Slukem
31.1SlukemTHINGS TO BE DONE:
41.1Slukem
51.1Slukem[ Note that this list does not include change requests filed via 'gnats'.
61.1Slukem  For information about them, mail query-pr@NetBSD.org. ]
71.1Slukem
81.1SlukemThis is a list of things that need to be done for NetBSD.  Some of
91.1Slukemthese projects are small, others are large.  Some are extremely
101.1Slukemimportant, others are enhancements to make the system more flexible
111.1Slukemfor the wide variety of NetBSD users and their applications.
121.1Slukem
131.1SlukemIn general there are some guidelines for work to be included in
141.1SlukemNetBSD.  Chief among these are:
151.1Slukem
161.1Slukem	   (1) Keep GPLed stuff out of the kernel.
171.1Slukem	   (2) Introduce little to no more GPLed stuff as non-optional
181.1Slukem	       components of the user environment.
191.1Slukem	   (3) Only clean code, that lends itself to further enhancement
201.1Slukem	   (4) Keep architecture dependent code out of architecture independent
211.1Slukem	       directories
221.1Slukem
231.1SlukemAssociated with some entries are login names which indicate persons or
241.1Slukemgroups who may already be working on that problem.  This isn't to say
251.1Slukemthat others shouldn't also look at it, but consultation with other
261.1Slukemparties may result in less duplicated work.  A directory of these
271.1Slukempersons can be found after the todo list itself.
281.1Slukem
291.1SlukemPlease don't hesitate to suggest more projects for this list.
301.1SlukemSuggestions, comments, etc to projects@NetBSD.org.
311.1Slukem
321.1SlukemHigh Kernel:
331.1Slukem    swap fixes:
341.1Slukem	swap to file of dynamic size; see apollo
351.1Slukem    nfs:
361.9Ssimonb	kernel support for lockd(8), lockf(3)
371.1Slukem    clean up support for LKM and protections checking (cgd)
381.1Slukem
391.1SlukemUser programs:
401.1Slukem    rwall nfs-mountees on shutdown
411.1Slukem    add detachment to window
421.1Slukem    clean up gas config files, set up common defines
431.1Slukem
441.1SlukemPie-in-the-Sky:
451.8Sjunyoung    someone should actually test all the netiso stuff.
461.1Slukem    SMB filesystem
471.1Slukem
481.1SlukemDocumentation:
491.1Slukem    modify sys docs to reflect NetBSD/arch-specific stuff
501.1Slukem    clean up src/share/man/{man0,tools} so that we can generate a printable
511.1Slukem        version from the manpages again.
521.1Slukem
531.1Slukemi386 kernel support:
541.8Sjunyoung    better ways of accessing BIOS, i/o space.  some exportable to
551.1Slukem	user space.  See mach3,linux dos emulator
561.8Sjunyoung    i686 optimized versions of copyin/copyout/memcpy/memset/etc. lazy
571.8Sjunyoung        floating-point context switching should be implemented as well.
581.8Sjunyoung    make use of sysenter/sysexit instructions on PIII/4 and Athlon for
591.8Sjunyoung        reducing syscall overhead.
601.4Sagc
611.4SagcThis is a list of suggested smaller projects (in no particular order):
621.4Sagc
631.4Sagc+ speed up sort(1) by using mmap(2) rather than temp files
641.4Sagc+ autoconf version of nawk, for use in non-NetBSD pkgsrc
651.4Sagc+ port valgrind to NetBSD for pkgsrc, then use it to do an audit of
661.4Sagc  any memory leakage
671.5Sagc+ implement POSIX async IO
681.4Sagc+ help in implementing various things in pkgsrc
691.4Sagc+ simplify some of the quirks in our build system
701.4Sagc+ help out with scripts for tgm/autobuild
711.4Sagc+ some PR fixing/re-categorising/investigating/closing
721.4Sagc+ investigate zebra or quagga in gnusrc rather than routed
731.4Sagc+ do a type-punned pointer sweep for gcc3 (and fix the problems, not
741.4Sagc  the symptoms)
751.4Sagc+ kernel fine-grained locking
761.8Sjunyoung+ write a BSD-licensed web browser
771.4Sagc+ write a BSD-licensed privacy guard like gnupg or pgp
781.4Sagc+ perhaps look at putting wonka into src/ (with uuencoded class lib?)
791.4Sagc+ investigate ProPolice
801.4Sagc+ document autoconf framework
811.4Sagc+ write an overview document for openssl and certificates
821.4Sagc+ documentation project help
831.4Sagc+ investigate which userland utilities and daemons would benefit from
841.4Sagc  kqueue, and rewrite them
851.4Sagc+ better testing in general; in particular, more regression tests
861.4Sagc+ better LKM version checking
871.4Sagc+ add a native scheme interpreter
881.4Sagc+ add platform support for TenDRA compiler suite
891.7Sjmmv+ merge moused(8) with wsmoused(8) as a new work mode (i.e. serial)
901.12Sagc+ re-design our mbuf/network buffer memory handling so that it is simpler
911.12Sagc  and can handle zero copy tcp
921.12Sagc+ re-design our signal handling path. It is far too complicated and will not
931.12Sagc  be easy to accommodate MP code
941.12Sagc+ Examine our vnode locking and vfs layer and see what needs to be changed
951.12Sagc  for locking in layered filesystems to really work
961.13Sjmmv+ Make mountd(8) update the in-kernel exports list for each file system
971.13Sjmmv  atomically.  Many parts of the utility will need a rewrite, but the kernel
981.13Sjmmv  functionality is already there (just enable the "notyet" blocks of code in
991.13Sjmmv  sys/nfs/nfs_export.c).
100