Firstly, what is the exact purpose of the phrase "or (at your option) any later version" that usually accompanies GPL-licensed software? I get that it's supposed to be to allow future freedoms to be granted, but why is this particularly an issue with the GPL such that everyone includes this phrase?

Secondly, does this not also work in reverse? So if for example version 4 removes the restriction for modified source code to be supplied alongside the binaries (hypothetical example) then that would mean that people would no longer be obliged to provide the source code, even for older software (because they could choose to redistribute under version 4 instead of version 3). So this phrase not only allows the removal of "bad" restrictions from later users, but also retroactively applies the removal "good"/"important" restrictions so that later users are no longer bound by the same terms that the original developer intended. It surprises me that no one seems to be concerned about effectively licensing their software under a license that doesn't exist yet and that they have no control over.

Finally, what would be the implications if I were to remove/omit this phrase when distributing my software, and how exactly can I ensure that this part is completely removed/not applied to my software? Is omitting this part generally frowned upon and if so why?

  • 2
    I'd like to mention that the License FAQ by GNU (the creator of that license) answers this very question at gnu.org/licenses/gpl-faq.html#VersionThreeOrLater
    – b_jonas
    Nov 24, 2017 at 19:24
  • 1
    @b_jonas I am aware of and have read that page. I am looking for more specific answers that address the particular questions that I have asked. Specifically, why this is a commonly-used phrase with the GPL specifically (mostly answered by the FAQ page), what the implications of a more permissive later GPL version would be, and how I can go about removing this provision from my own software and the consequences thereof. Nov 24, 2017 at 21:13
  • You cannot just remove/omit that phrase, because the GPLv3 text is copyrighted and the FSF does not allow that as stated in the GPLv3.
    – Ini
    Jan 7, 2019 at 13:37
  • 2
    @Ini That phrase is not part of the GPL itself, it is included by whoever is applying the GPL to their code. i.e. People say "this is licensed under the GPL version 3 or, at your option, any later version". It is not part of the GPL itself. And, for that matter, there are projects that do not include the "any later version" part. Jan 7, 2019 at 16:58
  • 1
    @Ini GNU have stated that people are allowed to modify the GPL, just not call their modified version "GPL" (because it isn't and might be incompatible). The GPL document itself is copyright and cannot be modified, but the terms of the license can be modified to create a new license. gnu.org/licenses/gpl-faq.en.html#GPLOmitPreamble Jan 8, 2019 at 9:37

1 Answer 1


You are correct to note that “or (at your option) any later version” is a double-edged sword. If you license code under such a clause, you are placing a lot of trust in the Free Software Foundation that future licenses will be compatible in spirit to the previous GPL versions.

However, licenses have bugs and incompatibilities. By giving the user a choice of licenses, incompatibilities can be removed in future versions. Additionally, a project under such a license already has explicit permission from all contributors to move to a newer GPL version which makes license upgrades much easier.

As an example of a bug in GPLv2, consider Tivoization: GPLv2 software can be embedded in a device without giving users the ability to run modified versions, which violates the intent of this license. With GPLv3, such a workaround is forbidden under certain circumstances.

The GPLv2 is also incompatible with the Apache 2 license because Apache 2 contains a patent retaliation clause. The GPLv3 contains a compatible clause, so that Apache 2 licensed software can be used in GPLv3 licensed software.

Unfortunately, these changes made the GPLv3 incompatible with the GPLv2. E.g. the Linux kernel remains under the GPLv2. But if software had been licensed under GPLv2 or later, then GPLv2 and GPLv3 software can be combined, with the combination being governed by the GPLv3.

The GPLv3 section 14 discusses future license versions. The “or any later version” clause must be explicitly stated if desired. That will permit all future GPL versions. However, the license may also state a proxy that can decide which future versions of the GPL can be used. The GPLv3 does not describe this proxy any further, except that they shall issue a public statement of acceptance of a GPL version. I would like to point out that specifying a natural person as license proxy is very risky since that person may pass away. Using a license proxy only seems viable for mature projects that can denote a role or committee as license proxy, with a clear succession plan.

Not using any “or any later version” clause is perfectly fine. It is your decision whether you want to gift a license to your code to the public, and it is your decision what license you will use. By not using such a clause you do limit how your software can be used due to license incompatibilities, and future license upgrades become more difficult (e.g. if you want to protect future versions of your software from being exploited under a Tivoization-like loophole). However, allowing only a single GPL version gives you more legal certainty and it is perfectly understandable that you might want this.

  • So when you say that "the 'or any later version' clause must be explicitly stated if desired", does that mean that the clause must be explicitly placed in the documentation that says "this software is licensed under the GPL version 3" (or however I've worded it)? So if I simply say "this software is licensed under the GPL version 3" in my README file, without saying "or (at your option) any later version" then the ability to use later versions of the license won't be applied to my software? Nov 24, 2017 at 16:34
  • Also your answer is very thorough and in-depth. If you can also answer my very last question from the original post, about how people generally respond to the omission of this phrase, then I will consider accepting it. Nov 24, 2017 at 16:35
  • 4
    @MichealJohnson Including the GPL text is not in itself a license. Instead, your README or LICENSE file should include text along the lines “<name> project. Copyright <year> <authors>. This is software is licensed under <license>. You should have received a copy of the license along with this program. If not, see <url>.” The GPL appendix suggests phrasing which you should adapt to your requirements. As a license they suggest “GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.”
    – amon
    Nov 24, 2017 at 17:08
  • 1
    @Michael With respect to a future version of the GPL becoming more permissive, this has already happened with v2-to-v3: GPLv3 allows you to give a copy of your GPLv3 derived work to a contractor for the purpose of enhancing the software without the grant of GPL rights that would otherwise be required with distribution. GPLv2 doesn't permit this, so GPLv3 is more permissive in this regard.
    – apsillers
    Nov 24, 2017 at 22:02
  • 2
    @MichealJohnson I have an extensive answer at If a client sends me GPL'ed code, has it been distributed/conveyed to me? which includes the changed license text as well as rationale notes published by the FSF during the license GPLv3 drafting process. Certainly addressing tivoization was not the only change -- the GPLv3 went though many drafts and addressed many (fairly minor) changes, such as this one. The FSF's comprehensive writeup of the GPLv3's changes is available here: gnu.org/licenses/quick-guide-gplv3.en.html
    – apsillers
    Nov 24, 2017 at 23:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.