toaruos/TODO.md
2012-10-09 21:01:38 -07:00

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