Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question

marked as duplicate by Bart van Ingen Schenau, Dan Pichelman, Eric King, MichaelT, gnat Aug 2 '13 at 6:34

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1  
@chirlu Close enough! Thanks. –  Angus Ireland Aug 1 '13 at 9:57

1 Answer 1

up vote 1 down vote accepted

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.

share|improve this answer
    
OK, that seems to make sense. Essentially, I have to GPL it one way or another, even if I keep it MPL too, and the parts which depend on the GPL'd library can't be MPL. Correct? –  Angus Ireland Aug 1 '13 at 19:28
    
@AngusIreland The combined application (GPL bits + MPL bits) must be GPL due to the copyleft. The MPL bits must* remain MPL outside of the combined application. The * is because you own the MPL bits and are therefore free to relicense. Relative "size" of the code doesn't matter. One little bitty GPL lib injects the copyleft to the entire application. –  GlenH7 Aug 1 '13 at 19:32

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