6

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?

6

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.

1

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.

  • 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? – Tanner Swett Dec 14 '16 at 13:06
  • Possibly yes, though it may be somewhat moot as you still would need to keep the MIT text around. – Philippe Ombredanne Dec 14 '16 at 14:37
1

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)

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.