Open-Source Wikis

/

Linux

/

Fun facts

torvalds/linux

Fun facts

A handful of quirks, jokes, and historical artifacts that stand out when you read the kernel source. Nothing on this page is a substitute for documentation.

The kernel's first words still ship

The boot-time entry point init/main.c carries Linus Torvalds' copyright from 1991 at the top of the file, and the recognizable start_kernel() function name has been there since before this repository's git history begins. Linux 7.1-rc1 still routes through that function on every architecture.

The "we don't break user space" rule

There is a recurring trailer in mailing list discussions — Linus said: "we don't break user space" — that is more than a meme. It is an enforced policy: changes that break working user-space programs are reverted, even if the change was technically more correct. The rule is older than git and is documented in Documentation/process/stable-api-nonsense.rst.

Almost no bots in the commit log

The kernel has effectively zero bot-attributed commits in its history. There are no dependabot[bot] or github-actions[bot] accounts; patches arrive by email through lore.kernel.org, are reviewed in public, and are applied by maintainers under their own names. The Developer Certificate of Origin, expressed by Signed-off-by: trailers, is the project's chain-of-custody record. See Documentation/process/coding-assistants.rst for how AI-assisted contributions fit in.

The long-running comments

If you grep for XXX, TODO, FIXME, or HACK across the tree, many of the matches have been there for a decade or more. Some FIXME comments are older than the people who maintain the file today. The kernel has no central tracker for these comments; they accumulate by accretion.

SPDX as the first line

Every file in the tree has, on its first line:

// SPDX-License-Identifier: GPL-2.0

(or one of a small number of approved variants such as GPL-2.0-only, GPL-2.0-or-later, LGPL-2.1-or-later, MIT, BSD-2-Clause, Dual-MIT/GPL). This was a multi-year project to replace human-readable license headers with machine-readable SPDX identifiers; it is one of the few things touched by automated tooling on a large scale.

The MAINTAINERS file

MAINTAINERS is roughly 30,000 lines of plain text mapping subsystems to people, mailing lists, and trees. It is parsed by scripts/get_maintainer.pl, which is the canonical tool for figuring out who to send a patch to. The format is human-edited; sections are sorted alphabetically by subsystem name.

Easter eggs in version names

Each kernel release used to ship with a code name in the top-level Makefile — examples include "Hurr durr I'ma ninja sloth", "Sneaky Weasel", "Roaring Lionus", "Trick or Treat". As of recent releases, the name is still set per merge window and is purely cosmetic.

The kernel does not have unit tests in the usual sense

For most of its life, the kernel had no in-tree unit-test framework — testing meant booting and running self-tests under tools/testing/selftests/. KUnit (tools/testing/kunit/) added a true in-kernel unit-test framework, but coverage is patchy and varies by subsystem. The largest, most-relied-on subsystems (scheduler, mm, RCU) still lean heavily on stress-testing and manual review rather than unit tests.

Architecture removals

The kernel adds architectures relatively rarely (LoongArch, RISC-V are the recent ones), and removes them more often than people expect. Architectures that have been deleted include Blackfin, AVR32, FRV, Tile, M32R, Metag, Score, Cris, H8/300, Unicore32, and others. The rule of thumb: if the architecture has no maintainer and no users, it goes.

"We Have Reserved A Spot For Crap"

The drivers/staging/ directory was created so that drivers that don't quite meet kernel standards can ship in tree, get fixed up, and either graduate to drivers/<bus>/ or be deleted. It is one of the largest single subsystems by file count.

The kernel ships its own git history tools

scripts/checkpatch.pl is ~10k lines of Perl that linters every patch for style, spelling, common bugs, missing Signed-off-by:, and too-long lines. It is run by maintainers on every incoming patch and is a hard gate for many subsystems.

The Rust experiment

The first Rust support landed in 6.1 (December 2022). At the time of this writing (7.1-rc1), rust/ is ~5 MB of code: a kernel crate with safe wrappers around core kernel types, plus pinning, allocation, and binding plumbing. Rust is opt-in (CONFIG_RUST=y) and not yet on the critical path of any major subsystem, but the ground floor is in place and growing every release.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Fun facts – Linux wiki | Factory