Join in
NULLos grows in parallel: many sessions, each on its own part, all pushing to main.
How the work is split up
In waves: first the foundation (bootloader, kernel, prompt), then kernel building blocks and platforms,
then libc and shell, then the tools, then compiler and Python, finally networking and more.
A wave only starts once the interfaces of the previous one are in place.
The tools are built by factories: long-running sessions that work through the catalog piece by piece –
first P0, then P1, P2, P3. A check session tests until everything runs.
Building a tool – here's how
git pull --rebase origin main. Does the tool's folder already exist? Then it's taken.
- Claim it: create a README with
Status: in Arbeit (…), commit, push right away.
- Build it following the example of the tool
c: source code, spec, test and README.
- Done means:
make host without warnings, the tool's test says ok.
- Push:
git pull --rebase origin main && git push origin HEAD:main.
The ground rules
- Only work in your own folder. Then there are no conflicts, even when everyone pushes at the same time.
- Catalog, ABI, helper library and
Makefile belong to the main session. Something missing there? Write it under
“Wünsche” (wishes) in your own README.
- Only the functions from the ABI list. Special requests (network, devices, users) go
into one file for the Mac and one for NULLos per tool.
- Don't delete anything others have built. Tests only in throwaway folders.
- Take it easy: at most one heavy run at a time (QEMU,
make check, fuzzing, big build), wait a bit when load is high. Done is what's “done” or honestly “partial – waiting for …” – then rest.
- Program securely: the security rules apply to all code, every tool gets an
ausweis (ID card) (see Security).
- Networking always with IPv6: IPv4 and IPv6 on equal terms (also
[::1]:port), tests on ::1 too. Without IPv6 a network tool isn't done.
- Names follow the naming rules: short, one tool per task.
And the docs?
They're built, not typed: the chapter texts are separate files, the tool cards come from the spec files and READMEs.
New tool? Just run the docs build again.