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>
2.8 KiB
| name | description | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| schunix-licensing | 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 |
|
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.MITmust not be deleted. ports/is other people's code: musl, toybox, mksh, zsh, ncurses, lwIP, kilo and fastfetch are all permissive.NOTICEcarries 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.