Skip to content

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 “Value”. This method ensures that – if applicable – 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.

Files available for download

Problem breakdown

    graph LR
    root(Build Linux distro in homelab):::l0
    root --> f(Factory: build binaries and ISOs in homelab):::l1
    f --> f1(Provide binary packages):::l2
    f --> f2(Provide installation media):::l2
    f --> f3(Security constraints):::l2
    root --> o(OS: Build a desktop Linux distro):::l1
    o --> o1(Perform usual tasks):::l2
    o --> o2(Manage the system):::l2
    o --> o3(Install the OS):::l2
    o --> o4(Manage the factory):::l2
    o --> o5(Protect user data):::l2
    o --> o6(Security constraints):::l2
    o --> o7(Compatibility constraints):::l2
    classDef l0 fill:#BFE5BF,stroke:black
    classDef l1 fill:#FEF2C0,stroke:black
    classDef l2 fill:#FAD8C7,stroke:black
  

RadishOS

Interactors

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

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

Functional requirements

OF1: Perform usual tasks
SubfunctionCriterionValueCriticity
Browse the InternetBrowser feature test*540+/588Must
View/edit documentsFormatsMS Office + ODS PDF, PNG, JPEGMust
Edit codeLanguagesC, C++, Rust, Go, Python, Bash/shell, Markup, and config formatsMust
Deploy containersTechnologiesPodmanMust
Deploy virtual machinesTechnologiesQEMU/KVMMust
VirtualBoxShould
Play gamesPlatformSteamCould
Epic GamesCould

* browser test from https://html5test.teamdev.com

OF2: Configure the system
SubfunctionCriterionValueCriticity
Install/update packagesFormatBinary archivesMust
FlatpakMust
SourcesRadishFactoryMust
Gentoo Official BinhostShould
Security checksGPG signatureMust
Blake2B sumsMust
Manage app permissionsType of permissionsNetwork, paths, ipc, etc.Should
Configure displaysMust
Configure networksMust
Configure users & groupsMust
Mount drivesPermission levelNon-rootMust
OF3: Install the OS
SubfunctionCriterionValueCriticity
Choose partition layoutComplexityEasy mode + terminal accessMust
Partition typesLUKS, LVM, VFAT, EXT4, XFSMust
SwapShould
Configure usersWhenBefore installation startsMust
Choose OS featuresWhenBefore installation startsCould
Add dotfilesWhenBefore installation startsMust
Ask for confirmationWhenBefore installation startsMust
OF4: Protect user data
SubfunctionCriterionValueCriticity
Insure availabilityPrevent data lossesAny non-user relatedMust
Insure integrityPrevent data lossesAny non-user relatedMust
Insure confidentialityVPN protocolsIPSec, Wireguard, OVPNMust
Tracking protectionAd blockingMust
Link tracker removalMust
Insure traceabilityLog rotation1 monthShould
Log retention1 yearShould
OF5: Manage RadishFactory out-of-the-box
SubfunctionCriterionValueCriticity
Login remotelyProtocolSSHMust
Web GUIMust

Non-functional requirements (constraints)

ON1: Hardening
SubfunctionCriterionValueCriticity
Disk encryptionEncrypted partitionsHome and RootFSMust
StandardsLUKS 2Must
Decryption mechanismsPassphraseMust
Decryption mechanismsYubikey/smartcardShould
Implement segmentationProcessesMandatory Access ControlShould
Containerized appsShould
UsersNo rootMust
CasualMust
AdminMust
Filter network trafficImplement a firewallShould
Comply with recomms.GuidelinesANSSI (MIRE level TBD)Should
OpenSCAP (Score TBD)Should
ON2: Compatibility
SubfunctionCriterionValueCriticity

RadishFactory

Interactors

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

Functional requirements

Non-functional requirements (constraints)

Last updated on