Requirements
In this document, you can find a list of functions and constraints regarding RadishOS and RadishFactory. All functions correspond to a detail of the broken-down problem.
Problem breakdown
This is a tree-shaped representation of what the OS building problem entails. Click to zoom, or open the above PDF version.
Problem breakdown mindmap
RadishOS
Interactors
The following diagrams show what elements are involed in interactions with the Linux distribution, and factory. Listing them helps think about functions and constraints.
mindmap
((RadishOS))
(User)
(Hardware)
(Software)
(Displays/Graphics)
(USB Peripherals)
(Threats)
(RadishFactory)
(Network/Internet)
(Private Data/Passwords)
Desired Apps
| Function | App name |
|---|---|
| Web browser | Zen |
| Text editor | NeoVim |
| Wayland compositor | Niri |
| XDG desktop portal | XDP Gnome |
| Terminal emulator | Kitty |
| Status bar | Waybar |
| Office suite | LibreOffice |
| Document viewer | Gnome Papers |
| Image viewer | Gnome Loupe |
| Discord client | Vesktop |
| VCS | Git |
Functional requirements
Perform usual tasks
| Requirement | Criterion | Value | Criticality |
|---|---|---|---|
| Browse the web | Browser base | Firefox | Must |
| View AND edit documents | Formats | Microsoft, OpenDocument, PDF | Must |
| PDF, PNG, JPEG | Must | ||
| Edit code | Languages | C, C++, Rust, Zig, Go | Must |
| Python, Bash, configs | Must | ||
| Deploy containers | Technology | Podman | Must |
| Docker | Should | ||
| Deploy virtual machines | Technology | QEMU + KVM | Must |
| Oracle VirtualBox | Could | ||
| Play games | Platform | Steam, Epig Games, GOG | Could |
Protect user data
| Requirement | Criterion | Value | Criticality |
|---|---|---|---|
| Allow data recovery | Snapshot frequency | configs, packages: on every modification | Must |
| important data: once a day | Should | ||
| Allow remote storage | N/A | N/A | Must |
| Allow data replication | Protocols | ZFS, RAID | Could |
| Encrypt data on disk | Partitions | /, /home, /var, /tmp | Must |
SWAP | Could | ||
| Decryption methods | Passphrase | Must | |
| YubiKey / smartcards / GPG key | Should | ||
| Prevent online tracking | Identity protection | User agent editor | Must |
| Automatic cookie refusal | Must | ||
| Ad blocking | UBlock Origin | Must | |
| Log system activity | Log rotation | 1 month | Could |
| Log retention | 1 year | Could |
Constraints
Security
| Requirement | Criterion | Value | Criticality |
|---|---|---|---|
| Comply with guidelines | ANSSI Linux hardening level | TBD | Could |
| OpenSCAP score | TBD | Could |
Compatibility
| Requirement | Criterion | Value | Criticality |
|---|---|---|---|
| Graphics | Vendor | All | Should |
| Network | Vendor | All | Should |
| Input | Vendor | All | Should |
| USB | Protocols | 2.0, 3.0, Type C | Must |
| Smartcards | Model | YubiKey | Must |
| Software | Graphics | Wayland | Must |
| Init system | Systemd | Must |
RadishFactory
Interactors
mindmap
((RadishFactory))
(RadishOS)
(Network/Internet)
(Source code)
(Binary packages)
(Admin User)
(Threats)
(Installation Media)
Functional requirements
Provide binary packages
| Requirement | Criterion | Value | Criticality |
|---|---|---|---|
| Compile source code into binary packages | Format | GPKG | Must |
| Update frequency | Once a weeĸ | Must | |
| Authenticate binary packages | Signature type | GPG | Must |
| Checksum type | BLAKE2B | Must | |
| Checksum type | SHA256 | Could | |
| Store binary packages | Number of simultaneous versions | 3 | Should |
| Make packages available remotely | Server type | Gentoo binhost + overlay | Must |
| Availability | TBD | N/A |
Provide installation media
| Requirement | Criterion | Value | Criticality |
|---|---|---|---|
| Build installation media from packages | Format | ISO9660 + extensions | Must |
| Update frequency | Once a month | Must | |
| Authenticate installation media | Signature type | GPG | Must |
| Checksum type | BLAKE2B | Must | |
| SHA256 | Must | ||
| Store installation media | Number of simultaneous versions | 3 | Should |
| Make installation media available remotely | Server type | Standard website | Must |
| Availability | TBD | N/A |
Automate operations
| Requirement | Criterion | Value | Criticality |
|---|---|---|---|
| Compilation | N/A | N/A | Must |
| Installation media building | N/A | N/A | Must |
| Administration | N/A | N/A | Must |
| Deployment | N/A | N/A | Must |
Constraints
Security
| Requirement | Criterion | Value | Criticality |
|---|---|---|---|
| Segment subnetworks | Minimum required VLANs | Administration | Must |
| Compilation | Must | ||
| DMZ / reverse proxy | Must | ||
| Repository proxy | Must | ||
| Forge | Must | ||
| Filter network traffic | Allowed traffic | Required only (TBD) | Must |
| Authenticate users | Protocol | X509 certificates / LDAP | Must |
| Authenticate services | Protocol | X509 certificates | Must |
| Encrypt communications | Protocol | HTTPS, SSH | Must |
| Monitor events | N/A | N/A | Should |
RadishInstaller
Functional requirements
Setup the installation
| Requirement |
|---|
| Connect to network |
| Partition drives |
| Format partitions |
| Mount partitions |
| Ask for user details |
| Deploy seedling file system |
Perform tasks in chroot
| Requirement |
|---|
| Download additional apps |
| Install boot chain |
| Initialize system services |
| Create users and groups |
| Setup timezone |
Miscellaneous
| Requirement |
|---|
| Provide a way to open a shell |
| Reboot |
RadishManager
Functional requirements
Last updated on