Initial setup
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
# Blade is a PID 1
|
||||
|
||||
## Core
|
||||
|
||||
* [ ] Custom C++ userspace / init system
|
||||
* [ ] Everything runs in one main PID 1 process
|
||||
* [ ] Keep subsystems code-wise separate internally
|
||||
* [ ] Single-user system
|
||||
* [ ] Custom privilege escalation binary (`sudo`-like)
|
||||
|
||||
## Init / Service Manager
|
||||
|
||||
* [ ] PID 1 handles system initialization
|
||||
* [ ] Start/stop/restart services
|
||||
* [ ] Service dependencies
|
||||
* [ ] Service ordering / stages
|
||||
* [ ] Continuous service supervision
|
||||
* [ ] Ruby-defined service configuration
|
||||
* [ ] Ruby hooks for service events
|
||||
* [ ] Runtime service control through Ruby socket
|
||||
|
||||
## Package Manager
|
||||
|
||||
* [ ] Built into the main userspace
|
||||
* [ ] Packages defined as Ruby scripts
|
||||
* [ ] Packages use Git sources
|
||||
* [ ] Build using `make` commands
|
||||
* [ ] Package dependencies
|
||||
* [ ] Install/update packages
|
||||
* [ ] Cleanup/remove unused packages
|
||||
* [ ] Package hooks
|
||||
* [ ] Hooks can add services/configuration/etc.
|
||||
* [ ] Build required packages during startup
|
||||
|
||||
## Ruby
|
||||
|
||||
* [ ] Embedded static mruby
|
||||
* [ ] Ruby is the main configuration language
|
||||
* [ ] Same Ruby system defines packages + services + hooks
|
||||
* [ ] Ruby commands available at runtime over a socket
|
||||
* [ ] Runtime API for controlling the system
|
||||
* [ ] Hooks / shortcuts can react to system events
|
||||
|
||||
## Built-in Components
|
||||
|
||||
* [ ] D-Bus broker
|
||||
* [ ] Wayland compositor
|
||||
- Notifications (also connects to dbus)
|
||||
- Clipboard with history, and api to read/work with history.
|
||||
* [ ] Terminal emulator
|
||||
* [ ] Session manager
|
||||
* [ ] Package manager
|
||||
* [ ] Service manager
|
||||
* [ ] System configuration/runtime API
|
||||
|
||||
## Boot Sequence
|
||||
|
||||
1. Start basic services
|
||||
* Networking
|
||||
* Audio
|
||||
* Other essential infrastructure
|
||||
2. Run package manager
|
||||
* Build/update/install required packages
|
||||
* Cleanup
|
||||
* Run package hooks
|
||||
3. Start TTY2
|
||||
* Launch shell
|
||||
4. Start normal non-desktop services
|
||||
5. Start Wayland on TTY1
|
||||
6. Wayland starts in `locker` state
|
||||
7. Start services that depend on Wayland
|
||||
8. Resolve service dependencies/order
|
||||
9. Enter continuous runtime/event loop
|
||||
|
||||
## Wayland / Desktop
|
||||
|
||||
* [ ] Wayland compositor is built into PID 1
|
||||
* [ ] TTY1 is graphical
|
||||
* [ ] TTY2 is shell/terminal
|
||||
* [ ] Desktop states:
|
||||
* `locker`
|
||||
* `terminal`
|
||||
* `application`
|
||||
* [ ] `application` state gives each application its own workspace
|
||||
* [ ] System owns/controls the login/unlock password
|
||||
* [ ] No traditional display manager
|
||||
* [ ] One built-in terminal emulator
|
||||
* [ ] Consider multiplexing later if actually needed
|
||||
|
||||
## Runtime
|
||||
|
||||
* [ ] Everything remains active after boot
|
||||
* [ ] Event-driven system
|
||||
* [ ] Ruby command socket
|
||||
* [ ] Runtime configuration changes
|
||||
* [ ] Hooks can react to:
|
||||
* service events
|
||||
* package events
|
||||
* Wayland events
|
||||
* shortcuts
|
||||
* system events
|
||||
* [ ] Continuously monitor and manage services
|
||||
|
||||
Reference in New Issue
Block a user