- Finalize OO interface, i.e. add missing methods
- It won’t be the final revision of the interface: more specific methods that have higher performance may still be added. Rather, the basic methods to make the kernel fully functional will be added.
- Improve virtio-net
- Avoid busy-polling, this will require a way to get the kernel’s monotonic time
- Queue multiple packets at once
- Add a crate that provides a easier & safe wrapper around the raw queue structure
- Implement SSH or similar
- This will make the OS more practical as a web server.
- Port a proper HTTP server, i.e. one that is asynchronous
- Secure kernel against malicious userspace programs
- Aside from obviously being a requirement, it’ll also make it easier to debug programs that may be causing UB.
- Move PS/2 keyboard driver and VGA text driver out of the kernel.
- The PS/2 8042 driver itself will still remain in the kernel as the alternative requires exporting the entire I/O space, which gives way too much power to userland.
- Similarly, a few parts of the VGA text driver will remain in the kernel. A userland driver will mainly deal with figuring out where characters should go, scroll etc.
- Implement a GUI
- This includes a tiling window manager. Windows will be represented as leaves in a binary tree, much like bspwm.
- The protocol will be pixel-based to keep it simple & flexible.
- The first GUI application will be a terminal.
- Make the OS useable for hosting this website :)