Skip to content

Functional Requirements

In this document, you can find a list of functions and constraints regarding RadishOS and RadishFactory. Usually, I write this information in a sheets document with at least four colums: “Function”, “Subfunction”, “Criterion”, and “Level”. This method ensures that all functions are linked to a measurable value one can rely upon to guide them in their choice of solutions, as well as to help write tests and validate the product later on.
Below, all 4th-level headings correspond to the “Function” column.

Files available for download

RadishOS

Note on security requirements

I want to mention some hardening features on this page, but the prototypes I build first will not have much hardening by default. In a sense, this is not a problem, since I can still use principles from secure by design with later variants of the distribution, namely using Gentoo’s hardened profiles, with kernel hardening, SELinux, etc.

Interactors

The following diagram shows what elements are involed in interactions with the Linux distribution; listing them helps think about functions and constraints.

    mindmap
  ((RadishOS))
    (User)
    (Hardware)
    (Software)
    (USB Peripherals)
    (Displays/Graphics)
    (Threats)
    (RadishFactory)
    (Network/Internet)
    (Private Data)
  

Functions

Perform usual tasks
SubfunctionCriterionLevel
Browse the InternetBrowser feature test*540+/588
Write codeLanguagesBash, C, C++, Rust, Python
Manage code repositoriesVCSGit
Write configsLanguagesYAML, TOML, KDL, Lua
Edit documentsFormatsODF, MS Office, PDF, Photos
Deploy containersBackendPodman
Play gamesStoresSteam, Epic Games

* browser test from https://html5test.co

Install the OS offline
SubfunctionCriterionLevel
Find existing partitionsType of partitionLinux Home
Partition disksTool usedcryptsetup, lvm, (s)fdisk
Format partitionsFilesystem typesext4, btrfs, xfs, lvm, luks2
Mount filesystemsFilesystem typesext4, btrfs, xfs, lvm, luks2
BootstrapType of filesystemPrebuilt filesystem (stage4)
Create users/passwordsN/AN/A
Open chroot shellN/AN/A
Install and update packages
SubfunctionCriterionLevel
Install binary packagesFormatGPKG, Flatpak
SourceRadishFactory binary host, Flathub
Compile pkgs (emergency)SourceRadishFactory ebuild repository
Protect private data

Constraints

RadishFactory

Interactors

    mindmap
  ((RadishFactory))
    (RadishOS)
    (Network/Internet)
    (Gentoo/Guru ebuilds)
    (Binary packages)
    (Admin User)
    (Threats)
    (LDAP)
    (Installation Media)
  

Functions

Provide binary packages for a Gentoo-based system

SubfunctionCriterionValue
Download new ebuildsfrequency1 time/week
Compile ebuilds into binariesfrequency1 time/week
Run tasks autonomouslyhuman actionsat most 1
Archive multiple versionsnr. of versions3
Be compatible with PortageBinary formatGPKG
Be compatible with multiple PCs

Provide ISO images of a plug-and-play operating system

SubfunctionCriterionValue
Assemble binaries into an OSfrequency1 time/month
Run tasks autonomouslyhuman actionsat most 1
Store and version OS description

Expose a public mirror on the internet

SubfunctionCriterionValue
Be available at anytimetarget uptime28/30 days
Serve users simultaneouslynr. of users< 10

Be secure by design

Requirement
Use network segmentation
Use modern protocols (TLS)
Filter network traffic
Authenticate admins and devs
Hide critical services
Minimize public exposure
Anticipate data losses

Minimize energy consumption

Subfunction
Turn off inactive components
Throttle CPUs automatically if needed
Last updated on