I've found interesting open source project (mostly dead now) and I would like to fork it, fix some bugs and use it. The project is licensed under "gpl 2 or later", however I'm not big fan of "gpl 3", so I would like to keep my changes to the code base "gpl 2" only. To that matter, I have few questions:

  1. Can I simply relicense it all under "gpl 2 (only)"? I assume yes since "gpl2" and "gpl2+" should be compatible licences?
  2. If answer to 1. is "no", can I make changes under "gpl2 (only)" and make it explicit that anything git blame says was written by me is "gpl2", and not "gpl2+"? I would like to avoid this since it could lead to confusion.

  3. If answer to either of 1. or 2. is "yes", does not this kinda defeat purpose of the license (I assume the purpose is to get code back)? Even if I share my changes, the upstream (in this case upstream is dead so probably not an issue) cannot use them since they would not fit the "gpl2+" requirement of the rest of the code?

It's possible I'm just missing something fundamental here so please enlighten me :) Links to further reading are appreciated.

2 Answers 2


The GNU project's GPL compatibility matrix lists "I want to copy code under: GPLv2 or later" against "I want to license my code under: GPLv2 only" as allowed ("OK"). It carries the following footnote:

You must follow the terms of GPLv2 when incorporating the code in this case. You cannot take advantage of terms in later versions of the GPL.

This makes perfect sense: you elect to use the existing code under GPLv2 only so you can distribute it with other GPLv2 only code that you supply.


Yes, “GPL version 2 or later“ gives you the choice of which version you want to use. It is your right to select only version 2 for the modifications that you make.

The purpose of the GPL is not reciprocal code sharing so that your code could be integrated upstream. Instead, the purpose of the GPL is to ensure that the software and all its derived works remain Free Software, so that others are free to use, study, modify, and share it. See also the Free Software Definition.

Whereas permissive licenses like the MIT license give other developers all freedom incl. the freedom to strip end users of these freedoms, copyleft licenses like the GPL are more restrictive for other developers because the GPL tries to ensure that all users incl. end users can enjoy these freedoms: if you publish a modified version of GPL-covered software, you must stick to the same license.

All versions of the GPL try to ensure these freedoms, but the newer GPLv3 contains various improvements, such as clearer language and structure, closing some loopholes around embedded devices, a mechanism for Additional Terms, Apache 2 compatibility with an anti-patent-treachery clause, and automatic reinstation of the license when license violations are fixed. Licensing software as “GPL version X or later” helps downstream users to benefit from such improvements when new GPL versions become available. It also increases license compatibility across versions, thus strengthening the open source ecosystem.

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.