toaruos/TODO.md
2013-06-28 11:05:42 -07:00

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 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
    • 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 still
    • readdir and family have been integrated

Microkernal Readiness

  • Deprecate ramdisks replaced 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 handler
  • VFS tree