6.2 KiB
6.2 KiB
Compositor functionality
- Alt+Tab keyboard window switching (with previews)
- Advertise window titles + icons
- New panel with window list
- Rewrite client-server protocol
- New resize handshake
- Only sane event path; fix window creation (fix "wait for reply" commands)
- Better packet structs for events (window.left? ew!)
Japanese / i18n updates
- IME
- Support for multibyte/wide characters in rline and terminal linebuffer
- JIS keyboard mapping in the compositor (config file???)
- Applications shouldn't care.
- What to do with with special characters?
Multiarch / Ports
- Split out x86 / PC-specific bits into new arch/ directories
- Fix up uses of explicitly sized types where possible
- x86-64 port
- Good for verification of multi-arch readiness
- Much easier to develop for than ARM port
- ARMv6 port is underway
Cleanup and POSIX expansion
- Rewrite underlying process model
task
/process
split should match architecture dependency split- Better allocation management, process tracking
- Cleanup is a pain right now - we need to stop eating processes that finish with parents that might want their statuses.
- Sleeping, wait queues, and IO polling/select depend on some rewriting
New EXT2 drivers
- The EXT2 drivers are poorly written, they need a complete rewrite
- Allow for multiple EXT2 instances
- Operate on block devices rather than directly with ATA drives
- Allows for effortless ramdisk implementation with same code
- Will make MMC port a lot easier for RPi
TODO as of November, 2012
-
force a build run
-
Integrate Cairo into build toolchain- autogen means extra effort needed
- required to ship with new compositor
-
Fix static initializers in C++- The best method for this is probably going to be writing a dynamic loader, so...
-
Write a dynamic loader
-
Pretty much everything below
TODO for 0.4.0 Distribution Release
- User Interface
Graphical Login- More applications
Working boot on real hardware- Confirmed working on Mini 9 with hard disk boot
TODO for 0.5.0
- CD support
- Boot from "CD"
- Distribute with Grub
- CD image generator in-repo
- Stable Harddisk writes
- Screenshot functionality
- Attempt an installer?
- ATA writes in general seem to be stable, work on EXT2 FS write support
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.)
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 applicationsAnd 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- Finished in April/May, 2013
Port ncurses/vim/etc.- This was compleated circa March 2013
- Native development requires good tools.
- Also port genext2fs.
Directory support needs to be better integrated into the C library stillreaddir
and family have been integrated
Microkernal Readiness
Deprecate ramdisksreplaced with new ramdisk module, works better- 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?
- Technically, it already is.
- Virtual File System Service
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- Working on this with new ext2 drivers
- Need better block device handling; *64() operations
Mounting of/dev/*
files using a filesystem handlerVFS tree