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

@ -1,6 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# SchOS ports — third-party software, one directory per port.
# All ports are permissive-licensed (MIT, BSD, 0BSD, Apache 2.0).
# Every port's licence must combine with GPL-2.0-or-later; see docs/licensing.md.
#
# ports/musl/ libc — installs headers/libs to build/ports/musl/prefix
# ports/mksh/ MirBSD Korn Shell — installed as sysroot/bin/sh
@ -17,7 +17,7 @@
# Ports that live in this directory but are deliberately not built by `make`.
# Empty for now; the filter stays because the reason it existed will recur --
# a port whose licence cannot be combined with Apache-2.0 can be kept here for
# a port whose licence cannot be combined with GPL-2.0-or-later can be kept here for
# local testing but must never be built into a SchOS image.
NOTPORTS :=
PORTS := $(filter-out $(NOTPORTS), \

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# fastfetch -- system information, MIT: https://github.com/fastfetch-cli/fastfetch
#
# Here because it is a good acceptance test, not because SchOS needs a fetch

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# kilo — BSD-2-Clause: https://github.com/antirez/kilo
#
# SchOS's text editor, installed as sysroot/bin/kilo with `edit` beside it.
@ -11,9 +11,9 @@
#
# The whole editor is one 1,300-line C file with no dependencies beyond libc --
# termios and TIOCGWINSZ, both of which SchOS already has because zsh needs
# them. That is the entire reason it was chosen over nano: nano is GPLv3 and
# wants ncurses at runtime, and GPLv3 cannot be combined with Apache-2.0 any
# more than GPLv2 can. See ../../docs/licensing.md.
# them. That, and licensing at the time, is why it was chosen over nano: nano
# is GPLv3 and wants ncurses at runtime, and SchOS was then Apache-2.0. Under
# GPL-2.0-or-later nano is possible, but kilo already does the job.
#
# What it does not do: no undo, no multiple buffers, no configuration, no
# mouse, no UTF-8 beyond passing bytes through. It edits one file.

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# lwIP — the TCP/IP stack. BSD-3-clause (no advertising clause); see COPYING in
# the tarball and docs/licensing.md.
#

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# Shared definitions for all SchOS ports.
# Include this at the top of each port's Makefile: include ../mk/port.mk
#

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# mksh (MirBSD Korn Shell) — permissive: https://www.mirbsd.org/mksh.htm
# Installed as /bin/sh — SchOS standardizes on "sh" as the one shell name;
# no ksh/dash/other aliases are installed or looked up by init.

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# musl libc — MIT-licensed: https://musl.libc.org/
#
# Installs into $(PREFIX) (= build/ports/musl/prefix), which port.mk exports

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# ncurses -- terminal capability database and screen library, MIT:
# https://invisible-island.net/ncurses/
#

View file

@ -1,4 +1,4 @@
/* SPDX-License-Identifier: Apache-2.0
/* SPDX-License-Identifier: GPL-2.0-or-later
*
* ncurses acceptance test for SchOS.
*

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# toybox — 0BSD-licensed: https://landley.net/toybox/
# Provides SchOS's core utilities (ls, cat, cp, mv, rm, mkdir, ...) as a
# single multicall binary, installed under sysroot/bin/ once per applet name.

View file

@ -1,4 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-2.0-or-later
# zsh -- the Z shell, MIT-like: https://www.zsh.org/
#
# Installed as /bin/zsh, *beside* mksh, which keeps /bin/sh.