$RodHat_
MOTD

FreeBSD 16 evicted the last GPL tenant from base. The kernel has thoughts.

Published by

FreeBSD 16 evicted the last GPL tenant from base. The kernel has thoughts.
Photo: AI-generated — no human photographer / RodHat AI Cover

The ticket was opened in February. It’s now merged into what will become FreeBSD 16. dialog — the ncurses-based terminal widget utility, the thing that draws the installer boxes and the text menus — has been replaced by bsddialog, a BSD-licensed clone with functionally identical behavior. The last piece of GPL-licensed code in FreeBSD’s base system is gone.

Immediately after announcing this, someone went and looked at the kernel and found GPL code in there.

lol.

Thirty years of tenant notices

The GPL vs. BSD license fight is older than most of the people reading this. The short version: GPL code is “viral” — ship it in a product and the GPL wants to propagate to derivative works, source disclosure becomes mandatory, and the entire category of closed-source distribution becomes legally complicated. BSD license says “here, do whatever you want, just credit us.” FreeBSD’s licensing philosophy has always been firmly in the second camp, which created an obvious long-term problem: early FreeBSD imported a lot of GNU userland tools because they were excellent and freely available, and the GNU tools come with strings attached.

The thirty-year project has been methodically replacing those tools with BSD-licensed equivalents or original implementations. GCC out, Clang/LLVM in. GNU grep out, BSD grep in. Binutils replaced. The GNU debugger situation took longer and is still complicated, but the trajectory has been consistent. Each replacement was a multi-year project because “GPL-free” is not a sprint — it’s an audit, a rewrite, years of testing in production, and then another audit to find what you missed.

dialog was the final holdout in userland. It’s not glamorous software. It draws boxes and buttons and progress bars in terminal applications. FreeBSD’s installer has depended on it since the installer was a thing. The BSD-licensed bsddialog has been in tree for a few years — the installer migrated over around 2022 — and now the last dependency on the upstream GPL dialog package has been cut. The commit is in. FreeBSD 16.0 ships GPL-free user-space.

About that kernel

The FreeBSD team made the announcement. Then, in the immediately predictable tradition of “no one reviews things until after the announcement,” someone did a pass through the kernel source and found that some GPL-licensed code is still in there.

The devs have acknowledged it, which is the right response. It’s not a cover-up. It’s the normal outcome of auditing software at scale: you miss things, you find them later, you fix them next. The kernel remnants are presumably not extensive — nobody’s claiming FreeBSD’s kernel is some closet GPL dependency nightmare — but “GPL-free base system” technically requires “GPL-free kernel” to be a true statement, and that qualification matters to the people for whom this matters.

FreeBSD 16.0 isn’t expected until December 2027. There’s time to sort it. The ticket will be filed, the code will be reviewed, the remnants will be replaced or removed. This is how the project works. Nothing about this is catastrophic. It is, however, genuinely funny that the announcement and the correction came within weeks of each other.

Why this matters and why it doesn’t

For the vast majority of FreeBSD users: this changes nothing about how your system runs, how your jails work, or how your ZFS pools behave. The runtime characteristics of bsddialog and dialog are effectively identical. You won’t notice.

For companies that ship FreeBSD derivatives, embed FreeBSD in appliances, or have legal teams that review license exposure: this is the whole point. GPL in your distribution creates obligations. GPL-free base means simplified legal review, simpler distribution terms, fewer conversations with counsel about what “derivative work” means in your specific shipping context. NetApp has shipped FreeBSD under ONTAP for decades. Juniper runs JunOS on FreeBSD. The list of commercial FreeBSD derivatives is long, and the companies on it have legal departments that have cared about this for a long time.

The philosophical argument is the more interesting one. FreeBSD’s position has always been that software freedom means freedom to do whatever you want with the code — including use it in proprietary products. Stallman’s position has always been that software freedom means requiring everyone downstream to preserve that freedom. Both positions are internally coherent. They are not reconcilable. Thirty years of FreeBSD’s license hygiene project is the practical expression of the first position: we want to be able to hand this to anyone, without conditions, and have them do anything with it.

That’s a legitimate philosophy. It’s not the only legitimate philosophy. The argument is not going to be resolved by one project finishing a license audit.

The bsddialog thing specifically

This is the part I find interesting. FreeBSD didn’t petition the dialog upstream to relicense. FreeBSD didn’t fork dialog and slap a different header on it. They wrote a new implementation from scratch, let it mature in tree for a few years, migrated the installer, and then cut the dependency. That’s the BSD way: if you don’t like the license terms, write your own. The FreeBSD porter’s handbook has guidance on this going back to the ’90s.

bsddialog is a genuine rewrite, not a wrapper. It supports the same command-line interface as dialog so existing scripts just work. The UI behavior is identical. The implementation underneath is different. Nobody had to ask anyone’s permission.

That’s the part that GPL advocates and BSD advocates will interpret completely differently. One side sees a thirty-year project to evade copyleft obligations. The other sees a thirty-year demonstration that permissive licensing actually produces software people can use. Both are reading the same facts.

FreeBSD 16.0 in December 2027. The kernel remnants will be cleaned up before then or they won’t ship the GPL-free claim. My money is on “they’ll find it and fix it in the next six months and nobody will write a second announcement.”

Run grep -r "GPL" /usr/src/sys/ on your FreeBSD box if you want to see what’s left. Then go file a PR if you find something they missed. That’s also how the project works.

Sources

  1. FreeBSD 16 Retires The Last Of Its GPL Code From Its Base System — Phoronix
  2. "Oopsies!" FreeBSD Devs Say There's Still GPL in the Kernel — FOSS Force