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.
| Repository | Purpose | Layers | Wave | Contents |
|---|---|---|---|---|
| catalog | Machine-readable ledger + roadmap; source of truth for GitHub descriptions, topics, properties and the org README. | L18 | 1 | catalog.toml aggregate · schema · site generator · plugin registry · blob-free hardware list |
| interfaces | Every cross-repo API as WIT packages and wire schemas, with generated binding crates. | all | 1 | public:doc/* · ui/* · plugin/* · identity/* · store/* · media/* · net/; pub-interfaces- crates |
| suite | The superproject: lockfile pinning every crate, nightly whole-suite build, compatibility matrix, release trains, reference images. | all | 1 | Cargo.lock · compat-matrix · release notes assembler · reference platform images |
| rfcs | Design proposals that cross repos or change an interface. Template, comment window, decision log. | all | 1 | RFC-0000 template · accepted/ · rejected/ |
| docs | The suite handbook: architecture, contracts, contributor guide, per-repo mdBooks aggregated into one site. | all | 1 | mdBook site · architecture · contributor guide · glossary |
| pub | The org CLI: scaffold repos from templates, lint conventions, sync catalog → GitHub, pull and build the whole suite. | L2 | 1 | pub new · pub check · pub catalog sync/render · pub suite pull/build · pub labels sync · pub a11y-audit |
| templates | Repo and crate templates the CLI stamps out: lib, app, service, plugin, spec. | all | 1 | template-lib · template-app · template-service · template-plugin · template-spec |
Platform
The crates every repository uses.
| Repository | Purpose | Layers | Wave | Contents |
|---|---|---|---|---|
| platform | Foundational crates every repo uses: errors, config layering, tracing facade, paths, i18n (fluent), settings schema, diagnostics bundle. | L4 | 1 | pub-platform-config · -log · -i18n · -paths · -settings · -diagnose · -secrets-client |
| design-system | Tokens, type scale, icons, motion, shortcut map, command palette spec — the one look and feel. | L10 | 1 | tokens (JSON+Rust) · icon set · shortcut registry · theme engine |
| ui | The GUI toolkit driven to GTK/Qt completeness with AccessKit and IME built in; app shell, window/tab model, settings UI, command palette. | L10, L4 | 2 | pub-ui (toolkit) · pub-ui-shell · pub-ui-widgets · pub-ui-a11y · pub-ui-ime |
| doc-model | CRDT document graph + container format + embed/export protocol. Every productivity and creative document is one of these. | L12 | 1 | pub-doc-model · pub-doc-container · pub-doc-sync · export adapters |
| plugin-runtime | WASM Component Model host, capability policy, plugin test-kit, plugin packaging. | L2 | 1 | pub-plugin-host · pub-plugin-sdk · pub-plugin-testkit · pub-plugin-pack |
| identity | IdP (Kanidm-derived), OIDC/passkeys client, account picker, secrets vault client, attestation verifier (later), digital ID wallet core. | L6 | 1 | pubd-idp · pub-identity-client · pub-vault · pub-attest (wave 4) · pub-wallet |
| pkg | Content-addressed reproducible package manager (Nix model) and the build cache; the distribution mechanism for the suite. | L4 | 1 | pub-pkg · pubd-cache · store format · transparency-log client |
| observe | Metrics/trace/log schema, OTel exporters, dashboards & alerting product (Grafana-class) on the Rust stores. | L8 | 1 | pub-observe · pubd-dash · alert rules · SIEM UI (with security) |
System
Toolchain, silicon, kernel, base, infrastructure, media, shells.
| Repository | Purpose | Layers | Wave | Contents |
|---|---|---|---|---|
| compiler | Rust-native optimizing backend on Cranelift, bootstrap seed, scripting runtimes to parity, C→Rust migration tooling. | L2 | 1 | cg-clif optimization · seed interpreter · rustpython/piccolo parity · c2rust idiomatic pass |
| linker | Wild linker with Mach-O and PE, assembler and object tooling for all targets. | L2 | 1 | pub-ld · pub-as · object tooling |
| devtools | Native debugger (DAP), pure-Rust fuzzer, profilers, formal-verification harness integration. | L2 | 1 | pub-dbg · pub-fuzz · pub-prof · verify harness |
| firmware | Rust UEFI implementation, oreboot on openSIL boards, TPM 2.0 firmware, BMC (Redfish), firmware update service. | L1 | 1 | pub-uefi · oreboot ports · pub-tpm · pub-bmc · pubd-fwupd |
| hdl | Rust HDL, fast cycle simulator, verification library; the root of the silicon chain. | L0 | 1 | pub-hdl (language) · pub-sim · pub-hdl-verify |
| eda | RTL-to-GDS flow, FPGA bitstream reverse engineering and place-and-route, targeting IHP/sky130 and open FPGAs. | L0 | 2 | pub-synth · pub-pnr · pub-timing · pub-drc · fpga-bits |
| silicon | Open chip designs: root of trust, RF front-end control, FPGA GPU, reference RISC-V platform definitions; shuttle submissions. | L0 | 3 | rot chip · rf-fe · fpga-gpu · riscv-platform · shuttle/ runs |
| kernel | Kernel hardening (Redox-derived microkernel and Asterinas-style Linux-ABI), scheduler, capability security, driver ABI, libc. | L3, L4 | 1 | pub-kernel · pub-libc (relibc) · syscall ABI · capability model |
| drivers | Device drivers: GPU (Nova/Tyr/Asahi tracks + Rust Vulkan userspace), storage, USB, network, Wi-Fi/BT host, audio server, camera, input, power. | L3 | 2 | gpu/ · storage/ · usb/ · net/ · wifi-bt/ · audio (PipeWire-class) · camera · input · power |
| base | Init & service manager, journal, util-linux/procps parity, disk encryption, accessibility bus, screen reader. | L4 | 1 | pubd-init · pubd-journal · utils · pub-crypt (LUKS2) · pub-a11y-bus · pub-reader |
| virt | Type-1 hypervisor, VMM integration, container runtime integration, sandboxing. | L3 | 2 | pub-hv · vmm glue · sandbox profiles |
| net | Host TCP/IP stack, routing suite + dataplane, 5G core, push distributor, SSH daemon, VPN suite. | L5 | 1 | pub-netstack · pubd-route · pubd-5gc · pubd-push · pubd-ssh · vpn |
| sdr | SDR framework with GPU DSP, GNSS receiver, SDR 4G/5G UE (lab/private-network) — the modem programme. | L0, L5 | 1 | pub-sdr · pub-gnss · pub-ue |
| store | Relational engine (Postgres-class), KV, cache (Valkey-compatible), graph, object/block store (Ceph-class), streaming (Kafka-protocol), ETL, spreadsheet engine. | L7 | 1 | pubd-sql · pub-kv · pubd-cache · pubd-graph · pubd-objstore · pubd-stream · pubd-flow · pub-calc |
| cloud | Container orchestration control plane (K8s-API compatible), IaaS control plane, IaC engine, config management, OCI registry, CI runner. | L8 | 1 | pubd-orch · pubd-iaas · pub-iac · pub-cfg · pubd-registry · pubd-ci |
| forge | Code forge (repos, issues, reviews, packages, federation) on gitoxide; the future canonical home of this org. | L8 | 2 | pubd-forge · ForgeFed · mirror bot |
| security | Secrets manager + PKCS#11, CA product, endpoint sensor + detection engine, SIEM correlation, transparency log. | L6 | 1 | pubd-secrets · pubd-ca · pub-sensor · pubd-detect · pubd-translog |
| comms | Mail client, chat clients (Matrix, Signal-class), SIP/PBX, video-meeting SFU + client, federated social server. | L5, L12 | 1 | pub-mail · pub-chat · pubd-pbx · pubd-meet · pubd-social |
| graphics | Shader toolchain hardening (naga), software Vulkan/WebGPU rasterizer, colour management, OCR. | L9 | 1 | pub-naga-ext · pub-swrast · pub-cms · pub-ocr |
| media | FFmpeg-class framework, Opus encoder + IAMF, player, streaming server, screen capture / live production. | L9 | 1 | pub-media (framework) · pub-opus · pub-iamf · pub-player · pubd-stream-media · pub-studio |
| js | JavaScript engine with JIT tiers; Node-class runtime on it. | L11 | 2 | pub-js (Boa-derived) · pub-js-jit · pub-node |
| desktop | Compositor features, desktop environment completeness, input methods, portals, session. | L10 | 2 | pub-comp · pub-desktop · pub-ime · portals |
| mobile | Mobile OS assembly: modem quarantine architecture, app store + reproducible builds, push, wallet integration, device support. | L10 | 3 | pub-mobile · modem-iso · pub-store · device/ |
| web | Servo work (a11y, layout, editing), browser product, PDF render/edit, maps renderer + router, CMS, analytics. | L11 | 1 | servo tracks · pub-browser · pub-pdf · pub-maps · pubd-cms · pubd-analytics |
| ai | Burn/CubeCL work on open backends, inference server, distributed training, TTS, voice assistant, CV, model recipes. | L15 | 1 | burn tracks · cubecl-vulkan · pubd-infer · pub-dist · pub-tts · pub-assistant · pub-cv · recipes/ |
Domain
The products.
| Repository | Purpose | Layers | Wave | Contents |
|---|---|---|---|---|
| office | Word processor, spreadsheet application, presentations, document format libraries. | L12, L7 | 1 | pub-office-docfmt · pub-office-writer · pub-office-sheets · pub-office-slides |
| workspace | Notes & knowledge base, project management, file sync, whiteboard, design tool, e-signature, calendar/contacts server, personal finance, e-book library, translation. | L12 | 1 | pub-notes · pub-pm · pubd-sync · pub-board · pub-design · pub-sign · pubd-cal · pub-money · pub-books · pubd-translate |
| home | Home automation hub with Matter, assistant integration, TV/set-top shell, wearables. | L12, L10 | 2 | pubd-home · pub-tv · pub-watch |
| imaging | Raster editor (Graphite raster), vector editor, RAW development, page layout, font editor. | L13 | 1 | pub-raster · pub-vector · pub-raw · pub-layout · pub-fonted |
| video | Video editor (NLE) and compositing / motion graphics. | L13 | 3 | pub-nle · pub-comp |
| audio | Digital audio workstation, audio editor, music notation, plugin collection. | L13 | 2 | pub-daw · pub-audioedit · pub-notation · plugins/ |
| 3d | 3D content creation suite (Blender-class) and game engine editor (Godot-class on Bevy), XR runtime. | L13, L17 | 2 | pub-dcc · pub-engine-editor · pub-xr |
| cad | B-rep CAD kernel, parametric CAD application, CAM, meshing. | L14 | 1 | pub-brep · pub-mcad · pub-cam · pub-mesh |
| engineering | PCB EDA, SPICE, FEA, CFD, systems modelling (Modelica), PLC runtime, SCADA/HMI, DAQ, robotics tooling. | L14 | 1 | pub-pcb · pub-spice · pub-fea · pub-cfd · pub-modelica · pub-plc · pub-scada · pub-daq · pub-robot |
| science | Numerical computing environment, statistics, computer algebra, notebooks, GIS, medical imaging viewer, bioinformatics, solvers. | L14 | 1 | pub-num · pub-stats · pub-cas · pubd-notebook · pub-gis · pub-dicom · pub-bio · pub-solve |
| business | Accounting core, ERP, CRM, billing/e-invoicing, HR & payroll, e-commerce, helpdesk, BI, PLM/MES. | L16 | 2 | pub-ledger · pub-erp · pub-crm · pub-billing · pub-hr · pub-shop · pub-desk · pub-bi · pub-plm |
| finance | Core banking, trading & market data, account-to-account wallet. | L16 | 2 | pubd-bank · pub-trade · pub-wallet-pay |
| health | FHIR-native EHR, LIMS, open clinical terminology. | L16 | 1 | pub-ehr · pub-lims · openmed/ |
| civic | Rules engine (tax/benefits), rules-as-code corpus tooling, LMS, elections, legal research. | L16 | 1 | pub-rules · corpus tooling · pub-lms · pub-vote · pub-law |
| games | Win32/DirectX compatibility layer, emulation & preservation, server-authoritative anti-cheat standard + reference, storefront/launcher. | L17 | 1 | pub-compat · pub-emu · pub-fairplay · pub-launcher |
Standards
Living specs and open data.
| Repository | Purpose | Layers | Wave | Contents |
|---|---|---|---|---|
| specs | Living specs and executable conformance suites for paywalled or closed standards, and for the suite’s own formats. | L18 | 1 | step-living · iec61131-living · iso8583-living · doc-container spec · plugin ABI spec · attestation spec |
| content | Open 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). | L18 | 1 | rules/ · 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:
| Ring | Contains | May depend on |
|---|---|---|
| spine | the catalog, the interfaces, the suite lockfile, RFCs, docs, the pub CLI, templates | nothing outside itself |
| platform | the crates every repository uses: config, logging, i18n, the UI toolkit, the document model, the plugin runtime, identity, packaging, observability | spine |
| system | toolchain, silicon, kernel, base, infrastructure, media, platform shells | spine, platform |
| domain | the products: office, workspace, home, imaging, video, audio, 3D, CAD, engineering, science, business, finance, health, civic, games | spine, platform, system |
| standards | living specs and open data | spine |
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
maintakes 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
suiterepository pins every crate in one lockfile and builds the whole suite nightly. Release trains are named by year and number; the first is2027.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
- Open an issue, or pick one. If the change touches an interface or more than one repository, open an RFC first.
- Branch from
main. Keep the change to one concern. - Sign every commit off:
git commit -s. Sign it too;mainrequires signed commits. pub checkmust pass. So must the repository’s CI.- 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.