Using GPL code with MPL code [duplicate]
https://softwareengineering.stackexchange.com/questions/206734
Question
I've done a spot of Googling, and all I can find is information on using code under the MPL in a larger GPL licensed project. What I really want to know is: can I included GPL(v3) licensed code(/binaries) in a larger MPL(2.0) licensed project?
My understanding so far is that I can't, and that any project which uses GPL software must also be released under the GPL. Is this correct?
If this is correct, can I write software and release it under the MPL, even if it depends on a GPL library, as long as I don't distribute the GPL licensed parts with my MPL licensed parts?
And, if I then want to distribute both parts as a "larger work", how would the overarching GPL affect my MPL code?
Solution
Disclaimer, this is similar to my other answer on MIT & GPL, but there are some nuances involved with MPL.
can I included GPL(v3) licensed code(/binaries) in a larger MPL(2.0) licensed project?
Short answer: No, you can't*. They'll become subject to the copyleft.
* See the longer answer as this is one of the trickier ones
Long answer:
Reference 1 ) The Wikipedia article on license compatibility has a good section on GPL compatibility:
Many of the most common free software licenses, such as the original MIT/X license, ... are "GPL-compatible". That is, their code can be combined with a program under the GPL without conflict (the new combination would have the GPL applied to the whole).
[emphasis added]
Reference 2 ) And more explicitly from the FSF FAQ on GPL compatibility:
It means that the other license and the GNU GPL are compatible; you can combine code released under the other license with code released under the GNU GPL in one larger program.
And just for edification, here's the FSF's comments on various licenses
FSF has a number of comments on the MPL license.
Short version is that your combined work must be released as GPL.
Where it gets tricky
Let's say we have project Foo
licensed under MPL, and project Bar
licensed under GPL and which wants to use Foo
.
Bar+Foo
is allowed since the licenses are compatible, and the release of Bar+Foo
must be GPL as Bar
is GPL. Foo
, by itself and without Bar
or Bar+Foo
, is still available under the MPL license. Said another way, Bar+Foo
has no license impact upon Foo
itself.
The resulting license of the project combination is a forward acting event for the combination only. It is not a retroactive event. MPL takes this a step further with section 3.3 and explicitly requires the owner of Bar+Foo
to provide Foo
's distribution in MPL form.
So if someone else wants to take Foo
and do something else with it, they are still free to do so without the copyleft provision of the GPL. However, if they take Bar+Foo
, delete Bar
and only use +Foo
then they are still bound by the terms of the GPL since Bar+Foo
was GPL'd.
In my opinion, this is about as close as a license can get to nullifying the viral effect of GPL. The owners of Foo
are making sure that it continues to live and be advertised as MPL while still letting you do what you want with your GPL'd application.
You also asked:
If this is correct, can I write software and release it under the MPL, even if it depends on a GPL library, as long as I don't distribute the GPL licensed parts with my MPL licensed parts?
No, this is not correct. It will be GPL since it depends upon a GPL library.
And, if I then want to distribute both parts as a "larger work", how would the overarching GPL affect my MPL code?
You'll distribute the broader work as GPL.
You'll also need to provide the smaller MPL work as MPL.