GPLv2 or Later

If you ever released software under the GNU General Public License you are probably familiar with this formulation:

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

While this is not part of the license itself, the Free Software Foundation recommends the use of this formulation when releasing programs under the GPL. Paragraph 9 of the license explains why the “or later” clause is useful,

The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

and what it precisely means for anybody using a program released using this clause:

Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

And while the GPL FAQ gives more detail on the reasons developers would want to follow this recommendation, there is still a plenty of confusion surrounding this clause.

First of all, The FSF cannot know the ramifications their licenses might have on your particular project (that is why most companies and many individuals will hire copyright lawyers, if they need this kind of advice). Moreover, the FSF cannot know what your exact goals are when applying their license. So they assume that since you are using a Free Software license you care the most about Freedom, and that is what they offer you by default.

You must keep in mind that stated goal of the FSF is to promote Free Software. However, Freedom is not the main goal for everyone. Companies like MySQL are actually not so much interested in Freedom, but they still like the GPL because of its virality and its incompatibility with proprietary licenses, and build their whole dual-licensing-based business model on top of that. Then, should the FSF explain the benefits of dual-licensing? FSF would be quite biased in this matter, since they strive to promote Freedom, not the opposite of it, and they thus have a very strong view on proprietary licenses. The point here is that you cannot expect FSF to provide an objective analysis of the pros and cons involved in selecting a license, and this also holds for choosing between “GPLv2 or Later” and “GPLv2 only”.

And if they won’t do it who will? Well, here is my attempt to analyse both variants, and point out the reasons you might want to use one or the other.

Let’s start with “GPLv2 or Later” since it is the default formulation, and probably most developers will want to stick to that. The GPLv2 was released in 1991, when there was almost no Free Software, nor could anybody predict what would be the world looking like 15 years from then. However, Stallman did understand that things are going to change, and that at some time the license will need to be updated to deal with new issues that were not relevant at that time. This is evident when one looks at the issues addressed by the draft of GPLv3: who could have predicted that the companies will come up with something so obnoxious as DRM? Maybe there were some, still DRM is not the topic here. However, nobody could have predicted that DRM could effectively be used to restrict users from running modified versions of applications released under the GPL, rendering these applications effectively non-Free when run on DRM-encumbered platforms. And this is just one example of the holes GPLv3 tries to fix, while remaining true to the original intent of the GPL, i.e. preserving the four freedoms.

The point of the “or later” clause is to allow Free Software developers to easily change the license of their projects to an updated version, if they later think it is appropriate. In Free Software projects it is quite common that the code was contributed by thousands of people, so if it weren’t for the “or later” clause, in order to change the license of such a project all of them would have to agree on the change, since they are all the copyright holders. But it is often the case that after many years some old contributors cannot be contacted, maybe contact information was not kept in the first place, maybe some of them changed their email address, maybe some of them even died. In order to make it possible to update to a new version of the GPL in this setting, developers are recommended by the FSF to use the “or later” clause.

However, using the “or later” clause does not mean that the version of the license is automatically changed once a new version exists. The developers still have the choice of the license they use for their project in the future. For example, once GPLv3 is released, “GPLv2 or later” programs can effectively be distributed (i.e. without unburying the dead) under the following terms:

  • GPLv3 or later. This is what the FSF expects most projects to choose, and in particular the GNU projects are already known to follow this path. It not only uses the “or later” cause now, but it also preserves the choice to easily update the license in the future under its provision. It also closes the door to the bugs in the GPLv2, since even though past releases may still be distributed under the GPLv2, future ones will no longer fall under that license.
  • GPLv2 or later. The developers could continue using the same license as before for their new releases. This offers maximum compatibility, since the code effectively becomes dual license (GPLv2 and GPLv3). This would not protect developers from future violations of their Freedom that are not explicitly stated by the GPLv2 (i.e. bugs in GPLv2). However, they preserve the choice of plugging such holes in the future.
  • GPLv2 only. There are at least two different scenarios when I expect this to be useful. First, the developers were not aware of the “or later” clause in the first place, but still used it, because it is in the default formulation and they didn’t understand it’s implications. Then, they might decide that GPLv2 is enough for their needs and stay with it. Second, there might be people who feel that the FSF did not respect the original ideas behind the GPLv2, or they added too many restrictions for an open source license, or any other reason they might have to reject GPLv3. While it is not very likely that this will be the case for many, it is very good to have such an escape hatch, just in case the FSF ever goes of course.
  • GPLv3 only – would mean that the developers find the conditions of the updated version good, however opt out from any future updates. This is like installing SP1 for Vista and then swearing never to upgrade again for the whole life. Not such an odd choice after all 😉

The arguments made so far should make it quite clear that the “or later” clause preserves choice for developers, and does not restrict it. However, there are legitimate situations when people, very often companies, are choosing “GPLv2 only” for their code, and we will see some of them in the sequel. Just to give you a hint: many of the situations involve a trade-off between Freedom and Shareholder Value.

(to be continued)


3 Responses to GPLv2 or Later

  1. Bystander says:

    So, no second part? If you do write one, please link it from here. I came here via Palmida’s GPL3 blog…

  2. hritcu says:

    Sorry for not writing down the second part of this until now. Like some other interesting posts here it all started as a flame on Slashdot, which made me think about this and then write it down. The truth is that I didn’t know my thoughts on this would be interesting to others. So here it goes, a modest first try to start writing the 2nd half.

    Some good reasons to go with “GPLvX only”

    You are the copyright holder for all the code of the project so you can always change the license at will. Maybe you wrote all the code yourself. While this is rarely the case for individuals, it is frequently the case with the code companies release under the GPL. In such a setting external contributions can be accepted only if the submitter accepts to assign copyright to the company. Then the copyright holder can even dual-license the code under a proprietary license (e.g. MySQL).

    You want to control the license under which your code is distributed

    Some not so good reasons for using “GPLvX only”

    Fear of the unknown (future conditions), forks, “too much freedom” … too much politics (political agenda), too much activism … you are afraid of the FSF
    You want your code to be released under only one license. Why?

  3. Raghu Nayak says:

    Very Nice article.

    Thanks for sharing your view..

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: