The problems with the GPL
Published on 2021-02-02. Modified on 2022-07-20.
In my previous article "Why you should migrate everything from Linux to BSD", in the License problems section, I very briefly addressed one of the problems with the GPL license. I have since received a few emails asking for elaboration on the subject, which is what I will try to do in this article.
Table of contents
- What is the GPL?
- The GPL encourages "hijacking" and political maneuverings
- The damage done by proprietary companies
- Not sharing is actually the root of the problem
- The GPL is hypocritical
- That whole "Linux stealing our code" thing
- The GPL misses the point
- Greedy people and political corruption
- A final comment
- Further reading
What is the GPL?
The GNU Public License (GPL) was created to be the "antithesis" of the standard proprietary license. Any modifications that were made to GPL licensed software required to be given back to the GPL community and any application that used or linked to GPL source code was required to be under the GPL.
The main purpose of the GPL is to disallow incorporation of GPL licensed software into proprietary software.
The GPL is rather complex:
- You cannot sell GPL licensed software, but you can charge as much as you want for distributing, supporting, or documenting the software.
- If GPL licensed source code is required for a program to compile, the program must also be under the GPL. Linking statically to a GPL library requires a program to be under the GPL.
- Because the Linux kernel is licensed under the GPL, any code statically linked with the Linux kernel must be GPL licensed itself. This requirement can be avoided by dynamically linking loadable kernel modules. This permits companies to distribute binary drivers, but has the disadvantage that they will only work for a particular versions of the Linux kernel.
Because of the complexity of the GPL, its legality is mainly being ignored in many parts of the world in regard to Linux and related software.
The GPL encourages "hijacking" and political maneuverings
The GPL and licenses modeled on it impose the restriction that source code must be distributed or made available for all works that are derivatives of the GNU copyrighted code.
While this may look like a noble strategy, it is a condition that is typically unacceptable for commercial use of software. In practice, it usually ends up hindering free sharing and reuse of code and ideas rather than encouraging it.
One of the problems is that when a company cannot fully control how they share their code, they either don't use the software, or instead try hard to "hijack" the project by political maneuvering, as we have seen with e.g. Red Hat.
Pressure to put proprietary applications on Linux became overwhelming in the beginning of 1990. Such applications often must link with system libraries. The pressure was so great that it resulted in a modified version of the GPL called the LGPL ("Library", since renamed to "Lesser", GPL). The LGPL allows proprietary code to be linked to the GNU C library (glibc). You do not have to release the source code which has been dynamically linked to an LGPL licensed library. On the other hand, if you statically link an application with glibc, which is what is very often required in embedded systems, you cannot keep your application proprietary, that is, the source must be released.
This kind of restriction sometimes put a company in a sore spot. Instead of releasing source code they try to influence the upstream project by hiring one or more of the developers, and then try to effect the project to make changes upstream that helps the company implement whatever solutions they require. Once this political maneuvering begins it often has very damaging result on the free software community because it doesn't stop there.
One such clear example is Red Hat trying hard to get rid of the
/etc configuration directory on Linux.
Red Hat wants this change because in their specific business product for the embedded market,
/etc gets in the way. Having Linux as an operating system not depend upon
/etc is very important for Red Hat, which is also why they have hardcoded DNS servers from Google, Cloudflare and Quad9 into the systemd-resolved network application, so that it can run completely without any setup in
/etc. This is also why they are trying to change the way home directories work and systemd-homed is the first major step in that direction. Getting rid of
/etc/passwd and related files is currently one of the top priority projects at Red Hat as that will enable getting rid of the rest of
/etc more easily.
As a matter of fact, the corporate interests of Red Hat is the very reason behind the existence of systemd in the first place. And it is also the very reason why systemd isn't just an init system, but rather has become a huge pile of interdependent building blocks to make "an operating system" that better serves their interests, both in their embedded market and on the other market shares they have.
Red Hat needs these major changes to become an integrated part of the major Linux distributions such that all third party software works on this setup, rather than on the current setup in which Red Hat have to work around a lot of issues, which is both very time consuming and difficult.
As I have already explained in my article The real motivation behind systemd, Red Hat addressed several third party projects and tried to convince them to make their projects depend upon systemd, such as the attempts made by Lennart Poettering on the Gnome mailing list, and the attempt made by Red Hat developer "keszybz" on the tmux project. Most of these attempts were disguised as technical issues, however when you read the long email correspondence on the Gnome mailing list and elsewhere, the real intent becomes quite clear.
In another example, Red Hat purchased Cygnus, an engineering company that had taken over development of the FSF compiler tools. Cygnus had developed a business model in which they sold support for GNU software. This enabled them to employ some 50 engineers and drive the direction of the programs by contributing the preponderance of modifications.
While the Linux kernel and Linux distributions used to be mainly community driven projects, the corporate interests of some of the major companies has changed this a lot. Some contributions has benefitted the communities, but a lot of maneuverings has not, and currently Linux, as an operating system (not the kernel alone) is undergoing major changes, changes that reach out far beyond the kernel and the GNU tools.
This kind of "hijacking" and political maneuverings never happen with a permissive license like the BSD or MIT licenses.
With a permissive license the company can do whatever they want. The situation never arises in which it becomes a part of their interest to "hijack" the upstream project or directly influence they way it is going.
On the contrary, companies who benefit from the permissive license often contribute code back to the project because it is in their interest to have their contributions available in the source code, while at the same time they keep "specific company related" changes private.
Clang, which is release under a permissive license, and which originally is a project started at Apple in 2005, is another really good example of the problems with the GPL. GCC is licensed under the terms of the GPL version 3, which requires developers who distribute extensions for, or modified versions of, GCC to make their source code available, whereas LLVM, which is the clang backend, has a BSD-like license that does not have that requirement.
Because of this Apple chose to develop a new compiler front end from scratch, supporting C, Objective-C and C++. The clang project was then open sourced in 2007 and now contributors who is making improvements and changes to both LLVM and clang includes several of the free software projects such as all the BSD projects, and it also includes major companies like Microsoft, Google, ARM, Sony, Intel and Advanced Micro Devices (AMD).
Because the GCC source code is a large and difficult system for developers to work with, and because companies often develop specific extensions which they do not want to share, the GCC is now slowly being abandoned, not benefiting from any of the major improvements, and instead a real free alternative is slowly taking its place.
The damage done by proprietary companies
Some companies will make improvements which they never share when they build software with a permissive license and they will possibly even make billions of dollars doing it. But this is really not damaging free software in the least.
What is being damaged is society in general, such as the damage done by Microsoft, Apple and Google with their proprietary spyware operating systems, their copyright licenses and their creepware.
But this damage has absolutely nothing to do with the free software. This damage is the result of the capitalistic political system, and this damage will always exist as long as the political system favors profit over people.
And of course the damage that the capitalistic political system is causing is not limited to software or freedom, but extends its greedy reach far into all the other corners of life with devastating consequences as a result. Just look at the current global environment crisis! Or the global rise of extreme poverty! Or the horrifying treatment of animals! All in the name of profit!
Whether the GPL or more free software licenses exist or not, this greed and the damage caused by it will always exist. The point is that the GPL doesn't help in the least. The damage will be done regardless of what software licenses are in usage, and it is a problem that needs to be addressed on the political arena, not on the software development arena.
I think it is also worth noting that GPL violations is a widespread problem. All around the world GPL software is treated as "public domain" and the license has very little real impact in many cases. This is why the The gpl-violations.org project was created.
The very "soul" of a true free license is encouraging cooperation, it is helping people, and thereby also companies (as they consists of people working together), to see that it doesn't benefit anyone to be greedy, that it is better to share and help each other rather than making single individuals pockets thicker and thicker.
Of course evil individuals will always exist, and some people will never improve, but the fact is that we cannot prevent any damage by the usage of the GPL, what we need to do instead is to educate people so they make better choices. And the politicians need to wake up, their greed and corruption is harming themselves, their own families and the future of their children - nobody is excepted from the exploitation by corporate interests, not even the corrupt politicians themselves.
Eventually governments all over the world will be forced to adopt and implement true free software because of the risks involved. No country can trust software developed in another country unless the source code is fully open and truly free, not even from allied countries! The risk of spying and damage of infrastructure is far too great! Oh, and by the way, that goes for closed hardware as well!
Not sharing is actually the root of the problem
A root cause of evil in the world is poverty. People need to share and help each other, as this will not only eliminate or restrict poverty, but it will also set a precedence in society in which being greedy becomes something very bad.
Some people believe that they deserve whatever wealth they have got. They don't want to share, because why should they? They have worked hard to earn their wealth and others can just do the same. But this is wrong.
Whether you believe in coincidence, luck or God, the fact is that your hard work or clever business strategy is not the cause behind your wealth. Rather it is circumstances far beyond your control. The place you grew up, how you grew up, who your parents where, what people you knew, the opportunities that presented themselves to you as a result of all these different circumstances are in fact all the major factors involved in your success or failure. And none of these things can be attributed to your doing. These things are all far beyond your control. And the fact is that your hard work accounts for almost nothing. You could do even more hard work and even more clever business, but by just moving you a few inches, nothing will turn out the same, and what was a major success in one place, turned out to be a major failure in another place.
And these things are the very reason why you need to share, whether it is software or wealth. Because none of these circumstances has anything to do with you, your wealth is not something you have accumulated by genius on your part, not by a long shot, and by not helping other people, and by keeping wealth out of the hands of others and into your own pockets, you're setting a really bad example for others, which is the most damaging part of all of this. By not sharing you are showing the youth and other people that in order to be rich and wealthy, they need to be like you! And this results in less people sharing, less people helping each other, and absolutely nothing is more damaging to our human race as a whole than greed.
By sharing and helping we encourage good behavior and good relations and if only a majority of us keep doing that, at one point "being evil" will not only not pay off, but it will be so damaging to the end result that you simply must refrain.
We do not prevent evil in the software world, or in the world generally, by using the GPL. Companies like Microsoft will do evil no matter what. They will make they own software no matter what. Preventing them from using your specific software doesn't change anything and it actually often does more damage than good. But by doing good on a large scale and by educating people, the end result will be that nobody will buy anything from an evil company.
Currently only few people understand this and few projects work like this, which is why it is such a slow going process. But the GPL is not helping at all, it is making things worth when greedy companies "hijack" projects. Just look at the damage the corporate interest in systemd has caused to something like the Debian project, just as an example.
The GPL is hypocritical
As we all know the GNU project and the Free Software Foundation is doing a lot of work to promote Free Software. On the FSF website we find the following definition on "free software":
"Free software" means software that respects users' freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, "free software" is a matter of liberty, not price. To understand the concept, you should think of "free" as in "free speech," not as in "free beer". We sometimes call it "libre software," borrowing the French or Spanish word for "free" as in freedom, to show we do not mean the software is gratis.
We campaign for these freedoms because everyone deserves them. With these freedoms, the users (both individually and collectively) control the program and what it does for them. When users don't control the program, we call it a "nonfree" or "proprietary" program.
At the same time the GNU project and FSF endorses and make heavy use of the GPL, which by its very nature is "nonfree", according to this very definition put forward in the above, because it restricts what you can do with the software. I am not talking about a philosophical discussion about freedom, or that true freedom is about being able to act without restrictions, that's not what this is about. It's about the fact that the GPL is contradicting the very purpose for which it was created.
The very restrictions set up by the GPL is in essence nonfreedom, and this is not from a philosophical perspective, but from a true implementation perspective. The GPL is at the very root cause at why many open source projects released by a permissive license cannot be integrated into Linux.
This is contrary to a permissive license and e.g. on the OpenBSD's goals website it states:
We want to make available source code that anyone can use for ANY PURPOSE, with no restrictions. We strive to make our software robust and secure, and encourage companies to use whichever pieces they want to.
That whole "Linux stealing our code" thing
Below I will post the email that Theo de Raadt, the founder of the OpenBSD project wrote in August 2007, when a group of Linux developers attempted to modify the license of dual-licensed ath5k driver.
I stopped making public statements in the recent controversy because Eben Moglen started working behind the scenes to 'improve' what Linux people are doing wrong with licensing, and he asked me to give him pause, so his team could work. Honestly, I was greatly troubled by the situation, because even people like Alan Cox were giving other Linux developers advice to ... break the law. And furthermore, there are even greater potential risks for how the various communities interact. For the record -- I was right and the Linux developers cannot change the licenses in any of those ways proposed in those diffs, or that conversation (http://lkml.org/lkml/2007/8/28/157). It is illegal to modify a license unless you are the owner/author, because it is a legal document. If there are multiple owners/authors, they must all agree. A person who receives the file under two licenses can use the file in either way.... but if they distribute the file (modified or unmodified!), they must distribute it with the existing license intact, because the licenses we all use have statements which say that the license may not be removed. It may seem that the licenses let one _distribute_ it under either license, but this interpretation of the license is false -- it is still illegal to break up, cut up, or modify someone else's legal document, and, it cannot be replaced by another license because it may not be removed. Hence, a dual licensed file always remains dual licensed, every time it is distributed. Now I've been nice enough to give Eben and his team a few days time to communicate inside the Linux community, to convince them that what they have proposed/discussed is wrong at a legal level. I think that Eben also agrees with me that there are grave concerns about how this leads to problems at the ethical and community levels (at some level, a ethos is needed for Linux developers to work with *BSD developers). And there are possibilities that similar issues could loom in the larger open source communities who are writing applications. Eben has thus far chosen not to make a public statement, but since time is running out on people's memory, I am making one. Also, I feel that a lot of Linux "relicencing" meme-talkin' trolls basically have attacked me very unfairly again, so I am not going to wait for Eben to say something public about this. In http://lkml.org/lkml/2007/8/29/183, Alan Cox managed to summarize what Jiri Slaby and Luis Rodriguez were trying to do by proposing a modification of a Dual Licenced file without the consent of all the authors. Alan asks "So whats the problem ?". Well, Alan, I must caution you -- your post is advising people to break the law. I will attempt to describe in simple terms, based on what I have been taught, how one must handle such licenses: - If you receive dual licensed code, you may not delete the license you don't like and then distribute it. It has to stay, because you may not edit someone's else's license -- which is a three-part legal document (For instance: Copyright notice, BSD, followed by GPL). - If you receive ISC or BSD licensed code, you may not delete the license. Same principle, since the notice says so. It's the law. Really. - If you add "large pieces of originality" to the code which are valid for copyright protection on their own, you may choose to put a different and seperate (must be non-conflicting...) license at the top of the file above the existing license. (Warning: things become less clear as to what the combination of licenses mean, though -- there are ethical traps, too). - If you wish for everyone to remain friends, you should give code back. That means (at some ethical or friendliness level) you probably do not want to put a GPL at the top of a BSD or ISC file, because you would be telling the people who wrote the BSD or ISC file: "Thanks for what you wrote, but this is a one-way street, you give us code, and we take it, we give you you nothing back. screw off." In either case, I think a valuable lessons has been taught us here in the BSD world -- there are many many GPL loving people who are going to try to find any way to not give back and share (I will mention one name: Luis Rodriguez has been a fanatic pushing us for dual licensed, and I feel he is to blame for this particular problem). Many of those same people have been saying for years that BSD code can be stolen, and that is why people should GPL their code. Well, the lesson they have really taught us is that they consider the GPL their best tool to take from us! GPL fans said the great problem we would face is that companies would take our BSD code, modify it, and not give back. Nope -- the great problem we face is that people would wrap the GPL around our code, and lock us out in the same way that these supposed companies would lock us out. Just like the Linux community, we have many companies giving us code back, all the time. But once the code is GPL'd, we cannot get it back. Ironic. I hope some people in the GPL community will give that some thought. Your license may benefit you, but you could lose friends you need. The GPL users have an opportunity to 'develop community', to keep an ethic of sharing alive. If the Linux developers wrap GPL's around things we worked very hard on, it will definately not be viewed as community development. Thank you for thinking about this. [I ask that one person make sure that one copy of this ends up on the linux kernel mailing list]
The GPL misses the point
When people use the GPL they mostly try to prevent some corporate entity from taking their software, make improvements or changes to it, and then sell that software as a proprietary product.
But what is it that we're trying to accomplish? Is it competition by proprietary software? Is it to prevent people from making money by developing software and getting food on the table?
Let's quote Richard Stallman:
To use free software is to make a political and ethical choice asserting the right to learn, and share what we learn with others. Free software has become the foundation of a learning society where we share our knowledge in a way that others can build upon and enjoy.
Currently, many people use proprietary software that denies users these freedoms and benefits. If we make a copy and give it to a friend, if we try to figure out how the program works, if we put a copy on more than one of our own computers in our own home, we could be caught and fined or put in jail. That's what's in the fine print of the license agreement you accept when using proprietary software.
This is a highly convoluted explanation with several contradictions.
I say: Don't use proprietary software that prevents you from giving a friend a copy. Don't use proprietary software that spies on you or limits your usage of your hardware. Educate the masses to use true free software, but don't be hypocritical by arguing against freedom limiting licensees, and then at the same restrict true software freedom.
Greedy people and political corruption
I think we can all agree that there is nothing wrong with people building software to make a living and putting food on the table for their families. What we don't like is when people, and thereby companies, becomes too greedy.
In 1969 (what I like to call a corrupt) US Department of Justice, charged IBM with destroying businesses by bundling free software with IBM hardware. The result of this was that IBM unbundled its software from their hardware and software became independent products separate from hardware. In 1968 a company called Informatics introduced the first commercial software application and managed to established the concept of "the software product" and very high rates of return. Informatics developed the perpetual license, which is now standard throughout the computer industry, wherein ownership is never transferred to the customer.
This is the problem at heart - greed!
It goes against the very foundation of rationality to even think the idea that when you purchase something, it still doesn't belong to you. It is so self-contradictory that nobody in their right mind can accept this nonsense, and it truly requires corruption at the highest level to accept such crap and enforce it by law! This is also why so-called software piracy will never ever be stopped. It is in the nature of man to share and help his fellow man! Only the most greedy and corrupt person is against this.
And this is the very core problem with capitalism, it is solely driven by financial interests!
While we could say that the GPL is created on the premise that people are generally selfish and evil, and will never contribute back unless forced to, it doesn't solve the problem and it doesn't help. What we need is a license that operates on the premise that people are generally decent, and that many will contribute back on principle and goodness. Then we need to educate and set good examples, avoid and shun greed, and I strongly believe we will get the best results by using a more permissive license than the GPL.
A final comment
Just as a final comment. I understand the historical background and why the GPL was made and I truly and deeply respect the reasons behind the GPL. And it's not that I believe that the GPL is evil, it's just that I don't believe it is achieving the goals today which it was set out to achieve. I believe it is causing more harm than good in todays software world. I also don't believe that you can encourage freedom and sharing by enforcing nonfreedom, it is a double standard no matter how you look at it.
We also have to remember and put a focus on the fact that corporations consists of people, mainly people trying to get food on the table. We're only truly dealing with people, not software.
I also believe that some of the views of Richard Stallman are extreme and misguided, and that you will never reach people by preaching a douple standard.
I believe that we can put greedy and extreme companies on the one side, and Richard Stallman and extreme anti-corporate organizations on the other. Neither of these extremes truly benefit us in any way.
- That whole "Linux stealing our code" thing
- History of free and open-source software
- Why you should use a BSD style license for your Open Source Project
- The Free-Libre / Open Source Software (FLOSS) License Slide
- Open Source Licenses by Category
- Real men don't attack straw men (the whole thread is relevant, but especially the - straight to the point - responses by Theo de Raadt to Richard Stallman, such as this, this, this, this and this)
- The mysterious history of the MIT License
- GPL Violations