MPL / GPL Incompatibility

Background Note: This was originally written as part of a debate on license terms for releasing the source code to some parts of Unix, with the general intent of promoting use of those parts in GNU/Linux distributions. Given that GNU and Linux are GPL-licensed, I argued that the incompatibility between MPL and GPL should preclude use of MPL. This incompatibility is not immediately obvious to many readers, so I was asked to explain in detail why MPL and GPL are incompatible.

I've made the assertion on several occasions that the Mozilla Public License (MPL) is incompatible with the GNU General Public License (GPL). This is not an original observation on my part. It is the oft-stated opinion of Richard Stallman and others.

The effect of this incompatibility is that if a company releases source code under the MPL, none of that source code can ever be incorporated into GPL programs. Moreover, no GPL-licensed source code can be incorporated into a program containing the MPL source code. This incompatibility is a matter of law: there is no way that one program can satisfy both licenses, so one must choose not to use at least one of the licenses.

I've been asked, on at least two occasions, to explain exactly why the two licenses are incompatible. I will attempt to explain this as best I can. Beware that I am not a lawyer, that I have no legal training of experience whatsoever, and that I have no expertise with the copyright and contract law which these licenses are based on. It is also worth noting that some terms (particularly in the GPL, terms like "work" and "derived work") have been left undefined so as not to conflict with whatever legal definitions may exist or be established.

I will quote from the licenses, but you may wish to look up the entire licenses.

The argument for incompatibility is as follows:

  1. MPL-licensed code cannot be redistributed under any license that imposes restrictions that are not present in MPL. MPL 3.1 (Application of License) states:
    You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder.
    The "rights hereunder" include the right granted to recipients to link MPL "Covered Code" with private non-MPL code to form a "Larger Work" (MPL 3.7 Larger Works). GPL does not give recipients any such right. Therefore, the recipient cannot change the licensing terms to apply the GPL instead of MPL.

    GPL has other requirements, regarding such things as notices of copyright and lack of warranty, which may be construed as limiting recipients' rights.

  2. GPL-licensed code cannot be redistributed under any license that imposes restrictions that are not present in GPL, or that does not support rights granted in GPL. GPL 6 states:
    Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein.
    MPL permits recipients to subvert the fundamental GPL right "to copy, distribute or modify the Program". In addition to allowing linkage with proprietary code, MPL 3.6 permits the recipient to relicense binaries:
    You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License.
    This section, in turn, fails to satisfy the requirements of GPL 3, which states:
    The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.
    MPL only requires that the source code to the covered code (including any modifications to the covered code) be made available, which is not sufficient to ensure that the recipient can actually modify a real program.

  3. The GPL license applies to entire works. When you modify a work by adding code, the additional code becomes part of the work (although only when it is distributed as part of the work), and as such must continue to be GPL-licensed. GPL 2 states:
    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
    There are some software licenses which do not conflict with this requirement. In particular:

    1. The GNU LGPL (Lesser General Public License, originally known as Library General Public License) explicitly grants recipients the right to re-license LGPL-covered code under GPL.

    2. The X11 license only imposes restrictions which can be met without conficting with any GPL terms.

    MPL does not permit relicensing, and does impose restrictions which are incompatible with GPL, therefore cannot be used in any GPL-licensed work (program or whatever).

  4. There are other detail differences between MPL and GPL. I'm not certain whether these differences are incompatible. They include (but are probably not limited to): required notices; required or advisory announcements (copyright, warranty); patent infringement issues; termination; legal jurisdiction (MPL favors Santa Clara County, CA); government end users.

Note: The Free Software Foundation has an extensive software license list, including notes on which licenses are or are not compatible with GPL.