Roadmap ======= Plans for soon -------------- * Write device drivers : keyboard, FAT (or EXT2 ?) * Work on userland : init, terminal emulator, shell * GUI server (with help from kernel for framebuffer management ?) Things to design ---------------- * Reclaiming physical memory : - Freeing some cached stuff, ie swapping pages from mmap regions - Swapping pages from processes non-mmap regions (ie real data regions) * Better handling of errors (rather than panicing) ; userspace apps should not have the possibility of crashing the system * How does a process transmit information (such as environment, arguments, file descriptors) to its children ? * How do we do stream-like IO on files ? (ie how do we implement the append access mode and non-position-dependant read/write calls & seek call) * Better error reporting for system calls that fail Things not sure --------------- * VFS thread safety : is the design correct ? (probably) * Cache architecture (called *pager*, after 4.4BSD terminology) * Not enough tests! Plans for the later future -------------------------- * Define a format for "packages", i.e. read-only filesystem images used for adding system components or apps to the OS ; make sure to implement it in a way that does not waste memory * Module system for extending the kernel In userspace * simple Scheme-like scripting language * POSIX compatibility layer, self-hosting OS * The obvious stuff ;-)