I like to make my work public by using GPLv2-Only. This because its pretty clear with the copyleft: Use my work for whatever purpose you want, but if you change it or make it better, give it back ;-)

This of course is my personal opinion and other people have other licensing preferences.

So here is my question:

I work a lot with other projects, so i use other peoples libraries and integrate them into my solution.

Mainly MIT and GPLv3+. If i use their work, i assume i need to publish under the same license, so if they used the permissive license MIT, so does also my code need to be published as MIT, same for GPLv3+.

Is this correct?

To be clear, i am not touching the libraries I'm adding to my project, i just add my code to it and create a program of it. If possible i would like to keep my code GPLv2-Only, which respects the ownership and usually makes great open source projects! (Go GNU/Linux ;-))

So is this compatible?

A.) My-GPLv2-Only-Solution + MIT Lib

B.) My-GPLv2-Only-Solution + GPLv3+

  • The right person to ask is a lawyer, and it depends upon your country. In France, you might also contact APRIL. See also opensource.org Apr 4, 2021 at 9:02
  • 1
    "Use my work for whatever purpose you want, but if you change it or make it better, give it back ;-)" Is this just a simplification from your side or do you have an incorrect understanding of the GPL? Users who make modifications do not necessarily have to share them.
    – md2perpe
    Apr 4, 2021 at 22:33

2 Answers 2


A.) My-GPLv2-Only-Solution + MIT Lib

Yes, this is compatible. The combination must be licensed as a whole under the GPLv2, and the MIT parts do not impose any restrictions that make this as-a-whole licensing a problem. You can follow both licenses simultaneously, so they are compatible.

B.) My-GPLv2-Only-Solution + GPLv3+

This combination cannot be legally distributed, because the GPLv2 says the work as a whole must be GPLv2-licensed, while the GPLv3+ says the work as a whole must be at least GPLv3-licensed. You cannot satisfy both requirements simultaneously (notably, the GPLv3 imposes requirements that are additional to GPLv2's, and the GPLv2 does not allow this) so you cannot distribute these components together.

If you are willing to license under the GPLv3 (or GPLv2+), then you can combine your work with GPLv3 libraries. If you remain under GPLv2 only, the world of GPLv3+ libraries is not available to software you wish to distribute.

You say your chief concern is with copyleft, so I'll note that the GPLv3's copyleft terms are identical to those in GPLv2. Version 3 introduces important updates to its existing mechanisms, e.g., allowing source sharing over a P2P network and allowing compatibility with other licenses' terms that forbid unauthorized trademark use. It is true that the GPLv3 includes some significant new mechanisms like limited patent retaliation and disallowing use of GPLv3 code in hardware devices that refuse to run unauthorized changes (called "tivoization"). However, even significant changes such as these do not affect copyleft source-sharing obligations, which are, again, identical to those in GPLv2.

However, both GPLv2 and GPLv3 only impose copyleft requirements when someone distributes your software. Anyone is free to make private modifications and may offer those changes only to other people who actually receive the software (which may possibly be set of zero people). This means that companies may use GPL software to offer network services without distributing the software or source code. If you want to prevent this case, you may license your code under the AGPLv3, which requires source disclosure to anyone who interacts with a modified version of the software over a computer network. AGPLv3-licensed software can be combined with GPLv3 software by special explicit allowance in both licenses.

  • The user could distribute the code without the library and ask the users of his code to ask the copyright holders of the GPLv3 library to provide the library as "dual-licence" (GPLv3+paid) and to buy the paid license. This would be legal. If someone uses the code and the GPLv3 library without being granted the paid license, that person (but not the person providing the code) commits a GPL violation... Apr 4, 2021 at 7:29
  • 1
    @MartinRosenau If the nonpaying user only uses the code privately, then they do not violate GPLv3: “You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.” GPLv2 is not so clear, but certainly the copyleft provisions are not triggered by private use. Apr 4, 2021 at 12:49
  • @BrianDrake This would mean that there is no problem if the user publishes the GPLv2 program without the library and tells the users that the dynamically linked library must be downloaded separately... Apr 4, 2021 at 15:46
  • @MartinRosenau If a nonpaying user engages in such behaviour on their own initiative, then there should be no legal problem at all, based on my previous comment. But if someone encourages such behaviour generally, other legal issues might arise? Apr 5, 2021 at 14:37
  • 1
    @BrianDrake That's fair; I suppose I meant anti-tivoization is one of two or three additions that isn't an expansion/clarification of an existing GPLv2 mechanism, rather than trying to rate its importance or legal complexity. Sorry, I can see how my language there comes across as insulting and trivializing, so I've refactored it slightly. As you say, my point is that there are many v2=>v3 changes, of varying degrees of impact and complexity, but none of them impact copyleft requirements.
    – apsillers
    Apr 5, 2021 at 15:20

Firstly, the GNU Project advises against using the term “MIT licence”, as it is ambiguous. See their comments on the Expat and X11 licences.

Now, on with the question:

I like to make my work public by using GPLv2-Only. This because its pretty clear with the copyleft: Use my work for whatever purpose you want, but if you change it or make it better, give it back ;-)

