2013-06-28 21:17:22 +04:00
|
|
|
# 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!)
|
|
|
|
|
2013-06-28 22:05:42 +04:00
|
|
|
# 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?
|
|
|
|
|
2013-03-26 08:43:38 +04:00
|
|
|
# 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
|
|
|
|
|
2012-11-22 09:09:58 +04:00
|
|
|
# TODO as of November, 2012
|
|
|
|
|
2012-12-03 07:32:54 +04:00
|
|
|
* force a build run
|
|
|
|
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~Integrate Cairo into build toolchain~~
|
2012-11-22 09:09:58 +04:00
|
|
|
* autogen means extra effort needed
|
|
|
|
* required to ship with new compositor
|
2014-03-21 10:45:20 +04:00
|
|
|
* this has been done for a while
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~Fix static initializers in C++~~
|
2012-11-22 09:09:58 +04:00
|
|
|
* The best method for this is probably going to be writing a dynamic loader, so...
|
2014-03-21 10:45:20 +04:00
|
|
|
* this has been done for a while
|
2012-11-22 09:09:58 +04:00
|
|
|
* Write a dynamic loader
|
2014-03-21 10:45:20 +04:00
|
|
|
* as of March 2014, finally starting to work on this
|
2012-11-22 09:09:58 +04:00
|
|
|
* Pretty much everything below
|
|
|
|
|
2012-09-13 07:06:22 +04:00
|
|
|
# TODO for 0.4.0 Distribution Release
|
|
|
|
|
2012-12-03 12:10:31 +04:00
|
|
|
* User Interface
|
|
|
|
* ~~Graphical Login~~
|
|
|
|
* More applications
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~Working boot on real hardware~~
|
|
|
|
* Confirmed working on Mini 9 with hard disk boot
|
2012-12-03 12:10:31 +04:00
|
|
|
|
2013-05-12 08:48:03 +04:00
|
|
|
# TODO for 0.5.0
|
2012-12-03 12:10:31 +04:00
|
|
|
|
2012-09-13 07:06:22 +04:00
|
|
|
* CD support
|
|
|
|
* Boot from "CD"
|
|
|
|
* Distribute with Grub
|
|
|
|
* CD image generator in-repo
|
|
|
|
* Stable Harddisk writes
|
|
|
|
* Screenshot functionality
|
|
|
|
* Attempt an installer?
|
2013-03-26 08:43:38 +04:00
|
|
|
* ATA writes in general seem to be stable, work on EXT2 FS write support
|
2012-09-13 07:06:22 +04:00
|
|
|
|
2012-10-10 08:01:38 +04:00
|
|
|
# Doc Revamp
|
|
|
|
|
2014-03-21 10:45:20 +04:00
|
|
|
* ~~Get rid of old, outdated TeX/PDF manual~~
|
2012-10-10 08:01:38 +04:00
|
|
|
* Build a modern doxygen-powered documentation system for
|
|
|
|
kernel functions for use by kernel developers.
|
2014-03-21 10:45:20 +04:00
|
|
|
* Tried to do this, doxygen got very angry - might look at it again later?
|
2012-10-10 08:01:38 +04:00
|
|
|
* Also include doxygen documentation for included libraries
|
|
|
|
(lib/graphics, etc.)
|
|
|
|
|
2012-09-29 11:37:30 +04:00
|
|
|
# TODO for Microkernel Launch (0.5.0?)
|
|
|
|
|
2014-03-21 10:45:20 +04:00
|
|
|
* ~~Replace ramdisks with ELF service executables~~
|
2012-09-29 11:37:30 +04:00
|
|
|
* Boot with multiple modules = boot with multiple services.
|
|
|
|
* vfs.srv, for example
|
2014-03-21 10:45:20 +04:00
|
|
|
* replace "services" with "modules" and this is done...
|
2012-09-29 11:37:30 +04:00
|
|
|
* 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?
|
2014-03-21 10:45:20 +04:00
|
|
|
* Do module dependencies count? That's in...
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~Deprecate old graphics applications~~
|
|
|
|
* ~~And rename the windowed versions.~~
|
|
|
|
* ~~Environment variables~~
|
2012-09-29 11:37:30 +04:00
|
|
|
* 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)
|
2014-03-21 10:45:20 +04:00
|
|
|
* Keeping as core for now, possibly a module in the new revision? VFS is kinda important...
|
2012-09-29 11:37:30 +04:00
|
|
|
* `ext2.srv` Ext2 file system server. (provides `/`)
|
2014-03-21 10:45:20 +04:00
|
|
|
* module
|
2012-09-29 11:37:30 +04:00
|
|
|
* `ata.srv` ATA disk access server. (provides `/dev/hd*`)
|
2014-03-21 10:45:20 +04:00
|
|
|
* module
|
2012-09-29 11:37:30 +04:00
|
|
|
* `compositor.srv` The window compositing server. (provides shmem regions)
|
2014-03-21 10:45:20 +04:00
|
|
|
* staying in userspace
|
2012-09-29 11:37:30 +04:00
|
|
|
* `ps2_hid.srv` The keyboard/mouse server. (provides `/dev/input/ps2/*`)
|
2014-03-21 10:45:20 +04:00
|
|
|
* two modules: `ps2kbd` and `ps2mouse`, and they provide `/dev/kbd` and `/dev/mouse` respectively.
|
|
|
|
* I'll look into the other dev nodes later...
|
2012-09-29 11:37:30 +04:00
|
|
|
* `serial.srv` UART serial communication server (provides `/dev/ttyS*`)
|
2014-03-21 10:45:20 +04:00
|
|
|
* module: `serial`
|
2012-09-29 11:37:30 +04:00
|
|
|
|
|
|
|
### 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*`)
|
2014-03-21 10:45:20 +04:00
|
|
|
* This is a module at the moment; might be abandoning a lot of these service ideas...
|
2012-09-29 11:37:30 +04:00
|
|
|
|
|
|
|
## Things that are not services
|
|
|
|
|
|
|
|
* ELF support is not a service
|
|
|
|
|
2012-09-05 04:46:59 +04:00
|
|
|
# TODO as of Septemember 2012
|
|
|
|
|
2012-09-06 07:19:52 +04:00
|
|
|
## C++
|
2012-11-22 09:07:28 +04:00
|
|
|
* ~~Build with C++ support~~
|
2012-09-05 04:46:59 +04:00
|
|
|
|
|
|
|
## Terminal Fixes ##
|
|
|
|
* Mouse features; mouse support in windowed mode
|
2012-11-22 09:07:28 +04:00
|
|
|
* ~~Tab completion in shell (this is mostly a shell-specific thing)~~
|
2012-09-05 04:46:59 +04:00
|
|
|
|
|
|
|
## Windowing System ##
|
2012-11-22 09:07:28 +04:00
|
|
|
* ~~Graphical Login Manager~~
|
2012-09-05 04:46:59 +04:00
|
|
|
* Finish GUI toolkit
|
|
|
|
* File manager app
|
|
|
|
|
|
|
|
## Harddisk Drive Extras
|
2014-03-21 10:45:20 +04:00
|
|
|
* ~~VFS support is still almost entirely non-existent~~
|
|
|
|
* VFS works pretty nicely.
|
2012-09-05 04:46:59 +04:00
|
|
|
* Write support for EXT2 is still sketchy
|
2014-03-21 10:45:20 +04:00
|
|
|
* This is still true as of March 2014 - actually, it's worse, write support is temporarily gone
|
2012-09-05 04:46:59 +04:00
|
|
|
* Still lacking fast read/write for IDE - needs more DMA!
|
2014-03-21 10:45:20 +04:00
|
|
|
* Still true in 2014
|
2012-09-05 04:46:59 +04:00
|
|
|
|
|
|
|
## Toolchain
|
2013-05-12 08:48:03 +04:00
|
|
|
* ~~Finish GCC port~~
|
|
|
|
* Finished in April/May, 2013
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~Port ncurses/vim/etc.~~
|
|
|
|
* This was compleated circa March 2013
|
2012-09-05 04:46:59 +04:00
|
|
|
* Native development requires good tools.
|
|
|
|
* Also port genext2fs.
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~Directory support needs to be better integrated into the C library still~~
|
|
|
|
* `readdir` and family have been integrated
|
2012-09-05 04:46:59 +04:00
|
|
|
|
2012-09-13 07:06:22 +04:00
|
|
|
## Microkernal Readiness
|
|
|
|
|
2012-11-22 09:07:28 +04:00
|
|
|
* ~~Deprecate ramdisks~~ **replaced with new ramdisk module, works better**
|
2012-09-13 07:06:22 +04:00
|
|
|
* Haven't used them in development in over a year
|
|
|
|
* Not useful anywhere else due to their limiting sizes
|
2014-03-21 10:45:20 +04:00
|
|
|
* As of March 2014, ramdisks have been reimplemented (again) in an actual ramdisk *module*
|
|
|
|
* ~~implement module execution~~
|
2012-09-13 07:06:22 +04:00
|
|
|
* Instead of loading a ramdisk, modules should be standard binaries
|
2014-03-21 10:45:20 +04:00
|
|
|
* Actually, both are supported now, so that's done.
|
2012-09-13 07:06:22 +04:00
|
|
|
* The binaries will be executed in a new "service mode"
|
2014-03-21 10:45:20 +04:00
|
|
|
* This was isn't going to happen, at least not for kernel modules.
|
2012-09-13 07:06:22 +04:00
|
|
|
* 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?
|
2013-03-26 08:43:38 +04:00
|
|
|
* Technically, it already is.
|
2012-09-13 07:06:22 +04:00
|
|
|
* Virtual File System Service
|
|
|
|
|
2012-09-05 04:46:59 +04:00
|
|
|
## Old I/O goals
|
|
|
|
|
|
|
|
### I/O
|
2014-03-21 10:45:20 +04:00
|
|
|
* ~~`/dev` file system~~
|
|
|
|
* ~~`/dev/fbN` and `/dev/ttyN` for virtual framebuffer terminals and graphics~~
|
|
|
|
* Framebuffers still need work to actually support mapping, but can provide size/address information via `ioctl`.
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~`/dev/ttyS0` for serial I/O~~
|
2011-10-23 03:20:57 +04:00
|
|
|
* SATA read/write drivers (`/dev/sdaN`)
|
2014-03-21 10:45:20 +04:00
|
|
|
* ~~`/dev/ramdisk` (read-only)~~
|
|
|
|
* Actually in `/dev/ramN` now
|
|
|
|
* ~~EXT2 drivers should operate on a `/dev/*` file~~
|
|
|
|
* ~~Working on this with new ext2 drivers~~
|
|
|
|
* The new driver is in the current strawberry head
|
|
|
|
* ~~Need better block device handling; \*64() operations~~
|
|
|
|
* Handled in the block device by doing extra reads, read-before-write operations
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~Mounting of `/dev/*` files using a filesystem handler~~
|
2014-03-21 10:45:20 +04:00
|
|
|
* A workaround is provided for `/dev` so that mounted nodes can be listed
|
|
|
|
* A general solution is being worked on in the new VFS
|
2013-03-26 08:43:38 +04:00
|
|
|
* ~~VFS tree~~
|
2011-10-23 03:20:57 +04:00
|
|
|
|