June 3, 2011

The GPL Sucks

When I release an open-source program, I want to guarantee something very simple. The program and its source code can be distributed and used by anyone for any purpose, and all modifications to the program must be released as open-source under these same terms. I want to guarantee that the program and any improvements made on it are available to anyone, proprietary or not, forever.

This is impossible.

Why? Because the GPL specifically states that any code used in a GPL project must be under a GPL license. The GPL is written in such a way so that your code must somehow be able to be converted into GPL-licensed code if it is to be used in a GPL project. This doesn't really seem to be a problem, at first, until you start thinking about what it means for code that is designed to be used by ANYONE, including commercial ventures. Lets say I write a program under the BSD license. Some guy can run along, fix a bunch of bugs for me, but release those bugfixes under the GPL, preventing me from using any of them in my program unless I'm under the GPL. This even happens if you release under the LGPL, because LGPL code can be converted to GPL and, whoops, you can't get it back!

This is just as bad as a company taking my code, fixing some bugs, and making those bugfixes proprietary. Both sides of the fence are excluding the other side of the fence, and explicitly prevent me from trying to straddle both sides. The free software foundation is making it impossible to be neutral. Either your with them, or you are against them. This is stupid.

This might be good for free software, but not for open-source software. The GPL destroys the entire point of open-source software - contributions from outside sources provide substantial improvements. The GPL's viral nature dissuades people from using it because it acts to the exclusion of everything else. A company has zero motivation to help improve GPL'd software because they can't benefit from their improvements. On the other hand, if open-source software was open-source for the purpose of being open-source instead of for free speech, we'd have companies who could legally use open-source software and consequently improve on it, and be required to release these improvements to the open-source community, to the benefit of everyone.

But of course, free software is about freedom of speech, and so we come to the unfortunate conclusion that, should free software continue its misguided crusade, the ideal open-source project will be fundamentally incompatible with free software, and so free software and open-source software will inevitably diverge into two parties with mutually exclusive goals.

And to think that all I want to do is guarantee that everyone can use my code and benefit from all improvements made to it. But I guess people don't care about that, they only care about whatever cause they might be fighting for, instead of mutual co-operation for the benefit of humanity. Since, apparently, I'm against free software, because I want to share my code with everyone, instead of only people who agree with me.

Great. Is this really what Free Software stands for? Is this what you want it to stand for? If it is, I'm afraid I simply can't support something that forbids compromise. Progress requires compromise. This is unacceptable.

EDIT: It is truly amazing how many ways people manage to misinterprete or flat out not read my blog post. This is not the GPL, the LGPL does not work, I am not championing any BSD-related licenses, and my comment about companies was directed at proprietary software. Of course Redhat makes a profit off the GPL, its business model is compatible with it.

Perhaps I will try again at some later date with a blog post that spends less time actually explaining what I'm talking about and more time preventing people from latching on to completely irrelevent points.


  1. I think you're confused. You say that a company has zero motivation to improve GPL software because they can't benefit, but that is simply not true. Many companies can *and do* benefit from such improvements, at the very least by using those improvements themselves and almost always in other ways. In your "ideal" non-GPL universe you claim that people would be required to release their improvements back to the community. Required how? The lack of such a requirement is *exactly* what differentiates the licenses you prefer from GPL. If you add such a requirement, you've invented an ad-hoc, bug-ridden, inferior version of GPL. Good job. If you don't, then people can *and will* take your code, improve it, and *not* contribute back. Good job again.

    I don't think everyone should use GPL. In some ways I dislike it. However, blaming it alone for license Balkanization is *absurd*. If you want to preclude people from using your non-GPL code in a GPL project, because you're afraid that you won't get changes back, then "anyone for any purpose" and "share with anyone" ring more than a little hollow. Your preference for a license that's morally equivalent to GPL but incompatible with the actual GPL will only increase license fragmentation, not resolve it.

  2. You must be confused. The GPL license requires the project its inside to be open-source. I spent this entire blog post arguing for a license that only requires modifications to the program to be released, which allows it to be compatible with proprietary programs. This isn't a moral equivalent to the GPL.

  3. I have great news! You can make your code GPL-proof! How? Well, there is a license meant specifically to prevent your code from being used with a GPL project: The OSSAL.

  4. The OSSAL looks promising, but is not an approved open-source license, which causes its own problems for hosting and such.