Normally, I try not to question the OP’s opinion. But in this case, I will. Why not GPLv3-Only? This seems equally clear on the copyleft aspect, but greatly increases compatibility.

If i use their work, i assume i need to publish under the same license

No, you need to publish under a compatible licence.

For example, say you combined an GPLv2-Only work with an MIT work and released the combination as GPLv2-Only. Your users would need to comply with the GPLv2 requirements, and in doing so would automatically comply with the MIT requirements too. This is all legal; these licences are compatible.

But GPLv3 requires modified versions to be under (A)GPLv3 as well. And GPLv2 requires modified versions to be under GPLv2. So you cannot comply with both licences at the same time; these licences are incompatible.

If possible i would like to keep my code GPLv2-Only

If you use an MIT library, this is possible.

If you use a GPLv3 library, you need to release the combination under (A)GPLv3. From this, users can extract your code, which will still be under (A)GPLv3. So it is not possible to keep your code GPLv2-Only. It can still be GPLv2, just without the “only”.

  • Can you teach me about the changes made from GPLv2 to GPLv3? My goal is that no one can use a loophole and use my code but not open source it. I think in some cases, GPLv3 allows this, which i am not a fan of. Please correct me. Apr 4, 2021 at 12:54
  • 4
    @user654789384 I don't know if this is a problem with your wording or your understanding, but the GPL puts no restrictions on entities using your code, just on distributing it. A company could modify your program and use it internally, or even let the public use it via, e.g., a web site that they run, and they are not obligated to open-source their changes so long as they don't redistribute the program.
    – cjs
    Apr 4, 2021 at 14:39
  • 4
    @user654789384 I'll add that, compared to the GPLv2, the GPLv3 only increases copyleft source-sharing obligations, notably in disallowing "tivoization," the use of GPL software in a hardware device that refuses to run unauthorized modifications: the GPLv2 allows this loophole while the GPLv3 has closed it. You may be thinking of the LGPL, which is a weak copyleft license (it does not extend to the whole program, typically used for library code), or thinking of the fact that no version of the GPL prevents use in a network service with no shared source code -- this loophole is closed by AGPL
    – apsillers
    Apr 4, 2021 at 15:30
  • 2
    Actually, MIT is pretty unambiguos, especially when you combine it with the SPDX ID (spdx.org/licenses/MIT.html). I've used alot of MIT licensed libs, and they all included the same license text - the one SPDX uses.
    – Polygnome
    Apr 4, 2021 at 22:07
  • 1
    @user654789384 No, they don't. This is known as the "SaaS loophole".
    – Polygnome
    Apr 4, 2021 at 22:09

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.