[Achtung: if you are easily offended when people bad-mouth the GPL, and claim that anyone who speaks agains the GPL "doesn't get it", then please do not read this post. i'm sick to no end of people claiming that i "don't get what the GPL is about" just because i speak out against it. They're getting to be as bad as Apple fanatics have been for years.]
Let’s talk for a moment about the GNU General Public License (GPL), arguably the most common license applied to Open software. Without it, the whole Free/Open Source Software (FOSS) movements and cultures which we know today very probably would never have arisen. Instead, the world of free licenses, e.g. the venerable BSD- and MIT-style licenses, would probably be common within academic circles but would probably never have been adopted by [m]any mainstream projects. Why not? Quite simply because they are not viral, as the GPL is. Once the GPL is used as a license, it is neigh impossible to separate that code from the GPL, short of reimplementing it from scratch (except in the case of single-author projects, where the author is free to change the license on future versions but cannot retroactively change it on versions released under the GPL).
For me, the GPL is kind of like comedian Sacha Baron Cohen - an object of both fascination and disgust. On one hand, the GPL is a critical element in the whole FOSS framework. Without it we would probably see lots more fragmentation of software projects, particularly with companies adopting free code and then keeping it closed. On the other hand, however, what the GPL preaches and what it delivers are two completely different things. In any case, without the GPL we would likely be 10 to 15 years behind where we are now in mainstream computing environments, as we would still lie completely in the grips of commercial enterprises.
The GPL lays down a set of rules which are both harsh and formidable enough to be able to keep self-serving commercial entities off of our collective backs while we (”the royal we”) get down to the serious business of advancing the field of computer science (and, indirectly, many other fields) to the benefit of humankind as a whole.
But that’s where my praise of the GPL ends. Why? Because what it delivers - in its harshness - is quite at odds with what it claims to deliver. That is not to say the that the GPL does not deliver what it should deliver. It does indeed do that. But its Holy Book (the text of the GPL) herds us in with dreams of freedom. Once we’re emotionally involved it then slaps on the shackles. And everyone we ever touch afterwards will get those shackles slapped on to them, whether or not their beliefs are consistent with the GPL’s underlying philosophies.
The GNU GPL is based upon the so-called “four freedoms”. They are (taken verbatim from the GNU web site):
- The freedom to run the program, for any purpose (freedom 0).
- The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom 2).
- The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.
As anyone who has anything to do with [non-Windows] software development knows, GNU’s definition of “free” is “free as in freedom.” But what dictionary did the GPL author(s) use when looking up a definition for “freedom”?
My philosophical problems with the GPL’s concept of freedom lie specifically in freedoms 2 and 3, the freedoms to redistribute the code with or without changes (those two points are conceptually the same thing - I’m not sure why they are considered to be separate points in that list. Perhaps because “three freedoms” doesn’t have the same ring to it.).
I’ve said this before (and I’ve upset people by saying it) and I’ll say it again: freedom implies choice, and the GPL strictly removes any choice from the user. The fact is, if you modify code which has the GPL license, and you give anyone a copy of your program (that is, the program is not strictly used for one’s own internal use), then you are forced to give the source code to your program out as well (though you may defer doing so until someone asks for it). Forced. There is no Freedom in Forced.
Now hold on a minute - I’m not at all saying that the release of source code should be restricted! Every line of source code for every project I release is released for all to read, modify, and redistribute as they see fit. As they see fit. They have the freedom of choice.
The vast majority of my own source code is released without copyright, into the Public Domain. Some of my code uses the less-restrictive LGPL, which I actually am a big fan of, and which I find to be a wonderful compromise between the GPL and the real world. Some of my code uses MIT- or BSD-style licenses, mainly in cases where I have adopted code released under those licenses. In my opinion, MIT/BSD-style licenses are about as close to Public Domain as one can get while still having a license.
It is technically true that the idea of Public Domain is not legally valid in all jurisdictions (if I’m not mistaken, Germany (where I live) is one of those jurisdictions). But is is also true that some jurisdictions do not accept any concept of “Intellectual Property”. In such jurisdictions, we can effectively call all software Public Domain. Thus the GPL is, in some contexts, as invalid as Public Domain is in other contexts. So don’t harp about how legally enforceable the GPL is. Just as with the GPL, I’ve never heard of a valid legal case where some known Public Domain resource was challenged and subsequently given over to a single entity. Legalities, in any case, are local conventions and not unbreakable divine laws.
Now back to the point… let’s look over the list of the Four Freedoms, this time with the following differences in our perception:
- A reasonable, conventional definition of Freedom (i.e. one which includes choice). Or, “Free as in Will,” if I may now coin a phrase.
- Instead of the context of resources licensed under the GPL, consider the context to be Public Domain resources.
Go on and take a look, then please continue…
Did you notice the difference? Namely, the difference that the Four Freedoms, as listed above, apply to resources released into the Public Domain. They also apply to a number of other FOSS-compatible licenses. But they do not, given any reasonable definition of Freedom, apply to the GPL.
Does this mean the GPL is somehow evil? No, of course not. The purpose of this is simply to point out that the GPL does not practice what it preaches. That said, what is practices is an essential part of the FOSS culture(s), but what is practices is not what it claims, in its manifesto, to practice.
Over the years I’ve received several mails from people new to the FOSS concepts, and they’ve asked me questions like, “what license should I use for my code?” The answer of course, depends on what you want to achieve. For many projects, the GPL is certainly suitable (given the caveat of the perverted definition of “freedom”), or arguably even essential (e.g. in my opinion, the Linux kernel). For some other purposes the GPL will forever limit the audience of the code and hinder its adoption, as commercial entities often don’t want to touch GPL code, whereas they are less reserved in their adoption of Public Domain, MIT, BSD, Apache, or similarly licensed code. (Even MSIE contains, according to its About dialog box, code from the original Mosaic browser.) Some real-world examples of this are the sqlite and OpenOffice projects, the former being Public Domain and the latter using the LGPL. (In my humble opinion, the LGPL was a perfect choice for OpenOffice, allowing the unrestricted creation of plugins without forcing plugin developers to conform to OO’s license.)
If there’s anyone out there who can explain to me how GNU’s definition of Freedom really is aligned with the common definition of the word, I would love to hear it. For those interested in flame wars, feel free to flame, but I won’t be drawn in to them.
Gary Gygax, co-father of an entire genre of gaming, died last week, as you have certainly seen widely reported all over the net.
This post is largely inspired by one of the tribute postings, where the author “admits” to having played Dungeons & Dragons in his younger years.
Here i’ll jump on that bandwagon…
i first got involved in D&D with the classic “red-box” Basic Set. Two friends of mine in the 5th grade got me interested in it right after i moved to Houston in the first half of 1984. i still remember my step-dad taking me to the store down the street to buy a copy (on his red-metalflake Honda Goldwing cycle). That night i read excitedly and played through the introductory solitaire adventure that very evening, keen on getting a better understanding of the game my friends were already so engrossed with.
i continued playing it until about the 10th grade, where i was so involved with school and extra-curricular activities that i simply didn’t find the time to play it. (i was a varsity cheerleader for 3 years, believe it or not, and that took up quite a lot of time.)
Despite not actually playing RPGs after about 10th grade, i have never stopped collecting games. While i no longer have my older collections (thanks to my ex-wife, who sold them at a garage sale when i wasn’t there to defend them), i still have quite a few books and whatnot for GURPS, Tunnels and Trolls, TWERPS, and Fudge, as well as a number of strategy and board games. Aside from collecting gaming materials, i still design boardgames, strategy/simulation games, and roleplaying games in my spare time (see http://wanderinghorse.net/gaming/). All of that started with my first adventures in D&D.
But back to the point - as far as D&D went, my favourite character was Eaglebeak, a fighter who eventually got up to the 8th level or so. He was my favourite not because he was the most powerful (we all had level-30+ characters who got that way through the whims of over-active GMs), but because he was the one who made it to the 8th level “fair and square”. That is, not by simply gaining enough gold to get him the experience points. Eaglebeak married the lovely Princess Lynn, built a fort, had twin children (during the birth the GM rolled 1d20 to determine the gender and rolled a 20, which he ruled to be twin boys, who i named Tigerbeak and Rattlebeak), and lived happily ever after.
That’s all the stuff of fantasy, of course, and Gygax was largely responsible for setting us upon the path to enjoying roleplaying at home, instead of just reading books about fantasy adventures.
As for Gygax… The king is dead. Long live the king.
If you’d like to find out more about Gary Gygax, Wired magazine has an excellent article about him.