|
Software
Wiki Docs
|
Todo
This page is read-only because I use it as a primitive bug tracker. Please report bugs to me via email rather than try to add them to this page.
Kernel
- double check all the non-wscons stuff we had to remove from generic, maybe some can be ifdef'd out and still work
- pccons
- do pc bell
- q_to_b in pccons to ndqb
- i386/disksubr.c, does some funky bios CHS stuff that i don't think we need
- can we remove all the bios crap passed by /boot to the kernel in machdep.c? and bios.* sysctl
- remove vm_daddr vm_dsize, etc
- Also, remove i386 W^X hacks, as we don't do it in userland anymore
- remove unused fields in disklabel/partition
- change magic
- remove or reset version field?
- do any macros in disklabel.h refer to fields that are gone?
- vnd_secsize? isn't it always DEV_BSIZE
- double check ccd.c patches
- get rid of ccd_geom totally (just secsize now)
- sc_type in fd.c? used to populate disklabel geometry, used for anything else?
- option PCI_CONF_MODE 1 in GENERIC on i386 (99.99% of machines are, and we don't get the right answer from the bios with the unified x86/amd64 bootloader
- remove the dkcsum nonsense (i don't even totally understand what it does)
- remove multiple emulations support from exec_elf, remove the whole compat subtree from git
- Remove multiple binary types alltogether? (a.out, what else?)
- remove chr2blk sysctl and associated cruft all the way down (chrtoblk/blktochr functions chrtoblktbl in all the machdep code)
- Ideally unify major device numbers across archs...
- VM_PSSTRINGS sysctl can go (always constant)
- stack smash callback in kernel can go (int $5 now)
- scroll lock stuff (ifdef soon) in pccons
- pcconskbd? is it even used? remove it
- remove ufs2 and ext2fs totally, no need for magic checking in sys/ufs
- KERN_MSGBUF* can go, size is constant, always read through /dev/kmsg
- pccons - pcinit() call doesn't need to be in sput
- BUT something needs to call pcinit very early
- get rid of the "ooo... look at me, I'm storing the kernel log buf in some obscure place in memory so i can read it after a warm boot" nonsense
- ditch sys/ioctl_compat.h
- i386/machdep.c, can we decode the cpu model in userspace?
- Where do we actually need it?
- swdevt nonsense - only 1 field in the first entry is ever used
- parsedisk annd lots of nam2blk stuff can go
- /usr/src/sys/arch/i386/i386/dkcsum.c can go
- are {I,L}{UCLC,LCUC}, XCASE termios flags part of the standard? - if not remove them
- decide what gettimeofday should do with its second arg (ignore, EINVAL?)
- cleandir target in src/bsd
- pass a random in an extra register to userland, use it to set __guard (in all arch's crts, and ld.so)
- Can the kernel not "know" the working directory? we need the *at funcs for posix, so we could have a special filehandle (3? ehh) containing the cwd, inherited though exec, etc
- remove _getlogin syscall and associated cruft
- proc0 - can it exit? does it need to exist?
- Reboot when init exits? (using the exit status to decide to reboot or shutdown)?
- init "wait for everything else to start" sleep stuff - go?
- int cold - can it go? when does it get unset?
- nfsboot needs to depend on nfsclient
- hw_vendor stuff in bios.c (static now, but unneeded)
- add line disciplins back in, but conditionalize on nmea | ppp | etc
- put ioctls back too, and have them return constants for non-disc case
- remove "fixes" in userland
- PID_MAX only limited for backwards compat i think
Bootstrap
- libsa __RocBSD__ disklabel changes, little shaky...
- unify boot(8)? can pxeboot, cdboot, and boot all live in the same binary?
- cdbr should load cdboot at the correct address (0x40000) right away, no need
for 0x7c00 then have cdboot move itself
- merge amd64 and i386 bootloaders (start with amd64, it is more minimalist and cuts out legacy cray)
- find out what the + and * next to hard disk name means in boot are they wrong? do they matter?
- also hd/sd confusion (why is scsi special?)
Installer
- get rid (or simplify) some of the serial console stuff in installer?
use mfs for /tmp by default no, mfs is not what you think it is
- need a story for setting timezone
Build Process
- make sure
BSD_AUTH, YP, KERBEROSE, SKEY etc still have some chance of working when enabled
- Add CLFAGS+=-DXXX where in app/library makefiles, add SRCS/MAN+= xxx.c (even if xxx.c isn't in tree)
perlapi.pod (i think) looks for some t/lib files (specificed in the manifest) that we don't currently bundle
machine includes installed under /usr/include/${MACHINE}
/usr/include/machine contains:
foo.h:
#ifdef __i386__
#include <i386/foo.h>
#elif
..
#endif
- make kernel build with bsd.prog.mk like a normal program
- set CFLAGS/LDFLAGS as appropriate
- config generates a SRCS line
- config generates a defs.h which we -include defs.h in CFLAGS
- Maybe don't even install config (or libexec it?)
- make cleandir again
beforedepend stuff for generated files is stupid... can we do better? guess not
usr.bin/install is funky (name overlaps with install target)
makewhatis needs to be run initially (either by make install or rc.firsttime)
- much of share/man should be moved to where it belongs
librpcsvc doesn't build after cleandir (INCS dependencies wrong)
- add an uninstall target
- Add a *single* ${ARCH} variable (maybe don't even predefine it in make(1)?; use $(arch -s)?), i386, amd64, powerpc. We'll have to do some magic for the macppc dir, but there shouldn't be any outside the kernel. Poison ${MACHINE} and ${MACHINE_ARCH}. Maybe it should be called MACHINE though? Either way, start with ARCH, so we catch all the places it is used.
- Maybe remove arch(1) and machine(1), they're getting rather useless. Where are they used?
- install fenv.h and tgmath.h
- Look at cvs history for libm, some libm functions were stupidly moved to libc, move 'em back
Etc
- tset nonsense in etc/{skel,root}/dot*
- actually could get rid of a lot of those dot.* files
- where does /etc/motd show now that login is gone?
- should .profile show it?
- if it still shows it should be autogenerated (welcome to ${OSNAME})
- something needs to make lastlog and wtmp
- /etc/rc shouldn't generate ssh keys (does it?)
- should librpcsvc install .x files in /usr/include?
- parse /etc/myns like sysctl -f parser (strsep, comments, etc)
- Merge new stuff from /etc/rc (baddynamic, host.random, ssh keys, etc)
Lib
Hide underscore symbols in shared libraries no
- tcgetsid is not implemented
- move setsockopt to libxnet (anything else?)
- pthread
- Remove pthread_switch_add_np and associated cruft
- Try to remove _thread_init or make it called as a constructor
- need wcswidth and getws man page
- get rid of librpcsvc?
- move sysv ipc to libipc
- maybe wide characters should always use utf8? should we even bother with latin1?
Bin
- can we conditionalize atrun?
- warning: templates not found /usr/share/git-core/templates
- -D_LIBKVM in sysctl?
- roll cpp(1) into cc(1)
- remove extended registers, and source vtables in dc(1)
- disklabel "auto layout" need tweeking (no x11 at least)
- passwd policy is too strict
- warning: templates not found /usr/share/git-core/templates on git-clone
- check ifconfig man page for options that can be disabled (group by interface type)
- sys_auth_passwd in ssh's auth-passwd.c empty password stuff... not sure how that interacts with ssh's empty password config options
- remove hostname.if files? do it the freebsd way?
- Way too many superblock backups in newfs(8) by default
- Our usr.bin/csh/exp.c exp2 workaround is no longer needed, fixed upstream
Share
- remove some share/misc stuff?
- _PATH_BOOTDIR should go (and all of /usr/mdec, do something better)
- is mandoc stuff here still used?
- remove some bsd.*.mk files (xconf xorg, port, etc)
Headers
- remove getrrsetbyname from netdb.h
- make sure all _PATH_* defines are still valid
- Lots of machine/profile.h is unused, maybe it should go away (kernel profiling is likely broken now)
PowerPC
- powerpc doesn't define __powerpc__
- do we need svr4.h in powerpc?
- longcall stuff in powerpc? Can we assume binaries are always < 32mb, and always use shortcalls?
- .sdata/.sbss in powerpc, ditch it?
Global
conditionalize INET6 across the world
Distribution
- simplify /dev, only minimum, maybe bump down some counts for sd*, etc
- no wd* by default
- installer should make sure root devices exist
- remove resolv.conf (now, simpler, myns) from installer, dhcp too probably
- osrelease stuff in installer gets it wrong (I think it pulls the, now removed, sysctl)
- reboot(8) in miniroot needs getopt, maybe just ditch reboot and use kill -1 init
- /root doesn't exist
- set lists suck... can we do something different?
Perl
- Lots of pods aren't being built
- But do we want all of them (readme's of langs/archs we don't support?)
- Verify against "real" perl build again
- We can ditch DynaLoader, and replace XSLoader with a stupid stub (since all XS modules are statically linked)
- We can ditch ExtUtils-* (even -Constants, since they're included in the distribution now)
- bsd.perl.mk still could use cleanup
- I think we can (somehow) use implied rules for pods
- The "find which directory the file is really in" nonsense is stupid
- Either do the NetBSD ${.ALLSRC}/.MADE hack, or add a "resolve though path" modifier to make(1)
- Really should .include Makefile.inc, to get the right bindir, although the default is correct
New Features
- libgmon is wrong - mcount.c doesn't match up with gcc
- gdb in tree
- add s/key support throughout
- whatis database
Verification
- double check fetch/ftp changes
Documentation
- in NOKVM cases, remove command line options from usage() and man pages
- gcc-local manpage? can we steal a c99 manpage from opengroup?
- ensure all changes are documented in man pages
- stpcpy man pages are wrong (linked to strcpy)
- dprintf man page
Later
- http://fedoraproject.org/wiki/Security/Features
- come up with a story for nfs umount, need to do a MOUNTPROC3_UMNT call
- double check security of newgrp (from netbsd)
- remove all non-c99(1) options from cc? Add a -Wc, option to pass gcc specific flags?
- Initialization (stdio and arc4random to name two) in libc and friends should use gcc constructors
- Maybe use a weak reference to arc4_stir to reseed on fork(), so we don't getpid() on every call
- getaddrinfo locking
- see if everything builds *without* objdir? should...
- simplify perl's XSLoader (no need for Dynloader)
- Can we make rsync use the system libmd and libz? Might have to tweak them a bit
- Implement man -k and man -f
- -f is stupidly easy, use exitsing how() function to find NAME, and symlink whatis to man (plus add manpage)
- -k is a little harder... but POSIX is very lenient
|