4.5 KiB
4.5 KiB
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