11

Suppose I come across Project G, an open-source project licensed under the GNU GPL, and Project M, an open-source project licensed under the Expat license (also called the MIT license). I want to distribute a modified version of Project G which includes the entirety of Project M.

Individually, each of the following statements seems to be true:

  • If I distribute this modified version of Project G, then I am required to license the entire modified version of Project G under the GPL.
  • By licensing the entire modified version of Project G under the GPL, I am also licensing each component of the modified version under the GPL. This means that I am licensing Project M under the GPL.
  • Licensing Project M under the GPL would mean that anyone is permitted to distribute Project M without including a copy of the Expat license (as long as they obey the GPL in doing so).
  • The Expat license does not allow me to grant other people permission to distribute Project M without including a copy of the Expat license.
  • I am, somehow, permitted to distribute the modified version of Project G.

But these statements are mutually contradictory. Which of my statements here is wrong?

3 Answers 3

9

I think I've found the answer for the GPL version 3.0.

Section 7 of the GPL says:

Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

[...]

b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or [...]

The sole requirement which the Expat license imposes is for "preservation of specified reasonable legal notices or author attributions". Therefore, when I distribute my modified version of Project G, I simply have to supplement the GPL by stating that the terms of the Expat license apply to Project M.

So the answer is that both of these statements are half wrong:

  • By licensing the entire modified version of Project G under the GPL, I am also licensing each component of the modified version under the GPL. This means that I am licensing Project M under the GPL.
  • Licensing Project M under the GPL would mean that anyone is permitted to distribute Project M without including a copy of the Expat license (as long as they obey the GPL in doing so).

The first bullet point is half-wrong because I'm actually licensing Project M under a supplemented version of the GPL. The second bullet point is half-wrong because this supplemented version of the GPL does not allow people to distribute Project M without the Expat license.

5

When you re-license, the GPL would be going on the work as a whole.

The Expat parts you added are still licensed under the expat license individually, and under the GPL collectively. (which is why many source files have the license notice at the top in a comment. So people don't have to be concerned about this when developing free software)

3

How is the Expat (MIT) license compatible with the GPL?

Primarily because the MIT/Expat license is sub licensable (beside any other GPL compatibility considerations):

[...] to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, [...]

So as long as you keep up with the simple MIT license requirements (e.g mostly preserve the original notices and copyright) you can re-license MIT-licensed code under any other license including the GPL, any version.

7
  • 1
    Does this mean that I can take code that's under the MIT license and re-license it under an even more permissive license such as the Creative Commons Public Domain Dedication? Dec 14, 2016 at 13:06
  • 1
    Possibly yes, though it may be somewhat moot as you still would need to keep the MIT text around. Dec 14, 2016 at 14:37
  • 2
    No, you cannot take code that's under the MIT license and re-license it under more permissive terms. Only the code's copyright owner can do that.
    – jkdev
    May 13, 2020 at 1:56
  • 2
    You can't relicense someone else's code without their permission. More generally, you can't remove restrictions from someone else's code. Again, only the copyright owner is allowed to do that. You especially can't apply CC0 to someone else's code; the intent of CC0 is to remove essentially all copyright restrictions. What you can do, however, is combine MIT code with GPL code and distribute them together under the terms of the GPL (which are more restrictive than MIT terms).
    – jkdev
    May 19, 2020 at 7:30
  • 3
    To clarify: when I say "relicensing," that's different from "sublicensing." The MIT License allows sublicensing: "...the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so"
    – jkdev
    May 19, 2020 at 7:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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