Mozilla Public License

Mozilla Public License (MPL) は、Mozilla Foundationによって作成されたフリーソフトウェアライセンス、オープンソースライセンスである。

概要 
MPLは修正BSDライセンスとGNU General Public License (GPL) のハイブリッドと言えるライセンスで、プロプライエタリとオープンソースの間のバランスを模索したものとなっている

初期の1.0から1.1、2.0と2度の改訂を経ており、2012年1月に発表された2.0では、ライセンス文の簡素化、他ライセンスとの相互運用性の向上、特許保護を盛り込むことによるコード貢献者の権利侵害からの保護などが行われている。

MPL 2.0はMozilla Firefox、Mozilla ThunderbirdをはじめとするMozillaソフトウェアで利用されている。また、Adobe FlexやLibreOffice 4.0以降（LGPL 3以降とのデュアルライセンス）にも利用されている。以前のバージョンであるMPL 1.1は、Common Development and Distribution Licenseのようなソフトウェア企業による派生ライセンスに広く用いられている。

利用条件 
MPLは、フリーソフトウェア財団 (FSF) による「フリーソフトウェアライセンス」、Open Source Initiative (OSI) による「オープンソースライセンス」の両方の承認を受けている。MPLでライセンスされたソースコードは、他のライセンスで保護されたファイルやプロプライエタリなファイルと組み合わせることが可能であるが、MPLで保護されたコードは永続的にMPLでライセンスされ続け、ソースコードの状態で利用可能であることが求められる。これは、MIT LicenseやBSDライセンスにおいて派生物をプロプライエタリにすることが可能なことや、GPLが派生物すべてをGPLでライセンスすることを求めていることと比較した時のMPLの大きな違いである。プロプライエタリなモジュールはプロプライエタリなままで、それ以外のコアモジュールはオープンソースを維持できることから、MPLはソフトウェア企業、オープンソースコミュニティ双方での利用が容易となっている。

特許を含まない場合、MPLでライセンスされたコードの利用、改変、再頒布を自由に行うことができる。特許で保護されたコードの場合には、利用、譲渡、販売は可能であるが改変は特別な許可がない限り認められない。また、MPLでは被許諾者に対して貢献者の商標に関する権利は何ら付与されない。

MPLの利用条件を順守するために、被許諾者には主に再頒布に関する責任が要求される。被許諾者は、MPLで保護されるソースコードすべてに対するアクセスあるいは提供手段を確保する必要がある。これは、成果物が実行ファイルであったりプロプライエタリなコードと組み合わせたものである場合も同様である。例外は、GNU General Public License (GPL)、GNU Lesser General Public License (LGPL) あるいは Affero GPL (AGPL) でライセンスされたコードと組み合わせた場合であり、この場合にはMPLの代わりにより厳格なGPLベースのライセンスを選択することが可能である。

歴史

MPL 1.0 
ネットスケープコミュニケーションズでは、自社製品であるNetscapeシリーズのソースコードを保護するためにNetscape Public License (NPL) と呼ばれるライセンスを利用していた。NPLには、他者から提供されたコードであってもネットスケープの一存でプロプライエタリに変更できるという条項が含まれており、これはオープンソースコミュニティからの批判を受けることとなった。ネットスケープの弁護士であったは、NPLに代わるコピーレフトの理念に基づいた新たなライセンスを用意した。これがMPL 1.0であり、1998年に発表された。NPLでライセンスされていたNetscapeのソースコードはすべてMPLで再ライセンスされた。これにより、Netscapeシリーズをオープンソースで開発することで、競合相手であるマイクロソフトのInternet Explorerとの競争を有利に進めることをネットスケープは狙っていた。

MPL 1.1 
MPL 1.0の発表から1年もしないうちに、貢献者からのコメントを受け付けた公開プロセスを経てベーカーとMozilla OrganizationはMPL 1.0にいくつかの修正を加えたMPL 1.1を発表した。この改訂では、特許の扱いに関する条件を明確にし、マルチライセンスを許容するものであった。これにより、GPLやLGPLなどより厳格なライセンスを好む開発者からの貢献が期待できることとなった。

当初はNPLでライセンスされたコードを再ライセンスすることを意図していたMPLであるが、オープンソースコミュニティで広く用いられるようになり、MPL 1.1はFSFによるフリーソフトウェアライセンスおよびOSIによるオープンソースライセンスの承認を受けた。

MPL 1.1はソフトウェア企業などが独自のライセンスを作成する際の雛形とされることが多く、また、その構造、法的な精密さ、明確な利用条件などは、のちのGPL 3などにも強い影響を与えた。

MPL 2.0 
MPL 1.1発表から10年以上が経過した2010年、MPL 2.0のための公開プロセスが開始された。21か月に及ぶ作業により、MPLは簡素化され理解しやすくなり、GPLやApache Licenseとの互換性が向上し、特許保護を盛り込むことによるコード貢献者の権利侵害からの保護が加えられた。

MPL 1.1に引き続き、MPL 2.0はFSFおよびOSIの承認を受けている。

他のライセンスとの互換性 
強いコピーレフトライセンスとは違い、MPLでライセンスされたコードはそれ自体がMPLで保護されている限りは他のライセンス下のファイルと組み合わせることが可能である (MPL Section 3.3)。MPLでは、ソースコードのファイルごとにMPL下のコードと他ライセンス下のコードを分けて扱っており、ソースコード全体をMPLでライセンスする必要はない。

MPL 1.1では、GPLと互換性を保つことができない制限が存在した（これがMPL 2.0改訂の動機の一つである）。MPL 1.1には二次ライセンスに関する規定が存在していたが (MPL 1.1 Section 13)、MPL 1.1下のコードとGPL下のコードを法的にリンクすることはできず、これがFSFがMPL 1.1の使用を推奨しない理由となっていた。これらの理由により、FirefoxをはじめとするMozillaソフトウェアは、MPL 1.1単独ではなくMPL 1.1/GPL 2.0/LGPL 2.1のトリプルライセンスで提供されていた。

MPL 2.0は、Apache Licenseおよび特別な留保がない限り「GNU General Public License (GPL) 2.0、GNU Lesser General Public License (LPGL) 2.1、Affero GPL (AGPL) 3.0およびそれ以降」と互換性がある。MPL 1.1時代にトリプルライセンスで提供されていたMozillaソフトウェアはMPL 2.0単独でのライセンスに順次切り替えられているが、Mozilla Application Suiteなど古いMozillaソフトウェアは現在でもトリプルライセンスで提供されている。

MPLを基としたライセンス 
AROS Public License
Celtx Public License
Common Development and Distribution License
Common Public Attribution License
Erlang Public License (based on MPL v1.0)
Firebird Initial Developer's Public License (based on MPL v1.1)
gSOAP Public License
OpenMRS Public License
OpenELIS Public License
SugarCRM Public License
Sun Public License
Yahoo! Public License

脚注

外部リンク 

Mozilla Public License Version 2.0
Mozilla Public License Version 1.1
Mozilla Public License Version 1.0
Mozilla Public License, version 1.1 - Mozilla Japanによる参考訳
Mozillaパブリック・ライセンス 2.0  (MPL-2.0) (GitHub)Open Source Group Japanによる参考訳
Mozillaパブリック・ライセンス1.1（MPL 1.1） (GitHub)Open Source Group Japanによる参考訳
 Mozillaパブリック・ライセンス バージョン1.0 (GitHub)- Open Source Group Japanによる参考訳

Public License
オープンソースライセンス
コピーレフト