Skip to content

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.

A mind map showing the ramifications of the problem, in SVG format.

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

FunctionApp name
Web browserZen
Text editorNeoVim
Wayland compositorNiri
XDG desktop portalXDP Gnome
Terminal emulatorKitty
Status barWaybar
Office suiteLibreOffice
Document viewerGnome Papers
Image viewerGnome Loupe
Discord clientVesktop
VCSGit

Functional requirements

Perform usual tasks
RequirementCriterionValueCriticality
Browse the webBrowser baseFirefoxMust
View AND edit documentsFormatsMicrosoft, OpenDocument, PDFMust
PDF, PNG, JPEGMust
Edit codeLanguagesC, C++, Rust, Zig, GoMust
Python, Bash, configsMust
Deploy containersTechnologyPodmanMust
DockerShould
Deploy virtual machinesTechnologyQEMU + KVMMust
Oracle VirtualBoxCould
Play gamesPlatformSteam, Epig Games, GOGCould
Protect user data
RequirementCriterionValueCriticality
Allow data recoverySnapshot frequencyconfigs, packages: on every modificationMust
important data: once a dayShould
Allow remote storageN/AN/AMust
Allow data replicationProtocolsZFS, RAIDCould
Encrypt data on diskPartitions/, /home, /var, /tmpMust
SWAPCould
Decryption methodsPassphraseMust
YubiKey / smartcards / GPG keyShould
Prevent online trackingIdentity protectionUser agent editorMust
Automatic cookie refusalMust
Ad blockingUBlock OriginMust
Log system activityLog rotation1 monthCould
Log retention1 yearCould

Constraints

Security
RequirementCriterionValueCriticality
Comply with guidelinesANSSI Linux hardening levelTBDCould
OpenSCAP scoreTBDCould
Compatibility
RequirementCriterionValueCriticality
GraphicsVendorAllShould
NetworkVendorAllShould
InputVendorAllShould
USBProtocols2.0, 3.0, Type CMust
SmartcardsModelYubiKeyMust
SoftwareGraphicsWaylandMust
Init systemSystemdMust

RadishFactory

Interactors

    mindmap
  ((RadishFactory))
    (RadishOS)
    (Network/Internet)
    (Source code)
    (Binary packages)
    (Admin User)
    (Threats)
    (Installation Media)
  

Functional requirements

Provide binary packages
RequirementCriterionValueCriticality
Compile source code into binary packagesFormatGPKGMust
Update frequencyOnce a weeĸMust
Authenticate binary packagesSignature typeGPGMust
Checksum typeBLAKE2BMust
Checksum typeSHA256Could
Store binary packagesNumber of simultaneous versions3Should
Make packages available remotelyServer typeGentoo binhost + overlayMust
AvailabilityTBDN/A
Provide installation media
RequirementCriterionValueCriticality
Build installation media from packagesFormatISO9660 + extensionsMust
Update frequencyOnce a monthMust
Authenticate installation mediaSignature typeGPGMust
Checksum typeBLAKE2BMust
SHA256Must
Store installation mediaNumber of simultaneous versions3Should
Make installation media available remotelyServer typeStandard websiteMust
AvailabilityTBDN/A
Automate operations
RequirementCriterionValueCriticality
CompilationN/AN/AMust
Installation media buildingN/AN/AMust
AdministrationN/AN/AMust
DeploymentN/AN/AMust

Constraints

Security
RequirementCriterionValueCriticality
Segment subnetworksMinimum required VLANsAdministrationMust
CompilationMust
DMZ / reverse proxyMust
Repository proxyMust
ForgeMust
Filter network trafficAllowed trafficRequired only (TBD)Must
Authenticate usersProtocolX509 certificates / LDAPMust
Authenticate servicesProtocolX509 certificatesMust
Encrypt communicationsProtocolHTTPS, SSHMust
Monitor eventsN/AN/AShould

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