System X is a modernized implementation of a POSIX system. It can replace both UNIX System V and Linux's Systemd or be partly used to supplement an existing system.
The goals for System X are derived from the wisdom I've gained from experience as well as the wisdom of the Unix philosophy.
- Small footprint - The entire system should fit on a floppy.
- Portability - Only rely on POSIX, C++ and statically linked platform libraries with the same restrictions.
- Multi-platform support - At compile-time, use custom code to support specific kernels when most beneficial.
- Fault tolerance - Recover from errors or fail gracefully but don't hang or crash.
- Modular but integrated - Components should be trivial to replace and able to work together or function independently.
- Text, not binaries - Configuration and log files should be readable with a generic text editor.
- Well documented - Generated documentation and code comments are not sufficient.
System X components currently being worked on.
- Service Connector File System - A FUSE filesystem to manage service sockets.
- Initializer - A minimal init system that ensures the SCFS is mounted, Config daemon runs then Director daemon runs or bails out to an emergency shell.
- Executor - A small tool to setup an environment for and then execute a program.
- Director Daemon - A dependency and runlevel based daemon management daemon.
- Configuration Daemon - Abstracts /etc configuration file interface/notifies of configuration updates.
- System Logger Daemon - A RFC compliant system logger that logs in an efficient searchable text format.
- Logging Daemon - A reliable file logger that refuses to fail.
- Event Daemon - A hardware event notification daemon.
- Device Daemon - A devfs maintenance daemon.
- Public Domain Toolkit - A minimalist event-driven toolkit that can be compiled into any program.
- Incanto - A code generator for using sockets in SCFS as an IPC mechanism.