Researcher, Free Software Advocate and peacemaker in the spare time.

Home Readings Projects G+ Talks

GNU GPLvX or any later version

Marcel Ribeiro Dantas [mribeirodantas at]

Why should I?

Published on May, 26th. (Last modified on: June, 4th)

When it comes to releasing your software's source code, it's extremely important to choose very carefully the best license available, in order to make sure your source code will be taken care of, used, distributed and modified in the way you expect it to be. Most free softwares are released under a GNU license, a large number of them licensed under the GNU General Public License (about 68% of the projects listed on, as of January 2006).

The GNU GPL, as we are going to call the GNU General Public License from now on, was first released in 1989 and has undergone several revisions, resulting in new versions of the license ever since. The Free Software Foundation released the lastest version, version 3, on 29 June 2007. These versions are abbreviated as GNU GPLv1, GNU GPLv2 and GNU GPLv3.

There are other GNU licenses for specialized purposes, such as the GNU Lesser General Public License (GNU LGPL) which is most recommended for libraries in a specific situation and the GNU Affero General Public License (GNU AGPL) for network server software. You may have seen, in the course of reading the COPYING and LICENSE files in your free software packages, the addition of a plus sign (+) after the license's name. What does it mean?

When you see software source code released under GNU GPLv2+, that means it's released under the terms of the version 2 of the GNU GPL or any later version at your option. It says you're free to license your fork or distribution of this software as GNU GPLv3+, GNU GPLv3 or even GNU GPLv2, for example. Now that we have it clear, let's go to the main focus of this draft.

Ok Marcel, I got it. I want to release my source code under the terms of the GNU General Public License version 2, for example. But why would I release it under the terms of the GNU GPLv2 and any later version at someone's option?

Of course there is no harm in doing it, but most people (until recently) just do it for the sake of doing it. I mean, at first I thought there was no other reason for doing it, and that's why I've written this draft, to make sure nobody else will ever think it's not an important issue anymore.

As you can see here, two software licenses are compatible if both licenses allow you to combine two programs (or substantial parts of them) into a larger work. If these licenses don't allow you to do so, we say they are not compatible. When you release your software's source code under the terms of GNU GPLv2, it means you will not be able to combine improvements of additional software under GPLv3 into your source code, since they're not compatible. GNU GPLv3 incorporates new techniques to make sure others won't be able to neglect your freedom and your rights.

By the time GNU GPLv2 was written and released, it was a very effective license. But deceitful companies worked their way around the language of the license to use free software while still denying you the freedom you deserve. GNU GPLv3 was developed to solve this problem and new versions probably will arrive in the future. Releasing your source code under the terms of a GNU GPL license ensures that everybody's freedom will be protected at the time of release, since it protects everybody from all the known threats.

By the time GNU GPLv2 was released, there was nothing like peer-to-peer distribution of software, for example. So efforts were made to make the new version of GNU GPL (the third one) compliant with such distribution. You can read more about it here.

But what if a new version of GNU GPL is released and you don't agree with the terms? As a user of the software, the terms clearly specify that you may choose a version "at your option", selecting one that best suits your needs. Read more about it here.

All in all, it's all about compatibility and to guarantee licensee freedoms. A GNU GPLv3 project cannot use code of a GNU GPLv2 licensed project, and a GNU GPLv2 project can't make use of a GNU GPLv3 project code either. It's the + that solves all the compatibility issues and guarantees the freedom of licensees.

You can read the Frequently Asked Questions List about the GNU licenses in here, and see a table covering all compatibilities of GNU software licenses clicking here. For questions on how to apply a license to your software, see this.


I'd like to thank the people in #gnu at for the support in proofreading this draft and making a few terms clear to me. Special thanks to jxself, mtjm, ksuhku, Shlomi Fish and lxo. Totimkopf and Gennadius helped with great suggestions on the improvement of the English talking.

Creative Commons License
GNU GPLvX+ Why should I? by Marcel Ribeiro Dantas is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Copyright ® 2013 Marcel Ribeiro Dantas
Content managed with vim