docs: 1.0 is reached; Schcom stays; Linux's r8169 set ships

1.0: the acceptance test drops its reboot clause (a live system is the finish line) and passes. Schcom is kept with a
job: the installer's GUI first, SchDE on top later (roadmap section 5). The old 'LDLS ships no Linux code' policy is
gone from ldls/devices/licensing/Makefile/.gitignore/ldlsd; NOTICE records the r8169 modules (GPL-2.0-only) and the
Realtek firmware. The download button points at the v0.1.0 release asset; the stale 64 MB ISO under docs/Website is
removed. mkaroot.sh's -dumbSched comment no longer claims SchOS has no threads.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EVRhxi9zpdW2uDUN4FVcao
This commit is contained in:
Nexoniarz 2026-10-26 08:23:20 +01:00
commit 59aff881ac
21 changed files with 175 additions and 141 deletions

View file

@ -267,43 +267,33 @@ copied file is a file to be understood, attributed and maintained forever.
---
## 6. LDLS, and the distribution boundary
## 6. LDLS, and shipping Linux's drivers
[architecture/ldls.md](architecture/ldls.md) runs Linux drivers. This section
was written when SchOS was Apache-2.0 and the boundary below was a legal
necessity. Under GPL-2.0-or-later it was a **project policy** instead, and the owner
has since set the policy aside: Linux code and firmware blobs **may be shipped** with
SchOS, provided the source goes with them (GPLv2 §3). The repository still carries no
`.ko` — they are staged from the build machine's Linux kernel (`make ldls-stage`,
`make ldls-r8169`) — so shipping one is a decision about a release, and the release has
to carry the corresponding source.
[architecture/ldls.md](architecture/ldls.md) runs Linux drivers. This section used to be about a
distribution boundary: written when SchOS was Apache-2.0, it said a GPL-2.0-only `.ko` could not be
shipped and so SchOS would ship the layer and never the modules. **That no longer holds.** SchOS is
GPL-2.0-or-later, GPL-2.0-only code combines with it, and the owner has decided that Linux code and
firmware blobs are shipped. The ISO carries Linux's **r8169 set** — `mdio-bus`, `libphy`,
`mdio_devres`, the Realtek PHY driver and `r8169`, unmodified — and the RTL8168 PHY firmware.
### What shipping them asks of us
- **The licence stays with the code.** The modules are GPL-2.0-only, the firmware is Realtek's, redistributed
under linux-firmware's terms. `NOTICE` lists both, with where they come from.
- **The source goes with the binary** (GPLv2 §3). The modules are stock builds of the Linux kernel version
that `make ldls-r8169` took them from, so the corresponding source is that release of Linux, unmodified.
- **Nothing combines at link time.** The modules are loaded into an ordinary process by our loader; our code
is GPL-2.0-or-later, theirs GPL-2.0-only, and both are GPLv2-compatible whichever way one reads "combined".
- **No binary in git.** The repository stays source-only: `.gitignore` refuses `*.ko`, and `make ldls-r8169`
stages the set from a Linux build into the image.
### LDLS is ours
Every file under `ldls/` is ours, GPL-2.0-or-later. The loader was written from
the ELF-64 gABI and the x86-64 psABI; the shim is written under the rule in
[architecture/ldls.md](architecture/ldls.md). Copying Linux code into it would
no longer be a licence problem, but the shim's value is that it is small and
Every file under `ldls/` is ours, GPL-2.0-or-later. The loader was written from the ELF-64 gABI and the
x86-64 psABI; the shim is written under the rule in [architecture/ldls.md](architecture/ldls.md). Copying
Linux code into it would no longer be a licence problem, but the shim's value is that it is small and
understood, so the existing rule stands.
### The combination is the user's
| | licence | who distributes it |
|---|---|---|
| `ldls/` — loader, shim, host | **GPL-2.0-or-later** | us |
| a `.ko` | GPL-2.0-only, usually | the user's distribution |
| the two running together in a process | — | **nobody** |
GPLv2 §0 is explicit about where its obligations attach:
> Activities other than copying, distribution and modification are not covered
> by this License; they are outside its scope. **The act of running the Program
> is not restricted.**
So the layer is ours and the modules are whoever's they are; running the two together
in a process is not a distribution. `RAMDISK_EXCLUDE` and the `*.ko` rule in `.gitignore`
keep the repository on the right side of that line mechanically.
### `EXPORT_SYMBOL_GPL` does not apply
Linux marks much of its internal API `EXPORT_SYMBOL_GPL`, and modules carry