What issues are involved when taking code from (for example) MIT licensed code and including it in a Apache 2.0/GPLv3 licensed project.

Does that mean that there is simply no patent license granted?

Is that situation any different from going from LGPLv2.1/GPLv2+ to GPLv3?


The MIT/Expat license is a permissive license (i.e. no copyleft), so re-licensing code with this license for the purposes of creating a derivative is normally OK.

The LGPLv2.1/GPLv2+ licenses are not permissive, but they have explicit provisions that allow re-licensing to GPLv3, so re-licensing code with one of these license for the purposes of creating a derivative is also normally OK.

If there is no patented code snippets present in the MIT/LGPLv2.1/GPLv2+ code you integrate, then there is no problem doing this re-licensing.

However, the MIT licenses do not have an anti-patent clause, and the anti-patent provisions of LGPLv2.1 and GPLv2+ (unlike GPLv3) are not in the form of a patent indemnification clause. This means that code distributed under MIT/LGPLv2.1/GPLv2+ may contain patented components (this is more likely to be the case with MIT than with GPLv2.1/GPLv2+).

If the code contains patented components, re-licensing it to GPLv3 becomes complicated.

Does that mean that there is simply no patent license granted?


Here are the two possible scenarios if the code you plan to use is patented:

  1. You hold all patent rights in the MIT/LGPLv2.1/GPLv2+ licensed code. When you take this code and include it in a Apache 2.0/GPLv3 licensed project you're at the same time granting any downstream users the patent license.

  2. Somebody else holds patent rights in the MIT/LGPLv2.1/GPLv2+ licensed code. Then you simply do not have the necessary rights to use the code in a Apache 2.0/GPLv3 licensed project (unless the holder of the patent rights agrees to grant downstream users the patent license. You should get such an agreement in writing before trying to do this.)
    The eventuality that you go ahead and re-license soebody else's patented code to GPLv3 without having the required patent rights is answered (as seen from the patent-holders perspective) in the GPL FAQ: The answer first points out that your patents will not be invalidated by this (so the patent license clause of GPLv3 does not kick in). The FAQ then goes on to say that if you try to enforce your patents under such circumstances, the FSF will be p*ssed off. Here is the exact quote from the FAQ, as something may get lost in paraphrasing:

    If users may also elect to use later versions of the GPL, that's merely an additional permission they have — it does not require you to fulfill the terms of the later version of the GPL as well.
    Do not take this to mean that you can threaten the community with your patents. In many countries, distributing software under GPLv2 provides recipients with an implicit patent license to exercise their rights under the GPL. Even if it didn't, anyone considering enforcing their patents aggressively is an enemy of the community, and we will defend ourselves against such an attack.

For reference, patent license text from GPLv3:

Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.

  • Thanks. This didn't cover the last line of my question about LGPLv2.1/GPLv2+ code. If you could add something mentioning that, I'd appreciate it.
    – MI3Guy
    Jul 18 '15 at 15:06
  • @MI3Guy. Done... Jul 18 '15 at 15:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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