Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Public Software is a from-scratch, spec-first reimplementation of the software world as one suite: firmware, kernel, toolchain, desktop, office, media, engineering, enterprise. It is written in Rust and held in public.

Every repository in the organization signs the same contracts, so the parts fit together. Nothing here is a fork of an existing project; where a standard exists, the suite implements the standard, and where a standard is paywalled or closed, the specs repository keeps a living, executable one.

What this handbook is

This is the reference for how the suite is organized and how it is built. It is generated from the same catalog that configures the GitHub organization, so what it says about repositories, rings, layers and waves is what the organization actually enforces.

  • The suite lists every repository, what it is for, which layers of the stack it serves, and when it becomes buildable.
  • How we work states the contracts: spec-first cleanroom, RFCs, sign-off, licensing, the release train.
  • Contributing is the short path from a first issue to a merged change.
  • Glossary defines the terms the catalog uses.

Status

The organization was bootstrapped on 2026-09-02. Every repository exists with its skeleton, its team, its rulesets and its labels. The first release train is 2027.1. No crate has shipped yet; the handbook will say so, per repository, until one does.

The suite

Every repository in the organization, by dependency ring. Generated from the catalog.

Spine

Defines, assembles and documents everything else.

RepositoryPurposeLayersWaveContents
catalogMachine-readable ledger + roadmap; source of truth for GitHub descriptions, topics, properties and the org README.L181catalog.toml aggregate · schema · site generator · plugin registry · blob-free hardware list
interfacesEvery cross-repo API as WIT packages and wire schemas, with generated binding crates.all1public:doc/* · ui/* · plugin/* · identity/* · store/* · media/* · net/; pub-interfaces- crates
suiteThe superproject: lockfile pinning every crate, nightly whole-suite build, compatibility matrix, release trains, reference images.all1Cargo.lock · compat-matrix · release notes assembler · reference platform images
rfcsDesign proposals that cross repos or change an interface. Template, comment window, decision log.all1RFC-0000 template · accepted/ · rejected/
docsThe suite handbook: architecture, contracts, contributor guide, per-repo mdBooks aggregated into one site.all1mdBook site · architecture · contributor guide · glossary
pubThe org CLI: scaffold repos from templates, lint conventions, sync catalog → GitHub, pull and build the whole suite.L21pub new · pub check · pub catalog sync/render · pub suite pull/build · pub labels sync · pub a11y-audit
templatesRepo and crate templates the CLI stamps out: lib, app, service, plugin, spec.all1template-lib · template-app · template-service · template-plugin · template-spec

Platform

The crates every repository uses.

RepositoryPurposeLayersWaveContents
platformFoundational crates every repo uses: errors, config layering, tracing facade, paths, i18n (fluent), settings schema, diagnostics bundle.L41pub-platform-config · -log · -i18n · -paths · -settings · -diagnose · -secrets-client
design-systemTokens, type scale, icons, motion, shortcut map, command palette spec — the one look and feel.L101tokens (JSON+Rust) · icon set · shortcut registry · theme engine
uiThe GUI toolkit driven to GTK/Qt completeness with AccessKit and IME built in; app shell, window/tab model, settings UI, command palette.L10, L42pub-ui (toolkit) · pub-ui-shell · pub-ui-widgets · pub-ui-a11y · pub-ui-ime
doc-modelCRDT document graph + container format + embed/export protocol. Every productivity and creative document is one of these.L121pub-doc-model · pub-doc-container · pub-doc-sync · export adapters
plugin-runtimeWASM Component Model host, capability policy, plugin test-kit, plugin packaging.L21pub-plugin-host · pub-plugin-sdk · pub-plugin-testkit · pub-plugin-pack
identityIdP (Kanidm-derived), OIDC/passkeys client, account picker, secrets vault client, attestation verifier (later), digital ID wallet core.L61pubd-idp · pub-identity-client · pub-vault · pub-attest (wave 4) · pub-wallet
pkgContent-addressed reproducible package manager (Nix model) and the build cache; the distribution mechanism for the suite.L41pub-pkg · pubd-cache · store format · transparency-log client
observeMetrics/trace/log schema, OTel exporters, dashboards & alerting product (Grafana-class) on the Rust stores.L81pub-observe · pubd-dash · alert rules · SIEM UI (with security)

System

Toolchain, silicon, kernel, base, infrastructure, media, shells.

RepositoryPurposeLayersWaveContents
compilerRust-native optimizing backend on Cranelift, bootstrap seed, scripting runtimes to parity, C→Rust migration tooling.L21cg-clif optimization · seed interpreter · rustpython/piccolo parity · c2rust idiomatic pass
linkerWild linker with Mach-O and PE, assembler and object tooling for all targets.L21pub-ld · pub-as · object tooling
devtoolsNative debugger (DAP), pure-Rust fuzzer, profilers, formal-verification harness integration.L21pub-dbg · pub-fuzz · pub-prof · verify harness
firmwareRust UEFI implementation, oreboot on openSIL boards, TPM 2.0 firmware, BMC (Redfish), firmware update service.L11pub-uefi · oreboot ports · pub-tpm · pub-bmc · pubd-fwupd
hdlRust HDL, fast cycle simulator, verification library; the root of the silicon chain.L01pub-hdl (language) · pub-sim · pub-hdl-verify
edaRTL-to-GDS flow, FPGA bitstream reverse engineering and place-and-route, targeting IHP/sky130 and open FPGAs.L02pub-synth · pub-pnr · pub-timing · pub-drc · fpga-bits
siliconOpen chip designs: root of trust, RF front-end control, FPGA GPU, reference RISC-V platform definitions; shuttle submissions.L03rot chip · rf-fe · fpga-gpu · riscv-platform · shuttle/ runs
kernelKernel hardening (Redox-derived microkernel and Asterinas-style Linux-ABI), scheduler, capability security, driver ABI, libc.L3, L41pub-kernel · pub-libc (relibc) · syscall ABI · capability model
driversDevice drivers: GPU (Nova/Tyr/Asahi tracks + Rust Vulkan userspace), storage, USB, network, Wi-Fi/BT host, audio server, camera, input, power.L32gpu/ · storage/ · usb/ · net/ · wifi-bt/ · audio (PipeWire-class) · camera · input · power
baseInit & service manager, journal, util-linux/procps parity, disk encryption, accessibility bus, screen reader.L41pubd-init · pubd-journal · utils · pub-crypt (LUKS2) · pub-a11y-bus · pub-reader
virtType-1 hypervisor, VMM integration, container runtime integration, sandboxing.L32pub-hv · vmm glue · sandbox profiles
netHost TCP/IP stack, routing suite + dataplane, 5G core, push distributor, SSH daemon, VPN suite.L51pub-netstack · pubd-route · pubd-5gc · pubd-push · pubd-ssh · vpn
sdrSDR framework with GPU DSP, GNSS receiver, SDR 4G/5G UE (lab/private-network) — the modem programme.L0, L51pub-sdr · pub-gnss · pub-ue
storeRelational engine (Postgres-class), KV, cache (Valkey-compatible), graph, object/block store (Ceph-class), streaming (Kafka-protocol), ETL, spreadsheet engine.L71pubd-sql · pub-kv · pubd-cache · pubd-graph · pubd-objstore · pubd-stream · pubd-flow · pub-calc
cloudContainer orchestration control plane (K8s-API compatible), IaaS control plane, IaC engine, config management, OCI registry, CI runner.L81pubd-orch · pubd-iaas · pub-iac · pub-cfg · pubd-registry · pubd-ci
forgeCode forge (repos, issues, reviews, packages, federation) on gitoxide; the future canonical home of this org.L82pubd-forge · ForgeFed · mirror bot
securitySecrets manager + PKCS#11, CA product, endpoint sensor + detection engine, SIEM correlation, transparency log.L61pubd-secrets · pubd-ca · pub-sensor · pubd-detect · pubd-translog
commsMail client, chat clients (Matrix, Signal-class), SIP/PBX, video-meeting SFU + client, federated social server.L5, L121pub-mail · pub-chat · pubd-pbx · pubd-meet · pubd-social
graphicsShader toolchain hardening (naga), software Vulkan/WebGPU rasterizer, colour management, OCR.L91pub-naga-ext · pub-swrast · pub-cms · pub-ocr
mediaFFmpeg-class framework, Opus encoder + IAMF, player, streaming server, screen capture / live production.L91pub-media (framework) · pub-opus · pub-iamf · pub-player · pubd-stream-media · pub-studio
jsJavaScript engine with JIT tiers; Node-class runtime on it.L112pub-js (Boa-derived) · pub-js-jit · pub-node
desktopCompositor features, desktop environment completeness, input methods, portals, session.L102pub-comp · pub-desktop · pub-ime · portals
mobileMobile OS assembly: modem quarantine architecture, app store + reproducible builds, push, wallet integration, device support.L103pub-mobile · modem-iso · pub-store · device/
webServo work (a11y, layout, editing), browser product, PDF render/edit, maps renderer + router, CMS, analytics.L111servo tracks · pub-browser · pub-pdf · pub-maps · pubd-cms · pubd-analytics
aiBurn/CubeCL work on open backends, inference server, distributed training, TTS, voice assistant, CV, model recipes.L151burn tracks · cubecl-vulkan · pubd-infer · pub-dist · pub-tts · pub-assistant · pub-cv · recipes/

Domain

The products.

RepositoryPurposeLayersWaveContents
officeWord processor, spreadsheet application, presentations, document format libraries.L12, L71pub-office-docfmt · pub-office-writer · pub-office-sheets · pub-office-slides
workspaceNotes & knowledge base, project management, file sync, whiteboard, design tool, e-signature, calendar/contacts server, personal finance, e-book library, translation.L121pub-notes · pub-pm · pubd-sync · pub-board · pub-design · pub-sign · pubd-cal · pub-money · pub-books · pubd-translate
homeHome automation hub with Matter, assistant integration, TV/set-top shell, wearables.L12, L102pubd-home · pub-tv · pub-watch
imagingRaster editor (Graphite raster), vector editor, RAW development, page layout, font editor.L131pub-raster · pub-vector · pub-raw · pub-layout · pub-fonted
videoVideo editor (NLE) and compositing / motion graphics.L133pub-nle · pub-comp
audioDigital audio workstation, audio editor, music notation, plugin collection.L132pub-daw · pub-audioedit · pub-notation · plugins/
3d3D content creation suite (Blender-class) and game engine editor (Godot-class on Bevy), XR runtime.L13, L172pub-dcc · pub-engine-editor · pub-xr
cadB-rep CAD kernel, parametric CAD application, CAM, meshing.L141pub-brep · pub-mcad · pub-cam · pub-mesh
engineeringPCB EDA, SPICE, FEA, CFD, systems modelling (Modelica), PLC runtime, SCADA/HMI, DAQ, robotics tooling.L141pub-pcb · pub-spice · pub-fea · pub-cfd · pub-modelica · pub-plc · pub-scada · pub-daq · pub-robot
scienceNumerical computing environment, statistics, computer algebra, notebooks, GIS, medical imaging viewer, bioinformatics, solvers.L141pub-num · pub-stats · pub-cas · pubd-notebook · pub-gis · pub-dicom · pub-bio · pub-solve
businessAccounting core, ERP, CRM, billing/e-invoicing, HR & payroll, e-commerce, helpdesk, BI, PLM/MES.L162pub-ledger · pub-erp · pub-crm · pub-billing · pub-hr · pub-shop · pub-desk · pub-bi · pub-plm
financeCore banking, trading & market data, account-to-account wallet.L162pubd-bank · pub-trade · pub-wallet-pay
healthFHIR-native EHR, LIMS, open clinical terminology.L161pub-ehr · pub-lims · openmed/
civicRules engine (tax/benefits), rules-as-code corpus tooling, LMS, elections, legal research.L161pub-rules · corpus tooling · pub-lms · pub-vote · pub-law
gamesWin32/DirectX compatibility layer, emulation & preservation, server-authoritative anti-cheat standard + reference, storefront/launcher.L171pub-compat · pub-emu · pub-fairplay · pub-launcher

Standards

Living specs and open data.

RepositoryPurposeLayersWaveContents
specsLiving specs and executable conformance suites for paywalled or closed standards, and for the suite’s own formats.L181step-living · iec61131-living · iso8583-living · doc-container spec · plugin ABI spec · attestation spec
contentOpen data the suite depends on: rules-as-code corpus, open clinical terminology, blob-free hardware list, camera RAW profiles, localizations (chart of accounts, tax tables).L181rules/ · openmed/ · hardware/ · raw-profiles/ · l10n/

How we work

Spec-first, cleanroom

A component starts from a specification, not from another implementation. Where a public standard exists, the suite implements it and runs its conformance suite. Where the standard is closed or paywalled, the specs repository keeps a living specification and an executable conformance suite, and the implementation targets that. Provenance is recorded per repository in PROVENANCE.md: what was consulted, and what was deliberately not.

Rings and layers

Every repository sits in one dependency ring, and dependencies may only point inward:

RingContainsMay depend on
spinethe catalog, the interfaces, the suite lockfile, RFCs, docs, the pub CLI, templatesnothing outside itself
platformthe crates every repository uses: config, logging, i18n, the UI toolkit, the document model, the plugin runtime, identity, packaging, observabilityspine
systemtoolchain, silicon, kernel, base, infrastructure, media, platform shellsspine, platform
domainthe products: office, workspace, home, imaging, video, audio, 3D, CAD, engineering, science, business, finance, health, civic, gamesspine, platform, system
standardsliving specs and open dataspine

Layers L0 to L18 are the ledger: the rungs of the stack from silicon to content. A repository declares the layers it serves; the organization records them as a custom property on the repository.

Waves

A wave is when a repository’s first crate becomes buildable. Wave 1 is the spine and the platform; later waves follow the dependency rings outward. The public Roadmap project mirrors the catalog’s waves, layers, readiness and rings as fields.

Changes that cross a repository

Anything that changes an interface or touches more than one repository goes through an RFC in the rfcs repository: a template, a comment window, a decision log. Interfaces are WIT packages and wire schemas in interfaces; binding crates are generated from them.

Sign-off and licensing

Every commit carries a Developer Certificate of Origin sign-off (git commit -s); the organization enforces it. Code is licensed Apache-2.0 OR MIT; content and specifications are CC-BY-4.0.

Branches, reviews, releases

  • main takes changes by pull request, with one approving review, code-owner review, resolved threads, signed commits and a linear history. Platform-ring repositories require two reviews.
  • Release branches are release/**; release tags are immutable.
  • The suite repository pins every crate in one lockfile and builds the whole suite nightly. Release trains are named by year and number; the first is 2027.1.

Where the code lives

GitHub is a mirror. The canonical home of the organization will be its own forge, built in the forge repository; until then, every repository mirrors to it automatically once the mirror is stood up.

Contributing

Find something to do

Every repository labels beginner-friendly work good first issue. The organization-wide search is the fastest way in: open good first issues across the organization.

Design questions that cross repositories are RFCs: open RFCs.

Set up

cargo install pub
pub suite pull        # every repository, at the pinned revisions
pub check             # the conventions every repository must pass

Rust 1.90 or newer, edition 2024.

Make the change

  1. Open an issue, or pick one. If the change touches an interface or more than one repository, open an RFC first.
  2. Branch from main. Keep the change to one concern.
  3. Sign every commit off: git commit -s. Sign it too; main requires signed commits.
  4. pub check must pass. So must the repository’s CI.
  5. Open a pull request. One approving review from a code owner merges it; platform-ring repositories need two.

Provenance

If you consulted an existing implementation while working, say so in the pull request. PROVENANCE.md in each repository records what may and may not be consulted for that component; the kind/provenance label is for questions about it.

Conduct and security

The code of conduct applies everywhere in the organization. Security reports go to hello@publicsoftware.dev or through private vulnerability reporting on the repository; see the security policy.

Glossary

Catalog. The machine-readable ledger of every repository: purpose, ring, layers, wave, contents. It lives in the catalog repository and is the source of truth for GitHub descriptions, topics, custom properties, the organization README and this handbook.

Ring. A repository’s dependency tier: spine, platform, system, domain or standards. Dependencies point inward only. Each ring has a colour in the identity.

Layer. A rung of the stack, L0 (silicon) to L18 (content). A repository serves one or more layers; all means the whole ledger.

Wave. The roadmap phase in which a repository’s first crate becomes buildable, 1 to 5.

Readiness. How far a repository’s flagship component has come: shipped, partial, seed or none.

Tier. The review tier of a repository: incubating, stable, core or archived.

Release train. A coordinated release of the whole suite, named by year and number, for example 2027.1. The suite repository’s lockfile pins it.

Spec-first cleanroom. Implementing from a specification and its conformance suite rather than from another implementation, with provenance recorded.

RFC. A design proposal that crosses repositories or changes an interface; lives in the rfcs repository with a decision log.

DCO. Developer Certificate of Origin; the Signed-off-by line every commit carries.

WIT. The WebAssembly Interface Types language, used in interfaces to define every cross-repository API as public:<area>/<interface>@x.y.z packages.

pub. The organization’s command-line tool: scaffolds repositories, checks conventions, syncs the catalog to GitHub, pulls and builds the suite.