Why I Hate the GPL
(I originally wrote this on my programming blog over at cpancake.github.io a year ago. I’ve moved it here so that my programming blog can actually be about programming. It’s also worth noting that I wrote this post as a rant in response to an issue on 2048's GitHub. I stand by what I said, but imagine I said it in a less inflammatory way.)
I don't like the GPL. You might’ve guessed this from the title, but I have a good reason for this. I see a lot of GPL advocates using the “freedom" argument. But the GPL isn’t truly free. And here’s why.
First off: the GPL is GNU free. A truly free license would be public domain. You can do anything you want, and there aren’t any arbitrary rules to stop you. That’s true freedom, not GNU freedom. The ability to do whatever you want. The GPL doesn’t let you do whatever you want. If you use a GPL’d library, you have to GPL your code. If you use a GPL’d base for your code, you have to GPL your entire project. Every time I get in a GPL argument (it happens from time to time), the response is always “yeah, but there’s different kinds of freedom” or “freedom isn’t anarchy.” Well, yes, literally, freedom means the ability to do whatever you want without restraint. But yet GPL advocates shout “FREEDOM” at the top of their lungs to argue for GPLing code. Why? Why even use the word “freedom” if you need to quantify how much freedom you actually mean? Would it be a better idea to shout “FREEDOM according to the rules determined by the Free Software Foundation?”
Another argument I’ve heard is “the MIT license allows you to take someone else’s code and sell it!” Well, strictly speaking, it does. But there’s two things to look at here: is it really an issue, and does it matter? By “is it an issue,” I mean “if people steal your code and sell it for money, who does it harm?” The seemingly obvious answer would be you, but keep in mind you weren’t expecting any income from this code in the first place. You said “here, take this code and distribute it to anyone you want. I don’t care about money.” You can’t then say “but if you make money off of this, then I should be making money off of this too.” You had the ability to sell it, and you didn’t. You gave up that ability, so don’t complain that you don’t have it anymore. It doesn’t hurt the consumer either, which I’ll explain soon. The second issue is “does it matter,” and it doesn’t. Plain and simple. If someone sells your code, that doesn’t make your code any less open source. People can still download and use your code for free, and under your terms, so why does it matter that someone else is selling it? It doesn’t hurt the consumer, either, like some people on the 2048 issue tracker seem to think (see top). A consumer who buys a proprietary library that is identical to yours is an idiot. They’re buying a software library on impulse, which is incredible considering there is a free and open source library for almost anything you want to do. Why would you ever buy something without looking for free alternatives?
This brings me to my next point: if the consumer does buy the other library, and yet still came across your library in their search, they bought the proprietary one because it had better features. If someone improves your code and sells it, that’s their right. I don’t see anything wrong with doing that. If their code isn’t open source, that’s their choice. If they’re not choosing to open source their code, you shouldn’t force them to. And that’s what the GPL does. It forces people to open source their code, and that’s stupid. It’s especially bad when you use it in a library, but even in an application; forcibly free software only prevents innovation (many innovations are created in the pursuit of financial gain).
And now for my last, simple point: the kind of person who is taking your MIT licensed code and selling it, unmodified, without even acknowledging the original author is not the kind of person who is going to respect your GPL license. Scumbags will steal whether it’s legal or not; good programmers will respect your code whether it’s forced or not. Don’t use the GPL. If you must, use the MPL, but the MIT license is a much better choice. Don’t force people to be GNU free.