I find that a top-down view of a project enables me to see how different parts of the system interact. I also believe that doing so strongly encourages simplicity. This is not a checklist or a specification of requirements. It is an organized backlog of qualities that I find desirable in an operating system. The following outline depicts my vision for os-z.
* Guiding Principles
* Unix Philosophy (a la Plan 9)
* The most obvious way to do something should also be the most correct.
* Namespaces are the shit.
* Compatibility is a priority.
* Formally verified, open source hardware platform
* CPU based on LEON3
* GPU based on miaow
* TPM based on OpenTPM
* Wireless based on *?*
* Mostly Rust
* Use HTTP/0.2 as the canonical IPC interface
* Launch services on-demand (socket activation)
* Functional, peer to peer package manager
* Code signing
* Deterministic builds
* seL4 µkernel
* Read-only system image (`os-z/base`)
* Plan 9 namespaces
* Implemented utilizing secure virtualization primitives
* Act as a security boundary (as much as possible)
* Empty and incapable by default
* Open Container server (`appc`)
* High-performance networking stack (`netd`)
* DragonflyBSD-compatible driver server
* BeFS-esque VFS
* System-wide file index
* Shared storage mesh via IPFS
* 9P servers everywhere!
* Peer to peer authentication (`peerauth`)
* Delegated Identity
* Securely distribute your data and compute load across multiple providers
* m-of-n key distribution scheme combining user, hardware, and operator keys
* Encrypted user data is only exposed in memory
* Powered by web technologies
* Multi-process Servo
* Badass software for common tasks
This is part of the OS/z User Manual. See copying(7) for copying conditions.