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:
parent
42008c26c0
commit
59aff881ac
21 changed files with 175 additions and 141 deletions
|
|
@ -16,6 +16,7 @@ its distribution.
|
|||
| Kernel | **SchIFT** | Multi-core x86-64 kernel with a modular VFS |
|
||||
| Filesystem | **SchFS** | Transactional, copy-on-write, the root filesystem |
|
||||
| API | **SchAPI** | The native programming interface — *designed, not built* |
|
||||
| Compositor | **Schcom** | SchOS's own compositor — v0 runs ([../plan/roadmap.md](../plan/roadmap.md) §5) |
|
||||
| Packages | **apk** | Alpine's package manager manages the root; SchOS itself is the package `schos-base` |
|
||||
|
||||
Twelve virtual terminals sit under all of it -- `/dev/tty1`..`tty12`, Ctrl+Alt+F1..F12
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@ driver and the `evdev` input driver, Window Maker as the window manager, and `xt
|
|||
`startx` runs `wmaker`. Nothing here is written by SchOS except the kernel interfaces it
|
||||
stands on and four small files in `tools/posix/mkaroot.sh`.
|
||||
|
||||
**Xorg is the desktop for now, not for ever.** SchOS's own compositor, Schcom, is the road to a desktop of its own — the installer's
|
||||
GUI first, SchDE on top later ([../plan/roadmap.md](../plan/roadmap.md) §5).
|
||||
|
||||
## Why X and not Wayland
|
||||
|
||||
Every Wayland compositor worth running — labwc, and everything built on wlroots — needs
|
||||
|
|
|
|||
|
|
@ -328,18 +328,16 @@ because it is easy to get wrong in both directions:
|
|||
|
||||
- **Distribution is what triggers the GPL.** SchOS is GPL-2.0-or-later, so shipping a
|
||||
GPL-2.0-only driver in an image is *lawful* — see [../licensing.md](../licensing.md) §6 —
|
||||
and the owner has decided it is allowed (code and firmware blobs). The repository does
|
||||
not carry one all the same: `.gitignore` refuses `*.ko`, and the modules are staged into
|
||||
a *local* image from the build machine's own Linux kernel (`make ldls-stage`,
|
||||
`make ldls-r8169`), where the matching BTF is.
|
||||
and the owner has decided it is wanted (code and firmware blobs). The ISO ships Linux's
|
||||
r8169 set. The repository holds no binary: `.gitignore` refuses `*.ko`, and
|
||||
`make ldls-r8169` stages the modules from a Linux build, where the matching BTF is.
|
||||
- **Implementing a loader is not copying.** Writing support for a module format and
|
||||
a driver ABI from published documentation produces our own work; the layouts come
|
||||
from the kernel's BTF at load time on the user's machine, so the source holds none
|
||||
of Linux's.
|
||||
|
||||
The loader is ours and GPL-2.0-or-later; what it loads is not in the tree.
|
||||
`RAMDISK_EXCLUDE` and `NOTPORTS` are the mechanisms that keep that true mechanically
|
||||
rather than by intention.
|
||||
The loader is ours and GPL-2.0-or-later; what it loads is Linux's, unmodified, with its own
|
||||
licence and source recorded in `NOTICE`.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ first thing here.
|
|||
| **About** | Pixels and text | *Frames* |
|
||||
| **Operations** | `draw_pixel`, `fill_rect`, `putc`, `text_at` | `acquire`, `present`, `wait_vblank` |
|
||||
| **Buffering** | None. Direct writes to the scanout. | Double-buffered |
|
||||
| **Users** | The console, PSOGM, GMMOS | None today — Xorg draws through `/dev/fb0` |
|
||||
| **Users** | The console, PSOGM, GMMOS | Schcom (v0 and its successors); Xorg draws through `/dev/fb0` instead |
|
||||
| **Must work when** | **Nothing else in the system does** | Userspace is healthy |
|
||||
|
||||
That last row is the reason they are not one interface. The console and the
|
||||
|
|
|
|||
|
|
@ -50,20 +50,25 @@ Every one was a call that succeeded, returned zero, and did nothing.
|
|||
|
||||
Five, and everything else is an implementation of them.
|
||||
|
||||
### 1. Linux code may ship; so far the tree holds none
|
||||
### 1. Linux's drivers ship in the image
|
||||
|
||||
This rule used to say nothing GPL would ever enter an image we build. It was a policy,
|
||||
never a licence constraint — SchOS is GPL-2.0-or-later, and GPL-2.0-only code combines
|
||||
with it — and the owner has overridden it: **Linux code and firmware blobs may be
|
||||
shipped.** What survives of the rule is mechanical, not legal. The repository carries no
|
||||
`*.ko` (`.gitignore` refuses them), and `make ldls-stage KO=…` / `make ldls-r8169` stage
|
||||
modules into a *local* image from the Linux kernel on the build machine, because a module,
|
||||
its dependencies and the BTF that describes them have to come from the same Linux build
|
||||
and that kernel is the easiest place to get a matching set.
|
||||
SchOS is GPL-2.0-or-later, and GPL-2.0-only code combines with it, so there is no
|
||||
licensing reason to keep Linux's drivers out of an image. They are in: the **r8169 set**
|
||||
(`mdio-bus`, `libphy`, `mdio_devres`, the Realtek PHY driver and `r8169`, unmodified) and
|
||||
the RTL8168 PHY firmware are what the ISO carries for the laptop's network, with their
|
||||
licence and corresponding source recorded in `NOTICE`
|
||||
([../licensing.md](../licensing.md) §6).
|
||||
|
||||
Shipping one is therefore a decision about the release, not about the code: an ISO that
|
||||
contains `r8169.ko` is a distribution of GPL-2.0-only code and carries the usual
|
||||
obligation — its source goes with it — see [../licensing.md](../licensing.md) §6.
|
||||
(An earlier version of this rule said the opposite — that LDLS would ship the layer and never
|
||||
the thing it loads. That was written when SchOS was Apache-2.0 and the combination could not
|
||||
be distributed; it stopped being true with the move to the GPL, and the owner has said Linux
|
||||
code and blobs may be shipped.)
|
||||
|
||||
What is left is mechanical. The repository holds no `*.ko` — a binary does not belong in git, so
|
||||
`.gitignore` refuses them — and `make ldls-r8169` (before `make iso`) stages the set from a
|
||||
Linux build, together with its BTF, because a module, its dependencies and the BTF that
|
||||
describes them have to come from the same build. `make ldls-stage KO=…` does the same for any
|
||||
other module, which is then a distribution of *that* module's code, under its own licence.
|
||||
|
||||
### 2. It runs in a process, never in the kernel
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue