I have a GPL3-licensed program that supports a specific line of hardware. There is a GPL-2 program that supports a lot of hardware similar to the one I support. It was suggested to me that this other program use my code to add functionality for supporting that hardware I support. I'm open to this. How can it be done without violating either license? I don't want to dual-license my program because I don't want the potential for unscrupulous people exploiting GPL2 loopholes.

  • Is that code licensed under "GPL-2 only" or (more common) "GPL-2 or later" ? Jan 2, 2023 at 17:02

1 Answer 1


As we discuss at more length here, GPLv2 and GPLv3 are incompatible licences: that is, if you combine code under GPLv2 with code under GPLv3, there is no licence that satisfies all the requirements of both upstream licences, and the resulting work cannot be distributed without violating someone's copyright.

The easiest way to do what you want is to relicense your code under GPLv2 (if you are the sole rightsholder) or for them to relicense their project under GPLv3 (if they can). If neither of you is willing or able to do this, code from the two projects cannot be combined.

I note in passing that if their code is licensed not under GPLv2 but under GPLv2+, then the uplift to GPLv3 becomes trivial. Edit: if this route is taken, as you suggest it has been elsewhere, then we should be clear that the GPLv2+ project has had its licence uplifted, and is now GPLv3 (or GPLv3+, at their discretion) - there is no way to combine GPLv2 code and GPLv3 code, and have the result be redistributable.

  • I am not the sole rightsholder. The intention is not to merge the two projects, but allow the other one to pull in my code from time to time. I continue to develop mine as a standalone. This has already happened with another project of mine, with my blessing. In that case, the two projects both have licenses of "GPL2 or later", so there was no confusion. Should I mention these projects? I feel it should help better explain what's going on.
    – Frotz
    Jan 1, 2023 at 8:18
  • 1
    If you want to allow the GPLv2 project to use code from your project, you must dual-license it - or they need to change their project to GPLv3. They are the only options, it doesn't matter what the projects are. Jan 1, 2023 at 8:38
  • 2
    @PhilipKendall I completely agree. I thought that's what I'd said, but if it was in any way unclear, I am very grateful for the clarification!
    – MadHatter
    Jan 1, 2023 at 8:42
  • 2
    I guess releasing OP's project under another non-GPL license which is compatible with GPL2 (maybe some kind of LGPL, or MIT/BSD?) is another option, but might be even less wanted. Jan 2, 2023 at 1:37
  • 1
    @Frotz that may not work either, depending upon how their code calls your code. If it's through arms-length mechanisms (eg, fork-and-exec) you're probably right that the two programs will remain separate, but if they use eg library functions in your code, that probably makes a single, combined work, and the problem's unchanged. In any case, if you're happy that your question's been answered, may I ask you to accept the answer? Otherwise, please let us know what in your original question remains unanswered. Thanks!
    – MadHatter
    Jan 2, 2023 at 7:12

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.