On July 7, the final change needed to eliminate all GPL code from the FreeBSD codebase was committed. As a result, FreeBSD 16 will be the first release completely free of GPL code.
I first learned about FreeBSD's effort to remove GPL code from the FreeBSD Quarterly Development Report back in 2020. Six years later, the developers have finally achieved the goal they set for themselves all those years ago.
In this article, I'd like to explain FreeBSD's relationship with the GPL and why it ultimately led to the complete purge of GPL code. Whether you are a FreeBSD user or not, I believe that a clear understanding of the challenges faced by the developers of one of the largest software development projects is very valuable — especially if you are a developer yourself. Besides, it's just an interesting story, after all.
So, to answer the question of why FreeBSD developers have been removing GPL-licensed components from the base system, you need to understand:
- what free software and the GPL license are;
- what copyleft licenses are and how they differ from permissive licenses;
- what tivoization is.
But first things first.
Free software
Software is considered free if it gives you four basic freedoms:
- to run the program as you wish, for any purpose;
- to study how the program works, and change it so it does your computing as you wish;
- to redistribute copies so you can help others;
- to distribute copies of your modified versions to others.
These four basic freedoms were formulated by the hacker Richard M. Stallman back in 1986.
Stallman began his career as a programmer at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology (MIT). In his work, he repeatedly encountered situations where being unable to fix bugs in software you depend on significantly slows you down in solving your issues.
One such episode was well described in the book "Free as in Freedom (2.0): Richard Stallman's Crusade for Free Software".
The very first chapter tells the story of a Xerox printer — an unearthly piece of tech that had been donated to the laboratory. This printer surpassed its predecessor in both speed and print quality, but eventually it became known for frequent paper jams.
Stallman wanted to fix a printer flaw at the level of the firmware that controlled the device but failed to find its source code. When he asked for the source code, he was simply turned down.
That may sound perfectly normal today, but at the time software was only beginning to be treated by corporations as intellectual property that was not freely shared.
Stallman later recalled a conversation with a person who refused him the source code:
If he had refused me his cooperation for personal reasons, it would not have raised any larger issue. I might have considered him a jerk, but no more. The fact that his refusal was impersonal, that he had promised in advance to be uncooperative, not just to me but to anyone whatsoever, made this a larger issue.
At one point, Stallman became obsessed with the idea of software freedom. He gave up everything else and set out to create a free operating system.
The project became known as GNU. He began by creating the technological foundation— development tools such as a code editor, compiler, and debugger — without which building a free operating system would have been unthinkable. But when Stallman met Eben Moglen, a law professor at Columbia University, he managed to create a legal basis for his brainchild. Moglen helped Stallman reflect his software ideals in the treaty that still exists between software developers and users. This agreement is called the GNU General Public License, or GPL for short.
Copyleft Licenses
It was important for Stallman not only to enshrine the four basic freedoms in GPL but also to ensure that, once code became publicly available, it could not be taken away and appropriated.
Thus, if someone builds on GPL-licensed software to create something new, or simply fixes bugs, the derivative work must also be distributed under the GPL. In other words, once software is released under the GPL, its source code can never become proprietary again.
Stallman called this legal mechanism copyleft — copyright turned inside out. The first versions of the GPL came out in the late 1980s and early 1990s and became very popular.
Permissive Licenses
Although the industry embraced legal innovation, disagreements soon emerged within the free software movement — not everyone shared Stallman's idea of communal ownership that the GPL helped create. The obligation to return the code to the community on the same terms seemed onerous to them.
No wonder that one of the most vivid examples of such a disagreement came from the BSD operating system. (Let me remind you that it was a derivative of the original UNIX and developed at the University of California, Berkeley. BSD did not yet have the prefix "Free", "Open", or "Net").
Stallman wanted BSD to be distributed under the GPL, but one of the key BSD developers, Keith Bostic, did not share his views.
As a result, when Bostic freed the BSD networking code in 1989, he chose a license that placed virtually no restrictions on how the code could be used. It even allowed derivative works to become proprietary. The only condition was to retain the university's copyright notice.
Thus, what one person saw as evil, another person saw as an interesting opportunity.
By the way, Berkeley also called its license BSD, and today it remains one of the most widely used licenses in the free software community.
The GPL and BSD have been the inspiration for a plethora of free software licenses designed to address different goals and business needs.
Licenses from the GPL camp came to be known as copyleft licenses. For example, on Wikipedia, you can usually see whether a particular license is copyleft or not. If it is, then, like the GPL, it prevents the source code of derivative works from being closed.
Licenses inspired by the BSD camp, in turn, became known as permissive licenses. Unlike copyleft licenses, they were not against the closure of the code of derivative works.
***
From the early 1990s to the mid-2000s, the software industry's attention was largely focused on free software.
In 1991, the 2nd version of the GPL (also known as GPLv2) came out and soon became the symbol of this movement. Heated debates followed. Some corporations viewed the GPL as a threat, while others began to accept the rules of the game.
Obviously, companies adopted the GPL because they saw clear business value in it, although many people still underestimate just how valuable free software has become.
Today, free software is the foundation for many software products, but it doesn't appear out of thin air — a meritocratic community of developers stands behind it. They generate ideas, produce software, write documentation for it, and train future engineers.
The latter is most often neglected. Corporations were given the opportunity not only to freely take a solid foundation embodied in a piece of code for their products but also to hire engineers who already understood the codebase, allowing them to become productive from day one.
Thus, successful examples of companies whose entire business revolved around free software began to emerge. Among the best-known examples are Red Hat, still thriving and making billions, and the now-defunct MySQL AB.
The widespread adoption of GPL-licensed software by corporations demonstrated the viability of Stallman's ideas, formulated back in the 1980s.
By then, it had become clear that free software — regardless of whether it came from the GPL or BSD camp—was not up to ascetics who doomed themselves to unpaid labor for the good of society.
It is also worth emphasizing that, until the mid-2000s, the BSD and GPL communities coexisted quite peacefully. Indeed, the FreeBSD system got along with software distributed under both BSD (and other permissive) licenses and under the GPL.
That changed dramatically by the end of the 2000s, when Stallman decided to confront what he saw as a new threat: tivoization.
Tivoization
The essence of tivoization is that a device whose firmware licensed under GPLv2 or another copyleft license prevents its owner from running modified or alternative firmware — in other words, from reflashing the device.
The term was coined by Stallman himself and derives from the company TiVo, one of the first to impose this restriction on its products.
It is worth noting that GPLv2 did not prohibit tivoization. When Stallman and Moglen drafted the license, they simply could not have anticipated that companies would exploit it in this way.
Even though companies that prevented users from reflashing their devices were not violating the license. Nevertheless, Stallman still considered their actions to be blameworthy, since they threatened the freedom of users to modify devices they legally owned.
After years of discussion, Stallman released the third version of the GPL, GPLv3, which aimed to combat tivoization.
The new license proved to be remarkably effective in this fight. A single GPLv3 component in a device is enough to prevent its manufacturer from prohibiting users from reflashing it.
But Stallman didn't stop there and relicensed all the software developed under his GNU project. Thus, new versions of the GCC compiler suite, the GDB debugger, and others were released under GPLv3.
In the mid-2000s, GCC and GDB had no free counterparts that could match them in stability and functionality. As I mentioned earlier, creating a free operating system is unthinkable without a free compiler and debugger, that is precisely why Stallman developed these tools among the very first components of his own operating system.
For example, GCC was the primary compiler used to build FreeBSD and was a core part of its base system.
However, once the compiler suite became an anti-tivoization tool, the BSD community found itself in danger of being dragged into someone else's war.
New versions of the software that had always been part of the base system were distributed overnight on terms that contradicted the goals of the system.
In the end, the FreeBSD developers chose to stay on the sidelines. But the cost of that decision was too high — FreeBSD had to abandon the GCC and GDB updates and instead remain on the last versions distributed under GPLv2.
The terms of GPLv3 contradicted not only the goals of FreeBSD but also the interests of most companies developing proprietary software.
As a result, corporations began funding the development of free alternatives to GCC and GDB. So, within the framework of the LLVM project, the development of alternatives under a permissive license began.
By the end of 2012, FreeBSD had switched entirely to Clang, the LLVM compiler.
Today, the operating system no longer depends on GCC and GDB. Both have been permanently removed from the base system as unnecessary. Other GPL-licensed software has been removed as well to avoid repeating the same bitter experience.
Conclusion
I wanted to explain why GPL-licensed components have gradually disappeared from the FreeBSD base system.
Interestingly, the inspiration for this article came from reading the FreeBSD Quarterly Development Report and asking myself a simple question.
Answering that question required a much longer historical detour than I expected. Along the way, I did my best to cover the very topics that, in my opinion, are essential to understanding why FreeBSD ultimately chose this path.
I'd encourage you to study the quarterly reports of free software nonprofits, use free software, contribute to it if you can, and — perhaps most importantly — never stop asking simple questions.