License Policy: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Undo revision 239318 by Gerv (talk))
(New 2.1 version, first draft)
Line 1: Line 1:
<!--
{{draft}}


Remaining to do:
<div class=version>
Version 2.1 draft 1
</div>


- Community checking
==Introduction==
- Make list of acceptable licences in point 3 match Support Code list
- Add entries to 3rd Party Code section for all entries in about:licence


-->
Mozilla has created this policy to govern which licenses are used for source files stored in our code repositories. Developers with check-in privileges to the mozilla.org code repositories must comply with this policy, as agreed to in the [http://mozilla.org/hacking/committer/committers-agreement.pdf Committer's Agreement], unless specifically advised otherwise in writing by Mozilla.


<p style="color: red">N.B.: This is a draft, and also not the master copy.</p>
The following is a brief summary of the Mozilla license policy:


<h1>Mozilla Foundation License Policy</h1>
* Newly-added code of a given type must be licensed under terms acceptable for that type of code - typically the Mozilla tri-license.
* New files in, or modifications to, an existing, consistently-licensed area of code should be under the same license as the existing code.
* You must consult the licensing team before importing third-party code which is not under the tri-license.


<div class=version>
For the complete license policy see the following sections. If you are trying to work out how to license some code, or what to do about code you want to import into the Mozilla repositories, there is a [http://www.mozilla.org/MPL/license-policy-flowchart.png flowchart] of the policy to help you.
Version 2.0 draft 3
 
</div>
==Types of Code==


<h2>Introduction</h2>
http://www.mozilla.org/MPL/code-diagram.png


<p>The Mozilla Foundation has created this formal policy governing licenses
<b>Mozilla Code</b> is code in our repositories which originated with the Mozilla Project.
to be used for source files stored in our code
repositories. Developers with check-in
privileges to the mozilla.org code repositories must comply with
this policy unless specifically advised otherwise in writing by
The Mozilla Foundation.</p>


<p>The following is a brief summary of the Mozilla Foundation
<b>Third Party Code</b> is code in our repositories which did not originate with the Mozilla Project.
license policy:</p>


<ul>
<b>Product Code</b> means all files any part of which are included in nightly binaries of the Mozilla family of Internet clients - Firefox, Thunderbird, SeaMonkey and Camino. Note that this definition excludes the code of tools used merely to build these products, such as system libraries. Code may be both Product Code and Third Party Code.
<li>Newly-added code must be licensed under the terms pertaining
to that part of the repository to which it is added.</li>


<li>You must consult the licensing team before adding code
<b>Support Code</b> is code in our repositories which is Mozilla Code (i.e., it originated with the Mozilla Project) but is not Product Code. Examples include Bugzilla and Bonsai.
not under one of the mozilla.org-approved licenses.</li>
</ul>


<p>For the complete license policy see the following
Please see the accompanying diagram for the relationship between the four definitions.
sections.</p>


<h2>Definitions</h2>
==Licensing of Mozilla Code==


<ul>
Mozilla Code is code in our repositories which originated with the Mozilla Project, i.e., which was created by a developer who has signed the Committer's Agreement, and who created the code with the intent that it be maintained and distributed by the Mozilla Project.
<li><b>Mozilla Code</b> is code in our repositories which originated with the Mozilla Project.</li>


<li><b>Third Party Code</b> is code in our repositories which did not originate with the Mozilla Project. It is usually, but not always, under its own specific license.</li>
Mozilla Code that is Product Code <u>must</u> be licensed under [[License_Policy#Using_the_Tri-License|the tri-license]], unless the code is an addition to Third Party Code that has already been imported to a repository. For details on licensing of Third Party Code, see the [[License_Policy#Licensing_of_Third_Party_Code|appropriate section below]].


<li><b>Product Code</b> means all files any part of which end up in nightly binaries of the  
Mozilla Code that is Support Code should also be licensed under the tri-license, unless it falls into one of the two following exceptions:
Mozilla family of Internet clients - Firefox, Thunderbird, SeaMonkey
and Camino. Note that this definition excludes the code of tools used merely to
build these products. Code may be both Product Code and Third Party Code.</li>


<li><b>Support Code</b> is code in our repositories which originated with the Mozilla Project but is not Product Code.</li>
===Trivial Support Code Exception===
</ul>


<p>Please see the diagram for the relationship between the four definitions.</p>
Trivial Mozilla-originated Support Code, such as testcases or snippets of code used in documentation, should be put in the public domain in order to facilitate re-use.  


[[Image:Code-diagram.png]]
To put a piece of trivial Support Code in the public domain, apply the Creative Commons Public Domain Dedication by using the following boilerplate:  


<h2>Acceptable Licenses</h2>
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/


<ol>
Note that, for historical reasons, some trivial Support Code, such as [https://developer.mozilla.org/Project:Copyrights old code samples in developer.mozilla.org], may be under the MIT license.
<li><p>The following license (the "Mozilla tri-license") is acceptable in all circumstances except for those covered by point 4, below:</p>


<ul>
===Case-by-Case Support Code Exceptions===
<li>
MPL/GPL/LGPL triple license,
allowing use of the file under the terms of any one of:
<ul>
<li>The [http://www.mozilla.org/MPL/MPL-1.1.html Mozilla Public License, version 1.1]
or later (MPL)
<li>The [http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2]
or later (GPL)
<li>The [http://www.gnu.org/licenses/lgpl-2.1.html GNU Lesser General Public License, version 2.1]
or later (LGPL)
</ul>
</li>
</ul>


<p>For new source files
Some existing non-trivial Support Code is made available under licenses other than the tri-license or Public Domain licenses. If you are adding new code, or making modifications to existing code, in one of these projects, you should use the license which is already associated with these projects- typically MPL, NPL, or MPL/GPL.
please use the
[http://www.mozilla.org/MPL/boilerplate-1.1/index.html boilerplate license notice]
appropriate for the type of file you are creating. Please don't copy boilerplate from existing files.</p>


<li><p>The following license is acceptable for trivial pieces of Support Code, such as testcases:</p>
Non-trivial Support Code not listed in that page must be under the tri-license. New exceptions for new Support Code may be requested from [mailto:licensing@mozilla.org licensing@mozilla.org], but are not usually granted.


<ul>
==Licensing of Third Party Code==
<li>Creative Commons Public Domain Dedication, using the following boilerplate:
<blockquote><pre>
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/licenses/publicdomain/</pre></blockquote>
</li>
</ul>


<li><p>The following licenses are acceptable only for Support Code in
Third Party Code is code in our repositories which did not originate with the Mozilla Project. It is usually, but not always, under its own specific license.
directories whose files are already under the license in question,
as outlined later in this policy:</p>


<ul>
===Third Party Code Already in a Repository===
<li>The [http://www.mozilla.org/MPL/MPL-1.1.html Mozilla Public License, version 1.1]
or later (MPL) alone
<li>The [http://www.mozilla.org/MPL/NPL-1.1.html Netscape Public License, version 1.1]
or later (NPL) alone
<li>MPL/GPL dual license, allowing use of the file under the terms of either of:
<ul>
<li>The [http://www.mozilla.org/MPL/MPL-1.1.html Mozilla Public License, version 1.1]
or later (MPL)
<li>The [http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2]
or later (GPL)
</ul>
</ul>


<li><p>For Third Party Code, you should use the license pertaining to that
When modifying or adding to Third Party Code that has already been checked into a mozilla.org repository by someone else, you should use the license pertaining to that code. The only exception is if you are adding Mozilla-specific files that have no reason to go upstream, such as build system files. In that case, you should use the Mozilla tri-license.
code when modifying it or adding new files to it, and the tri-license when
adding Mozilla-specific files such as build system files. See below for
a list of directories this applies to.</p>


<li><p><span style="color: red">All Product Code must be under either the tri-license or, for Third Party Product Code, a license compatible with all three sets of terms in the tri-license.</span> The purpose of this rule is to make sure that users of our code can take and use the same code under any one of the three licenses; no group is disadvantaged.
===Importing New Third Party Code===
</p>


<li><p>If importing new Third Party Code, always inform licensing&#64;mozilla.org. They can then check whether the license is compatible - even simple-looking licenses can have twists in them - and make sure we are meeting the requirements. </p></li>
If you are planning to import new Third Party Code into a Mozilla repository or a Mozilla product, always consult [mailto:licensing@mozilla.org licensing@mozilla.org] first. They can then check whether the license is compatible - even simple-looking licenses can have twists in them - and make sure our requirements are met.


</ol>
Non-Product Third Party Code must be under an Open Source Definition-compliant license.


<h2>Repositories</h2>
Product Code that is Third Party Code must be under the tri-license, or a compatible license such as the BSD or MIT licenses. (Apache and LGPL are not compatible.) The purpose of this rule is to make sure that all users of our code can use the complete code under any one of the three licenses; no group is disadvantaged. A complete list of compatible licenses that we currently use code under, and the code they apply to, can be found by opening <tt>about:license</tt> in the Firefox browser.


<p>The Mozilla project runs a number of source code repositories, plus repositories for documentation and websites which are out of scope for this policy. Here is a list of repositories plus a summary of the licensing situation.</p>
==Other Information==


<table border="1">
===Using the Tri-License===
  <tr>
    <th>Repository</th>
    <th>Domain Name</th>
    <th>Summary</th>
  </tr>
 
  <tr>
    <td>CVS</td>
    <td>cvs.mozilla.org</td>
    <td>Mozilla Code is mostly MPL/GPL/LGPL, with some exceptions - see below.</td>
  </tr>
  <tr>
    <td>Subversion</td>
    <td>[http://svn.mozilla.org/ svn.mozilla.org]</td>
    <td>All non-website Mozilla Code is MPL/GPL/LGPL.</td>
  </tr>
  <tr>
    <td>Mercurial</td>
    <td>[http://hg.mozilla.org/ hg.mozilla.org]</td>
    <td>All Mozilla Code except <span class="pathname">other-licenses/branding</span> is MPL/GPL/LGPL.</td>
  </tr>
</table>


<h2>Support Code (Not Tri-Licensed)</h2>
For the purposes of this document, the "Mozilla tri-license" is the MPL/GPL/LGPL triple license, allowing use of the file under the terms of any one of:


<p>The following directories contain Support Code which is not tri-licensed. (See Acceptable Licenses item 3, above.)</p>
* The Mozilla Public License, version 1.1 or later (MPL)
* The GNU General Public License, version 2 or later (GPL)
* The GNU Lesser General Public License, version 2.1 or later (LGPL)


<h3>Webtools</h3>
To apply the tri-license to new source files, please don't copy boilerplate from existing files - instead, use the appropriate [http://www.mozilla.org/MPL/boilerplate-1.1/ boilerplate license notice].


<table border="1">
===Copying Code===
  <tr>
    <th>Software</th>
    <th>Repository</th>
    <th>Directory</th>
    <th>License</th>
  </tr>
 
<tr><td>APIDoc</td><td>CVS</td><td class="pathname">webtools/apidoc</td><td>NPL/GPL</td></tr>
<tr><td>Bonsai</td><td>CVS</td><td class="pathname">webtools/bonsai</td><td>NPL</td></tr>
<tr><td>Browser Buster</td><td>CVS</td><td class="pathname">webtools/browser-buster</td><td>MPL</td></tr>
<tr><td>Build</td><td>CVS</td><td class="pathname">webtools/build</td><td>NPL</td></tr>
<tr><td>Bugzilla</td><td>CVS</td><td class="pathname">webtools/bugzilla</td><td>MPL</td></tr>
<tr><td>"Bugzilla 3" (defunct)</td><td>CVS</td><td class="pathname">webtools/bugzilla3</td><td>MPL/GPL</td></tr>
<tr><td>Despot</td><td>CVS</td><td class="pathname">webtools/despot</td><td>MPL</td></tr>
<tr><td>Doctor</td><td>CVS</td><td class="pathname">webtools/doctor</td><td>MPL</td></tr>
<tr><td>Graph</td><td>CVS</td><td class="pathname">webtools/graph</td><td>MPL</td></tr>
<tr><td>Hendrix</td><td>CVS</td><td class="pathname">webtools/hendrix</td><td>MPL</td></tr>
<tr><td>Leak-O-Matic</td><td>CVS</td><td class="pathname">webtools/leak-o-matic</td><td>MPL</td></tr>
<tr><td>Litmus</td><td>CVS</td><td class="pathname">webtools/litmus</td><td>MPL</td></tr>
<tr><td>LXR</td><td>CVS</td><td class="pathname">webtools/lxr</td><td>Our fork is unlabelled, but [http://sourceforge.net/projects/lxr the original version] is GPL</td></tr>
<tr><td>MiscStats</td><td>CVS</td><td class="pathname">webtools/miscstats</td><td>MPL</td></tr>
<tr><td>MozBot</td><td>CVS</td><td class="pathname">webtools/mozbot</td><td>MPL</td></tr>
<tr><td>NewsBot</td><td>CVS</td><td class="pathname">webtools/newsbot</td><td>MPL</td></tr>
<tr><td>Party Tool</td><td>CVS</td><td class="pathname">webtools/partytool</td><td>MPL/GPL/LGPL, MIT and The Open Group Test Suite License (for [http://cakephp.org/ CakePHP])</td></tr>
<tr><td>PLIF</td><td>CVS</td><td class="pathname">webtools/plif</td><td>MPL/GPL</td></tr>
<tr><td>Registry</td><td>CVS</td><td class="pathname">webtools/registry</td><td>NPL</td></tr>
<tr><td>Testopia</td><td>CVS</td><td class="pathname">webtools/testopia</td><td>MPL</td></tr>
<tr><td>Tinderbox 1</td><td>CVS</td><td class="pathname">webtools/tinderbox</td><td>NPL</td></tr>
<tr><td>Tinderbox 2</td><td>CVS</td><td class="pathname">webtools/tinderbox2</td><td>MPL</td></tr>
<tr><td>Tinderbox 3</td><td>CVS</td><td class="pathname">webtools/tinderbox3</td><td>MPL</td></tr>
<tr><td>Web Sniffer</td><td>CVS</td><td class="pathname">webtools/web-sniffer</td><td>MPL</td></tr>
<tr><td>webstats</td><td>CVS</td><td class="pathname">webtools/webstats</td><td>MPL</td></tr>
<tr><td>whack-license</td><td>CVS</td><td class="pathname">webtools/whack-license</td><td>MPL/GPL</td></tr>
</table>


<h3>Not Webtools</h3>
You may copy code between files with identical licensing terms, or between files where the target file has a subset of the licenses of the source file (e.g. MPL/LGPL/GPL -> MPL). For any other transfer, consult the licensing team first.


<table border="1">
===Reporting Incompatible Code===
  <tr>
    <th>Software</th>
    <th>Repository</th>
    <th>Directory</th>
    <th>License</th>
  </tr>
 
  <tr>
    <td>[http://www.mozilla.org/projects/cck/ Branding]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">other-licenses/branding</td>
    <td>See the [http://www.mozilla.org/foundation/trademarks/ trademark licensing pages]</td>
  </tr>
  <tr>
    <td>[http://www.mozilla.org/projects/cck/ Client Customization Kit]</td>
    <td>CVS</td>
    <td class="pathname">cck</td>
    <td>Some MPL 1.1 or later, some MPL/GPL/LGPL</td>
  </tr>
  <tr>
    <td>[http://www.mozilla.org/rhino/ Rhino] (JavaScript in Java)</td>
    <td>CVS</td>
    <td class="pathname">js/rhino</td>
    <td>[http://www.mozilla.org/MPL/MPL-1.1.html MPL 1.1] or later/[http://www.gnu.org/licenses/gpl-2.0.html GPL 2.0] or later</td>
  </tr>
</table>


<h2>Third Party Code</h2>
If you happen to find a file in the Mozilla source tree under a license which does not conform to the rules above, please report it to [mailto:licensing@mozilla.org licensing@mozilla.org].


<p>The following is a complete list of directories containing Third Party Code. (See Acceptable Licenses item 4, above.) Some of this code is also Product Code; if so, it will be under a license compatible with the tri-license.</p>
===Checking In Third-Party Code===


<table border="1">
After getting permission from [mailto:licensing@mozilla.org licensing@mozilla.org], a developer checking in third-party code should make sure that:
  <tr>
    <th>Software</th>
    <th>Repository</th>
    <th>Directory</th>
    <th>License</th>
  </tr> 
  <tr>
    <td>[http://www.7-zip.org/ 7-zip]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">other-licenses/7zstub</td>
    <td>LGPL</td>
  </tr>
  <tr>
    <td>[http://library.gnome.org/devel/atk/ ATK]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">other-licenses/atk-1.0</td>
    <td>LGPL</td>
  </tr>
  <tr>
    <td>[http://www.daemonology.net/bsdiff/ bsdiff]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">other-licenses/bsdiff</td>
    <td>BSD Protection License</td>
  </tr>
  <tr>
    <td>[http://www.cairographics.org cairo]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">gfx/cairo/cairo</td>
    <td>[http://www.gnu.org/licenses/lgpl-2.1.html LGPL 2.1]/[http://www.mozilla.org/MPL/MPL-1.0.html MPL 1.0] or later</td>
  </tr>
  <tr>
    <td>[http://www.linux-foundation.org/en/Accessibility/IAccessible2 IAccessible2]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">other-licenses/ia2</td>
    <td>LGPL</td>
  </tr>
  <tr>
    <td>[http://www.linux-foundation.org/en/Accessibility/IAccessible2 jemalloc]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">memory/jemalloc</td>
    <td>[http://mxr.mozilla.org/mozilla/source/memory/jemalloc/jemalloc.c BSD-like License]</td>
  </tr>
  <tr>
    <td>[http://www.artofcode.com/libart.html libart]</td>
    <td>CVS</td>
    <td class="pathname">other-licenses/libart_lgpl</td>
    <td>LGPL</td>
  </tr>  <tr>
    <td>[http://sourceforge.net/projects/freeassociation/ libical]</td>
    <td>CVS</td>
    <td class="pathname">calendar/libical</td>
    <td>[http://www.gnu.org/licenses/lgpl-2.1.html LGPL 2.1]/[http://www.mozilla.org/MPL/MPL-1.0.html MPL 1.0] or later</td>
  </tr>
  <tr>
    <td>[http://www.ijg.org/ libjpeg]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">jpeg</td>
    <td>JPEG License</td>
  </tr>
  <tr>
    <td>[http://www.cairographics.org/ libpixman]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">gfx/cairo/libpixman</td>
    <td>BSD-like License</td>
  </tr>
  <tr>
    <td>[http://www.libpng.org/pub/png/libpng.html libpng]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">modules/libimg/png</td>
    <td>PNG License</td>
  </tr>
  <tr>
    <td>[http://www.sqlite.org/ sqlite]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">db/sqlite3</td>
    <td>[http://www.sqlite.org/copyright.html Public Domain]</td>
  </tr>
  <tr>
    <td>[http://www.zlib.net/ zlib]</td>
    <td>CVS, Mercurial</td>
    <td class="pathname">modules/zlib</td>
    <td>ZLib License</td>
  </tr>
</table>


<h2>Copying Code</h2>
* The checkin comment contains information (or references to information) sufficient to identify the author of the Code, including at minimum an email address, and ideally the URL of a public source repository where the code was obtained from.


<p>You may copy code between files with identical licensing terms, or between files where the target file has a subset of the licenses of the source file (e.g. MPL/LGPL/GPL -> MPL). For any other transfer, consult the licensing team first.</p>
* <tt>about:license</tt> is updated to refer to the new code (and new license, if any). Please file a bug in the [https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&component=Licensing Licensing] component.


<hr>
===Website Licensing===


<p>This concludes the list of licenses acceptable to mozilla.org
If you are creating a new Mozilla-affiliated website, please check with [mailto:licensing@mozilla.org licensing@mozilla.org] to make sure your licensing choice, trademark use, terms of service, privacy policy and other legal terms are appropriate.
for use with Mozilla code. If you happen to find a file in the
Mozilla source tree under a license which does not conform to the pattern above,
please report it to
[mailto:licensing@mozilla.org licensing@mozilla.org].</p>

Revision as of 14:34, 25 October 2010

Draft-template-image.png THIS PAGE IS A WORKING DRAFT Pencil-emoji U270F-gray.png
The page may be difficult to navigate, and some information on its subject might be incomplete and/or evolving rapidly.
If you have any questions or ideas, please add them as a new topic on the discussion page.

Version 2.1 draft 1

Introduction

Mozilla has created this policy to govern which licenses are used for source files stored in our code repositories. Developers with check-in privileges to the mozilla.org code repositories must comply with this policy, as agreed to in the Committer's Agreement, unless specifically advised otherwise in writing by Mozilla.

The following is a brief summary of the Mozilla license policy:

  • Newly-added code of a given type must be licensed under terms acceptable for that type of code - typically the Mozilla tri-license.
  • New files in, or modifications to, an existing, consistently-licensed area of code should be under the same license as the existing code.
  • You must consult the licensing team before importing third-party code which is not under the tri-license.

For the complete license policy see the following sections. If you are trying to work out how to license some code, or what to do about code you want to import into the Mozilla repositories, there is a flowchart of the policy to help you.

Types of Code

code-diagram.png

Mozilla Code is code in our repositories which originated with the Mozilla Project.

Third Party Code is code in our repositories which did not originate with the Mozilla Project.

Product Code means all files any part of which are included in nightly binaries of the Mozilla family of Internet clients - Firefox, Thunderbird, SeaMonkey and Camino. Note that this definition excludes the code of tools used merely to build these products, such as system libraries. Code may be both Product Code and Third Party Code.

Support Code is code in our repositories which is Mozilla Code (i.e., it originated with the Mozilla Project) but is not Product Code. Examples include Bugzilla and Bonsai.

Please see the accompanying diagram for the relationship between the four definitions.

Licensing of Mozilla Code

Mozilla Code is code in our repositories which originated with the Mozilla Project, i.e., which was created by a developer who has signed the Committer's Agreement, and who created the code with the intent that it be maintained and distributed by the Mozilla Project.

Mozilla Code that is Product Code must be licensed under the tri-license, unless the code is an addition to Third Party Code that has already been imported to a repository. For details on licensing of Third Party Code, see the appropriate section below.

Mozilla Code that is Support Code should also be licensed under the tri-license, unless it falls into one of the two following exceptions:

Trivial Support Code Exception

Trivial Mozilla-originated Support Code, such as testcases or snippets of code used in documentation, should be put in the public domain in order to facilitate re-use.

To put a piece of trivial Support Code in the public domain, apply the Creative Commons Public Domain Dedication by using the following boilerplate:

Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/

Note that, for historical reasons, some trivial Support Code, such as old code samples in developer.mozilla.org, may be under the MIT license.

Case-by-Case Support Code Exceptions

Some existing non-trivial Support Code is made available under licenses other than the tri-license or Public Domain licenses. If you are adding new code, or making modifications to existing code, in one of these projects, you should use the license which is already associated with these projects- typically MPL, NPL, or MPL/GPL.

Non-trivial Support Code not listed in that page must be under the tri-license. New exceptions for new Support Code may be requested from licensing@mozilla.org, but are not usually granted.

Licensing of Third Party Code

Third Party Code is code in our repositories which did not originate with the Mozilla Project. It is usually, but not always, under its own specific license.

Third Party Code Already in a Repository

When modifying or adding to Third Party Code that has already been checked into a mozilla.org repository by someone else, you should use the license pertaining to that code. The only exception is if you are adding Mozilla-specific files that have no reason to go upstream, such as build system files. In that case, you should use the Mozilla tri-license.

Importing New Third Party Code

If you are planning to import new Third Party Code into a Mozilla repository or a Mozilla product, always consult licensing@mozilla.org first. They can then check whether the license is compatible - even simple-looking licenses can have twists in them - and make sure our requirements are met.

Non-Product Third Party Code must be under an Open Source Definition-compliant license.

Product Code that is Third Party Code must be under the tri-license, or a compatible license such as the BSD or MIT licenses. (Apache and LGPL are not compatible.) The purpose of this rule is to make sure that all users of our code can use the complete code under any one of the three licenses; no group is disadvantaged. A complete list of compatible licenses that we currently use code under, and the code they apply to, can be found by opening about:license in the Firefox browser.

Other Information

Using the Tri-License

For the purposes of this document, the "Mozilla tri-license" is the MPL/GPL/LGPL triple license, allowing use of the file under the terms of any one of:

  • The Mozilla Public License, version 1.1 or later (MPL)
  • The GNU General Public License, version 2 or later (GPL)
  • The GNU Lesser General Public License, version 2.1 or later (LGPL)

To apply the tri-license to new source files, please don't copy boilerplate from existing files - instead, use the appropriate boilerplate license notice.

Copying Code

You may copy code between files with identical licensing terms, or between files where the target file has a subset of the licenses of the source file (e.g. MPL/LGPL/GPL -> MPL). For any other transfer, consult the licensing team first.

Reporting Incompatible Code

If you happen to find a file in the Mozilla source tree under a license which does not conform to the rules above, please report it to licensing@mozilla.org.

Checking In Third-Party Code

After getting permission from licensing@mozilla.org, a developer checking in third-party code should make sure that:

  • The checkin comment contains information (or references to information) sufficient to identify the author of the Code, including at minimum an email address, and ideally the URL of a public source repository where the code was obtained from.
  • about:license is updated to refer to the new code (and new license, if any). Please file a bug in the Licensing component.

Website Licensing

If you are creating a new Mozilla-affiliated website, please check with licensing@mozilla.org to make sure your licensing choice, trademark use, terms of service, privacy policy and other legal terms are appropriate.