We have carefully reviewed the existing OSI approved licenses and found none of them to meet our needs, and thus have reluctantly drafted a new open source license based on the Mozilla Public License, version 1.1 (“MPL”). We do appreciate the issue of license proliferation, however, and have worked hard to make the Common Development and Distribution License (“CDDL”) as reusable as possible. Additionally, we have attempted to address the problems we perceived in existing open source licenses that led us to conclude that reusing those existing licenses was impractical.
We chose to use the MPL as a base, since it already had a number of attributes we were looking for in a license:
The MPL came closest to meeting our needs. We felt that it had a number of issues, though, which prevented us from simply using that license or one of its variants.
Once we embarked down the path of creating a new license, we focused on certain high level goals. We wished to create a license that was simpler, less burdensome for contributors, clear and consistent in the use of terms and language, and that was as reusable and general as possible. In addition, we made a number of specific improvements, a few of which are highlighted here.
What follows is a detailed description of changes from the MPL. Terms defined in the CDDL are used whenever possible; these are indicated with capital letters. All section references are to the CDDL unless otherwise indicated.
We made a number of general changes, which are propagated throughout the license. These include:
Sections that have not changed (except for numbering) are not listed.
Name: changed to a generic name to allow (and encourage) use of the license by groups other than Sun.
Removed 1.0.1 of the MPL (Commercial Use), as mentioned under “General Changes.”
1.1. Contributor: Clarified that an individual can be a Contributor.
1.2. Contributor Version: Added an “if any” clause, to clarify that the Contributor Version may be derived from the Original Software without any prior Modifications by other Contributors. Also changed “Code” to “Software,” as mentioned under General Changes.
1.3. Covered Software: Clarified wording regarding file-based approach to Modifications and Covered Software, as mentioned under General Changes.
Section 1.4 of the MPL (Electronic Distribution Mechanism) was deleted; it is no longer needed due to simplified language regarding how source code for modifications must be made available. See 3.1 (Availability of Source Code).
1.4. Executable: Changed “Code” to “Software”, as mentioned under “General Changes.”
1.5. Initial Developer: Exhibit A notice has been removed, so the definition of Initial Developer had to change as a result. The new definition is based on the individual or entity that initially releases the Original Software.
1.6. Larger Work: Changed “Code” to “Software,” as mentioned under “General Changes.”
1.9. Modifications: Clarification of files-based approach, as mentioned in “General Changes.” Specifically, removed “substance or structure of” phrase to avoid confusion, because it suggests that the definition of Modifications might go beyond modified files to something more.
Changed “Code” to “Software,” as mentioned under “General Changes.”
Added 1.9(c), which takes into account the common practice of contributing new source files to an open source distribution.
1.10. Original Software: Removed Exhibit A references, and extended to cover both Source Code and Executables. Also changed “Code” to “Software,” as mentioned under “General Changes.”
1.12. Source Code: Simplified the definition; the details regarding scripts, interface definition files, etc., didn't seem necessary and are not specified in other common licenses (e.g., CPL and OSL).
1.13. You: Since Section 4.2 (6.2 in the MPL) has been changed to allow the Initial Developer for a particular project to specify use of a specific version of the License (excluding future versions of the License), the “future versions” clause was removed here.
2. License Grants: Changed title to make it clear that the license grant is for Executables as well as Source Code. In the MPL, it was unclear whether the license grant covered Executables.
2.1. Initial Developer Grant: Clarified language to make sure that those using the license grant to modify and redistribute software under this license would also be bound to make the Source Code available. Moved “subject to third party intellectual property claims” so that the structure of the license grant in 2.1 was the same as in 2.2.
2.1(a). Changed “Code” to “Software,” as mentioned under “General Changes.”
2.1(b). Changed “Code” to “Software,” as mentioned under “General Changes.”
2.1(c). Added “otherwise makes available” as mentioned in General Changes. Changed “Code” to “Software,” as mentioned under “General Changes.”
2.1(d). The “separate from the Original Code” clause is ambiguous, and was felt by some to be inconsistent with other aspects of the license grant and definitions that specify “portions thereof”. In order to avoid confusion, we chose to simply eliminate this clause. Also changed “Code” to “Software,” as mentioned under “General Changes.”
2.2. Contributor Grant: As in 2.1.
2.2(a) As in 2.1(a).
2.2(c) Removed “Commercial Use”. Replaced with “distributes or otherwise makes available”; this matches the wording in 2.1(c). See “General Changes” for a more detailed explanation.
2.2(d) As in 2.1(d).
3. Distribution Obligations: This section was substantially reorganized, including some simplifications and deletions. See below for details.
3.1. Availability of Source Code: This section is based on Sections 3.1 and 3.2 of the MPL. We tried to merge the various obligations about Source Code into one section for clarity. Aside from rewording due to the restructuring of the section, the primary change is to the requirements around Source Code availability. Since access to Source Code is a critical requirement for any open source community, we felt that it was important to make it easy for community members to get access to the Source Code in a usable form. The MPL requires that those making (and distributing) Modifications need only make the source for those Modifications available, which might result in the need to assemble the source changes from a number of different contributors to get a source base that matches a particular distribution. Instead, we chose to require that anyone distributing Covered Software under this license make the Source Code available for all Covered Software they are distributing (rather than just the Source Code for their Modifications). Note that if someone is just distributing a component of the Covered Software, only the Source Code for that component needs to be made available.
In addition, the specific mechanism and timing requirements for making Source Code available and references to “Electronic Distribution Mechanisms” were removed and replaced with notions of “reasonable” and “medium customarily used for software exchange.”
We also removed the reference to the “future version of the License” since Section 4.2 of CDDL (Effect of New Versions) is different from Section 6.2 of MPL (Effect of New Versions). See “General Changes” for a more detailed explanation.
3.2. Modifications: This section is based on Sections 3.1 and 3.4(c) of the MPL. The required notices in the MPL regarding third party claims and patents (formerly in MPL Section 3.4(a) and 3.4(b)) have been eliminated; they seemed overly burdensome and likely to prevent wider acceptance of the license by by the community. Additionally, none of the other major open source licenses (e.g., GPL, BSD, CPL, OSL) require such disclosures.
3.3. Required Notices: This section is based on Sections 3.3 and 3.5 of the MPL, though the form by which a Contributor identifies Modifications is no longer specified. References to Exhibit A were also removed. This was done because the requirements of the MPL seemed overly specific and burdensome; even the Mozilla community doesn't seem to consistently adhere to this practice. Since failure to follow requirements of the license can have significant legal repercussions, it seemed best to be pragmatic and leave the details of how notice is provided to the community and its developers. We note that our requirement is similar to that of other open source licenses (e.g., CPL, OSL).
A requirement that you “may not remove or alter any copyright, patent or trademark notice contained within ...” was also added; this matches similar language in the OSL.
3.4. Application of Additional Terms: This section is from the next to last sentence of MPL Section 3.1 (“Application of License”) combined with the latter half of MPL Section 3.5 (“Required Notices”.) We merged these two sections as part of the overall reorganization of Section 3, in an attempt to simplify and group things more coherently. We also added “Covered Software” to clarify that the obligations related to the Source Code of the Covered Software. Also fixed a typo present in the MPL.
3.5. Distribution of Executable Versions: This section is from MPL Section 3.6 (“Distribution of Executable Versions”.) We removed the redundancies related to the required notices. Also, “Code” was replaced with “Software” (as mentioned under General Changes), and the reference to MPL Section 3.2 and its specific required notices was also removed.
3.6. Larger Works: Replaced “Code” with “Software,” as mentioned in “General Changes.”
Sections 4 and 5 of the MPL (“Inability to Comply Due to Statute or Regulation” and “Application of this License”) were seen as unnecessary or redundant, and have been removed from the CDDL.
4.1. New Versions (of the License): Added concept of a license steward, in order to make the license reusable by others.
4.2. Effect of New Versions: The MPL's option of allowing Contributors to use new versions of a license, while often quite useful (as it makes it easy to improve the license without relicensing all covered code), can cause problems when the Initial Developer is not also the license steward because the license steward could change the terms of the license in ways that are not compatible with the community's (and the Initial Developer's) values and objectives.
The approach we have taken is from the GPL; the CDDL allows an Initial Developer to decide whether they wish to license their Original Software solely under a specific license version, or allow the use of a later version of the same license as well. This ensures that other communities can use the license.
4.3. Modified Versions: Retitled this subsection (in MPL, Section 6.3 was called “Derivative Works”) to clarify that this is about modifications to the license, not the code. Also simplified the requirements. While we do not want to contribute to a proliferation of open source licenses, we want other businesses and communities to be able to use this license as the basis for future licenses if industry or business needs warrant.
5. Disclaimer of Warranty: Replaced “Code” with “Software,” as mentioned in “General Changes.”
6.1. Removed the sublicense statement, since it was redundant with a similar statement in 6.4.
6.2. Changed trigger from initiation of litigation to assertion of a patent infringement claim, for clarity. Also, created an inline definition of Participant Software to account for the fact that the claim might be against either a Contributor Version or against the Original Software and used this definition throughout the section. Clarified a potential ambiguity by adding “directly or indirectly” on line 6 in the first sentence, so that if your rights from this license are terminated due to your assertion of a patent infringement claim, you cannot reacquire those same rights indirectly. Removed the royalty provision, which was seen as confusing and unnecessary. Broadened the penalty to terminate rights from any Contributor (and the Initial Developer), not just the Participant.
We removed MPL's 8.2(b), which revoked license rights if patent claims are made against any product of a Participant, not just code released under this license. We're trying to build a community of diverse contributors, large and small, including commercial contributors, and felt that this section would be a hindrance to commercial adoption. However, we believe that “patent peace” has an important role to play in open source licenses, which is why we have strengthened the provisions in 6.2(a) and 6.3.
Removed MPL's 8.3, since this no longer made sense after removal of the royalty provision in 6.2.
6.3. As in 6.2(a), clarified a potential ambiguity so that if your rights from this license are terminated due to assertion of a patent infringement claim, you cannot reacquire those same rights from a distributor. Removed the parenthetical “(excluding distributors and resellers)”, which was seen as confusing and unnecessary.
7. LIMITATION OF LIABILITY: Changed “Code” to “Software,” as mentioned in “General Changes.” Also added “lost profits” as a clarification to protect Contributors and other licensees.
8. U.S. GOVERNMENT END USERS: Updated to reflect the current U.S. Government regulations and to avoid any ambiguity regarding the application of any other regulations. Also changed “Code” to “Software,” as mentioned under “General Changes.”
9. MISCELLANEOUS: To make the license more general, we removed the requirement that the License be governed by California law provisions, and we removed the restriction that litigation be subject to the jurisdiction of the Federal Courts of the Northern District of California. Rather, choice of law, venue and jurisdiction can now be specified in a notice in the Original Software. Added last sentence to clarify the party responsible for complying with export control obligations.
Deleted Section 13 of the MPL because it was confusing and unnecessary.
Exhibit A from the MPL was removed, since 3.3 no longer requires a specific format for the notice of modifications.