# TODO for 0.4.0 Distribution Release * CD support * Boot from "CD" * Distribute with Grub * CD image generator in-repo * User Interface * Graphical Login * More applications * Stable Harddisk writes * Screenshot functionality * Attempt an installer? # Doc Revamp * Get rid of old, outdated TeX/PDF manual * Build a modern doxygen-powered documentation system for kernel functions for use by kernel developers. * Also include doxygen documentation for included libraries (lib/graphics, etc.) # Keyboard Library * Capture all key events in kernel * Send all of them through the keyboard device * Include ctrl/alt/shift up/down * Do translations in library * shift to key numbers * ctrl/alt to modes * Convert to terminal codes in library * For use in terminal, primarily * Revamp compositor keyboard events * Focus on complete key events * Add support for modes for ctrl/alt # TODO for Microkernel Launch (0.5.0?) * Replace ramdisks with ELF service executables * Boot with multiple modules = boot with multiple services. * vfs.srv, for example * VFS as a service. * It would be super awesome to write this in a language that is more flexible. * Actual file system drivers as separate modules, or what? * Service bindings * Essentially, a system call interface to discovering available services. * `require_service(...)` system call for usable errors when a service is missing? * Deprecate old graphics applications * And rename the windowed versions. * Environment variables * Support them in general * Push things like graphics parameters to environment variables * Integrate service-based VFS into C library * Which probably means integrating shmem services into the C library * Services in a separate ring * Compositor as a service * Compositor shmem names integrated with service discovery * For VFS, need better IPC for cross-process read/write/info/readdir/etc. calls ## Service Modules (aka "Services") * `vfs.srv` The virtual file system server. (required to provide file system endpoints) * `ext2.srv` Ext2 file system server. (provides `/`) * `ata.srv` ATA disk access server. (provides `/dev/hd*`) * `compositor.srv` The window compositing server. (provides shmem regions) * `ps2_hid.srv` The keyboard/mouse server. (provides `/dev/input/ps2/*`) * `serial.srv` UART serial communication server (provides `/dev/ttyS*`) ### Future Servers * `usb.srv` Generic USB device server (provides `/dev/input/usb/*`) * `proc.srv` Process information server (provides `/dev/proc`; uses lots of kernel bindings) * `net.srv` Networking server (provides `/dev/net`) * `gfx.srv` Block-access graphics server (provides `/dev/fb*`) ## Things that are not services * ELF support is not a service # TODO as of Septemember 2012 ## C++ * Build with C++ support ## Terminal Fixes ## * Mouse features; mouse support in windowed mode * Tab completion in shell (this is mostly a shell-specific thing) ## Windowing System ## * Graphical Login Manager * Finish GUI toolkit * File manager app ## Harddisk Drive Extras * VFS support is still almost entirely non-existent * Write support for EXT2 is still sketchy * Still lacking fast read/write for IDE - needs more DMA! ## Toolchain * Finish GCC port * Still missing a few things in the underlying C library * Ideally, also want to be able to build natively, so need scripting, build utils, etc. * Port ncurses/vim/etc. * Native development requires good tools. * Also port genext2fs. * Directory support needs to be better integrated into the C library still ## Microkernal Readiness * Deprecate ramdisks * Haven't used them in development in over a year * Not useful anywhere else due to their limiting sizes * Implement module execution * Instead of loading a ramdisk, modules should be standard binaries * The binaries will be executed in a new "service mode" * Implement "servicespace" * Userspace, but at a different ring * Special access features, like extended port access * Higher priority scheduling ### Services to Implement * PCI Service * Graphics Management Service * Compositor as a service? * Virtual File System Service Heh... Consider writing some of these in better languages than C. May a D servicespace? TODO: Get D working. ## Old I/O goals ### I/O * `/dev` file system * `/dev/fbN` and `/dev/ttyN` for virtual framebuffer terminals and graphics * `/dev/ttyS0` for serial I/O * SATA read/write drivers (`/dev/sdaN`) * `/dev/ramdisk` (read-only) * EXT2 drivers should operate on a `/dev/*` file * Mounting of `/dev/*` files using a filesystem handler * VFS tree