I’m forced to work with software that has been given incompatible licenses by its authors. They have created an original API that they’ve licensed under the GNU GPL, but then they implement that API into a larger program containing LGPL licensed work, and licensed that program under the LGPL.

Now I must fork this LGPL program. Do I adhere to the GPL because that license was granted to that software first? Do I adhere to neither, because they’re incompatible and it’s impossible to satisfy both? Or do I attempt to adhere to both of them except in cases where they conflict?

Finally, and most importantly how am I expected to license my fork?

  • 2
    The LGPL versions 2 and 3 can always be "upgraded" to the GPL at option of a downstream author. (This is a mechanism explicitly enumerated in the license text of the LGPL.) That said, what language do the authors use to "license[] that [larger] program under the LGPL"? The original authors could license their GPL work under the LGPL as well, if they wanted to. (It remains to be seen whether or not they have done so.)
    – apsillers
    Commented Jan 26, 2020 at 21:55
  • 2
    Also, what do you mean by "they implement that API into a larger program"? Is the API truly just a GPL-licensed abstract interface, while the implementation is LGPL-licensed? Or does the GPL work have an implementation, and the LGPL work makes use of the GPL API via, e.g., function calls?
    – apsillers
    Commented Jan 27, 2020 at 16:07
  • It would be most accurate to say that the API is almost entirely abstract interfaces. While it does contain static utilities and enums, there’s no functional implementation for any of it. The implementation of the API’s interfaces is done by their larger LGPL program. I’m not sure what you mean when you ask "What language do the authors use to…" They simply package the license in a txt file with the sourcecode.
    – justis
    Commented Jan 27, 2020 at 20:50

1 Answer 1


Licences don't inhere in software, they attach to software during the act of conveyance. If you received a chunk of code under LGPL, you may use it under those terms regardless of any other licence under which parts of it may have already been published.

LGPL normally requires modified versions to be published under LGPL. But as apsillers notes above, LGPLv2.1 (in s3) permits code conveyed under its terms to be received under the terms of GPLv2 or any later version. Similarly, LGPLv3 (in s2b) permits modified versions to be conveyed onwards under GPLv3. Both of these options apply, in your case, at your discretion.

So: if the version you received was under LGPLv2.1, you should license your modified version under either LGPLv2.1, GPLv2, or GPLv3, as you prefer; arguably, GPLv2+ could also be chosen. If the version you received was under LPGLv3, you should license your modified version under either LGPLv3 or GPLv3, as you prefer.

  • As I understand it from your response, the copyright owner of the GPL API has effectively created an alternate stream for that software under the LGPL along with their implementation. In other words, the same API under two different licenses depending on the distribution stream it was obtained from. If that’s the case, I can see this making it very difficult to verify which downstream the API was obtained from when a third party application attempts to implement functionality using the API. Impossible, even.
    – justis
    Commented Jan 30, 2020 at 18:26
  • This is a special case since both works were created and distributed by the copyright holder. You’ve answered the question I’ve asked, but so I understand you correctly, if the API were MIT licensed by a different copyright holder, the person implementing it would not have been able to legitimately relicense the API under the LGPL by distributing their implementation of it under the LGPL. If forced to work with that illegitimately LGPL implementation of the API, should I ignore the LGPL of the implementer and license my fork as MIT? Or should this be asked in a separate SO question.
    – justis
    Commented Jan 30, 2020 at 18:42
  • @justis to your first comment above: usually people who have software know where they got it from, so that is not usually an issue. To your second comment above: nothing in your original question mentions MIT, so this is in danger of becoming a chameleon question. I would ask a new question about the scenario you posit above, possibly linking to this question for background.
    – MadHatter
    Commented Jan 30, 2020 at 19:50
  • My concerns in my first comment weren’t about the person obtaining the software not knowing which license is applicable to it, but rather enforcement by the copyright holder and ensuring that downstream receivers of the software receive the license for the software that they should be receiving. Thank you for your time.
    – justis
    Commented Jan 30, 2020 at 20:23

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.