licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0

Nexoniarz is the sole author and SchOS was never published under
Apache-2.0, so this is a straight relicence. LICENSE is the FSF GPLv2 text,
every first-party SPDX header moves to GPL-2.0-or-later, and NOTICE,
README.md, docs/licensing.md and the site say so. projects/schfs-linux
follows the rest of the tree.

The GPL gives copyleft: a fork has to ship its source. It also lifts the
old "Linux drivers, never" rule, since GPL-2.0-only code combines with
GPL-2.0-or-later. "Or later" leaves room for GPLv3, but one binary still
has to pick one version, so docs/licensing.md now keeps Apache-2.0 and
GPLv3 code out of the kernel to keep Linux code possible there. BSD
4-clause code goes from "avoid" to "no", because the advertising clause
is GPL-incompatible.

LDLS still ships no .ko. That boundary is now project policy rather than
a legal requirement, and ldls.md, devices.md and licensing.md section 6
say so. refmod declares license=GPL, and ldls-check passes (27 checks).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Nexoniarz 2026-10-22 08:48:45 +02:00
commit 26bca020b6
135 changed files with 959 additions and 689 deletions

View file

@ -150,20 +150,17 @@ Another: **syscalls are declared in exactly one place**,
## Licensing
**Apache-2.0**, copyright Nexoniarz. See [LICENSE](LICENSE).
**GPL-2.0-or-later**, copyright Nexoniarz. See [LICENSE](LICENSE).
The kernel derives from xv6, which is MIT — see [LICENSE.MIT](LICENSE.MIT).
Third-party code redistributed in a built image (musl, toybox, mksh, zsh, kilo,
the fonts) keeps its own licence; [NOTICE](NOTICE) carries the attributions.
All of it is permissive — there is no GPL in an image this builds, which is why
the userland is toybox and not BusyBox and the editor is kilo and not nano. See
[docs/licensing.md](docs/licensing.md).
See [docs/licensing.md](docs/licensing.md).
Drivers may be adapted from BSD sources, which are compatible. Linux drivers are
not: GPL-2.0-only and Apache-2.0 cannot be combined and redistributed. Reading
Linux to understand hardware is fine; translating a driver is not. Best of all
is the public specification — xHCI, virtio, AHCI, e1000 — which carries no
licence on what you write from it.
Drivers may be adapted from BSD sources and, since the move to the GPL, from
Linux — GPL-2.0-only code combines with GPL-2.0-or-later, and the result ships
under GPLv2. Best of all is still the public specification — xHCI, virtio,
AHCI, e1000 — which carries no licence on what you write from it.
---