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>
59 lines
2.8 KiB
Markdown
59 lines
2.8 KiB
Markdown
---
|
|
name: schunix-licensing
|
|
description: "SchOS is GPL-2.0-or-later since 2026-10-22 (was Apache-2.0); Linux code now allowed, but no Apache/GPLv3 code in the kernel"
|
|
metadata:
|
|
node_type: memory
|
|
type: project
|
|
originSessionId: a665e14b-86bd-4b41-a228-51377f3e9225
|
|
modified: 2026-08-08T16:18:39.569Z
|
|
---
|
|
|
|
**`LICENSE` is GPL-2.0-or-later** since 2026-10-22, copyright *Nexoniarz*, sole
|
|
author. It was Apache-2.0 before and was never published under it. Nexoniarz
|
|
chose GPL for copyleft ("I can't be also too liberal because people just mostly
|
|
steal that work") and so Linux code can be used. They picked "or-later" over
|
|
"only" on my recommendation.
|
|
|
|
**The rule that replaced "Linux no":** a single linked binary has to pick one
|
|
GPL version. Linux code (GPL-2.0-only) makes it GPLv2; Apache-2.0 or GPLv3 code
|
|
makes it GPLv3. They can't share a binary, so **the kernel takes no Apache-2.0
|
|
or GPLv3 code**. Separate userland programs may be GPLv3 or Apache. Data files
|
|
such as Roboto (Apache-2.0) are aggregation, and that holds inside the ramdisk
|
|
too. BSD 4-clause code is now a hard **no** (GPL-incompatible).
|
|
|
|
**LDLS still ships no `.ko`.** That is policy now, not a legal requirement. The
|
|
`.gitignore` `*.ko` rule and `RAMDISK_EXCLUDE` stay.
|
|
|
|
**Settled, do not reopen:** the old "Apache-2.0 but shared-source" debate was
|
|
dropped from the docs on 2026-08-08. The question that matters to them is when
|
|
to publish, and the standing answer is still never
|
|
([[nexoniarz-sharing-preference]]).
|
|
|
|
**Binding regardless:**
|
|
- The kernel derives from xv6 (MIT). `LICENSE.MIT` must not be deleted.
|
|
- `ports/` is other people's code: musl, toybox, mksh, zsh, ncurses, lwIP,
|
|
kilo and fastfetch are all permissive. `NOTICE` carries the attributions.
|
|
|
|
New first-party files carry `// SPDX-License-Identifier: GPL-2.0-or-later`.
|
|
The policy is in `docs/licensing.md`. See [[schunix-roadmap-and-projects]].
|
|
|
|
|
|
## fs.c is third-party, and was unattributed until 2026-08-09
|
|
|
|
`kernel/fs/fs.c` (and parts of `tools/mkfs.c`) derive from **"New File System
|
|
For XV6"** by Qi Ma, Leyi Pan, Ao Sun and Peiran Xu -- **MIT License**. Nexoniarz
|
|
mentioned the provenance in passing; the tree had **no attribution at all**,
|
|
only a comment crediting xv6. That was a live compliance gap, since MIT requires
|
|
the notice be retained in substantial portions.
|
|
|
|
Their work is what the HTree directory index (`BKDRHash`, `HASHRANGE`,
|
|
`OVERFLOW_DIR_START`), the Ext4-style extents (`T_EXTENT`), the inode bitmap and
|
|
`divesymlink` all are. Now credited in `NOTICE` and in fs.c's header.
|
|
|
|
**The obligation does not go away when fs.c does.** It attaches to every copy
|
|
already made, so the NOTICE entry stays even after the SchFS migration deletes
|
|
the file.
|
|
|
|
**The general lesson:** ask where code came from before assuming it is
|
|
first-party. "It is in our tree and looks like xv6" was wrong here, and the only
|
|
reason it surfaced was an offhand remark.
|