Some of the problems with the GPL

Published on 2021-02-02. Modified on 2023-10-28.

The GNU Public License (GPL) was created to be the antithesis of the standard proprietary license, let's take a look at some of the problems with GPL.

What is the GPL?

The GNU General Public License (GPL) is a series of software licenses that "guarantee" end users the four freedoms to run, study, share, and modify the software.

The main purpose of the GPL is to disallow incorporation of GPL licensed software into proprietary software.

Any modifications made to GPL licensed software is 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 GPL is rather complex:

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 it's legality is mainly being ignored in many parts of the world.

The damage done by proprietary companies

Some companies will make improvements to open source software which they never share, others will simply "take advantage" of the code without changing anything, and they may possibly make millions of dollars doing it. None of this is damaging free software. Free software is not about making money, as such, nothing is lost.

What is being damaged is society in general, such as the damage done by the big corporations with their proprietary operating systems that not only compromise users freedom (e.g. to see and change the source code), but also compromise users privacy and limits the rights to usage, even when purchased and clearly owned.

Whether the GPL or more free software licenses exist or not, greed will always exist. The damage will be done regardless of what software licenses are in usage, and it is a problem that needs to be addressed on a political level, not on the software development arena.

I think it is also worth pointing out 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 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 trying to put food on the table), 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.

Hypocrisy

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 "non-free", 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 that which it was created.

The very restrictions set up by the GPL is in essence non-freedom, and this is not from a philosophical perspective, but from a true implementation perspective. The GPL is the root cause why many open source projects, released with a permissive license, cannot be integrated into Linux.

This is contrary to a permissive license. For example, 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 an 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 the 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 they are trying to accomplish? Is it competition by proprietary software? Is it to prevent people from getting food on the table? In which case, are they even making "free software" then?

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:

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 code.

While this may look like a noble strategy, it is a condition that is typically unacceptable for commercial use in 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 maneuverings or by simply purchasing the project.

Pressure to put proprietary applications on Linux became overwhelming in the beginning of 1990. Such applications must often 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"). The "Lesser GPL" 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.

These restrictions not only harm projects with more open licenses, such as the BSD lincenses, but it also sometimes put a company in a really difficult position. Rather than releasing source code, the company may 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 these political maneuverings begins it often has very detrimental effects on the free software community because it rarely stops there.

The real motivation behind systemd, and the hard work to get it integrated into all the major Linux distributions, is a good example of political maneuverings, which in this case was motivated by Red Hat's (IBM) business interests in the market for embedded devices. This 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. 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, which is also why they are trying to change the way home directories work and systemd-homed is the first major step in that direction. It is also the very reason why systemd isn't just an init system anymore, but rather a big pile of interdependent building blocks to make "an operating system". Red Hat needs these major changes to become an integrated part of the major Linux distributions such that all third party software work 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.

While the Linux kernel and Linux distributions used to be mainly community driven projects, the corporate interests of some of the major companies have changed this a lot. Some contributions have benefited the communities, but a lot of the political maneuverings haven't, 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 has never happen with a permissive license like the BSD or MIT licenses.

With a permissive license a company can do whatever it wants. The situation never arises in which it becomes a part of their interest to "hijack" the upstream project. 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, originally a project started at Apple in 2005, is released under a permissive license. GCC on the other hand 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 are 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.

Why are companies using Linux and not BSD then?

First of all, they are using BSD, and some are contributing, like Clang from Apple mentioned above.

Secondly, Linux is just a kernel, the different BSDs are complete operating systems.

In 1990 AT&T sued University of California Berkeley (UCB) over license violations related to BSD (later termed the Unix wars). UCB discovered that AT&T had incorporated, without acknowledgment or payment, many improvements due to BSD into AT&T's products, and a lengthy court case, primarily between AT&T and UCB, ensued. During this period some UCB programmers embarked on a project to rewrite any AT&T code associated with BSD. This project resulted in a system called BSD 4.4-lite which later became the basis for the different BSD operating systems.

In March 1993, a court dismissed most of AT&T's claims, but the legal drama continued when the University of California counter sued. It was not until early 1994, by which time Novell had acquired the rights to Unix, that the legal disputes were fully resolved through settlement.

This legal drama halted the adoption of the BSD operating system by creating doubts about BSD's legal future. As a result, the Linux kernel not only gained ground but also reached a huge user base.

Final comments

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, become greedy.

In 1969 the 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 a rational mind to think the idea that when you purchase something, you still don't own it. It is so contradictory that nobody in their right mind can accept this nonsense, and it truly requires corruption at the highest level to accept such rubbish and enforce it by law. This is also why so-called software piracy will never be stopped and why some people state that:

Piracy isn't stealing if purchasing isn't ownership!

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.

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. It's not that I believe that the GPL is evil, it's just that I don't believe it is achieving the goals which it was set out to achieve. I believe it is causing more harm than good. I also don't believe that you can encourage freedom and sharing by enforcing non-freedom, it is a double standard.

We have to remember that corporations consists of people, mainly people trying to get food on the table, and we're only really dealing with people, not software.

I believe we can put greedy companies on one side, and Richard Stallman and extreme anti-corporate organizations on the other. Neither of these extremes truly benefit us in any way.

Further reading