MPL (Mozilla Public License)(エムピーエル)
英語表記: MPL (Mozilla Public License)
概要
MPL(Mozilla Public License)は、主にWebブラウザFirefoxの開発元であるMozilla Foundationによって策定されたオープンソースライセンスです。私たちが議論している「ライセンス形態(GPL, MIT, Apache, 商用ライセンス)」の分類において、「GPL系ライセンス」に属しますが、GPL(GNU General Public License)ほど強い制約を持たない、柔軟性の高いライセンスとして知られています。その最大の特徴は、「ファイル単位のコピーレフト」を採用している点にあり、商用ソフトウェアとの連携を容易にしながらも、オープンソースの精神であるコードの改善と公開を保証する、非常にバランスの取れたライセンス形態です。
詳細解説
MPLは、分類上「GPL系ライセンス」の中に位置づけられますが、その運用方法において、厳格なGPLと緩やかなMIT/BSD系ライセンスの中間に位置する、独自の立ち位置を確立しています。この中間的な位置づけこそが、MPLを「LGPL/MPL」というグループで扱う理由となっています。
コピーレフトの適用範囲:ファイル単位の原則
GPLがソフトウェア全体にコピーレフトの原則を適用するのに対し、MPLは「ファイル単位」でコピーレフトを適用します。これはMPLの仕組みを理解する上で最も重要な点です。
具体的には、MPLのライセンスが適用されているソースコードファイルに対して、開発者が修正や改良を加えた場合、その修正されたファイル自体はMPLの元で公開しなければなりません。このルールにより、コミュニティは常に改善されたコードの恩恵を受け続けることができます。
しかし、そのMPLファイルと結合(リンク)して動作する、別のファイルで構成された独自開発のコード(プロプライエタリな部分)については、ソースコードの公開義務がありません。企業は、自社の秘匿性の高い独自技術を含むコードを非公開のまま維持しつつ、MPLの優れたオープンソースコンポーネントを利用できるのです。
商業利用を促進する設計思想
MozillaがMPLを策定した背景には、オープンソースソフトウェアの普及を加速させる目的がありました。GPLの厳格さ(利用すると全てを公開しなければならない)は、多くの商用ソフトウェアベンダーにとって参入障壁となりがちです。
MPLは、オープンソースのコードベース(例:Firefoxのエンジン)を多くの企業に使ってもらい、市場での競争力を高めるために設計されました。この柔軟性があるからこそ、企業は安心してMPLのコードを採用し、もしバグ修正や機能改善を行ったら、その改善部分だけをコミュニティに還元すれば良いという明確なルールが提供されます。
この設計思想は、私たちが現在注目している「ライセンス形態」の分類において、MPLが単なるGPLの派生ではなく、商用利用とオープンソースの調和を目指す「LGPL/MPL」という独自のカテゴリーを形成していることを明確に示しています。これは、オープンソースの「共有」とビジネスの「保護」という二つの価値観を見事に両立させた、非常に洗練されたアプローチだと私は感心しています。
具体例・活用シーン
MPLは、その発祥の経緯から、当然ながらMozilla製品群(Firefox、Thunderbirdなど)の基盤技術として広く利用されています。しかし、その柔軟性ゆえに、他の多くのプロジェクトや企業でも採用されています。
具体的な活用シーン
- 商用製品への組み込み:
あるIT企業が、自社のサービスに組み込むために、MPLで公開されている高性能なXMLパーサー(データ解析機能)を利用するとします。企業がこのパーサーに独自のカスタマイズを施した場合、そのカスタマイズしたパーサーファイルのみをMPLとして公開し、パーサーを呼び出す自社のサービスロジック(核となるビジネスコード)は非公開のまま維持できます。 - 独自拡張の開発:
オープンソースプロジェクトからフォーク(派生)して、特定の市場向けに特化した製品を開発する際、MPLは理想的な選択肢となります。共通の基盤技術はコミュニティと共有しつつ、付加価値となる独自の機能だけをプロプライエタリとして開発することで、競争力を確保できます。
初心者向けの比喩:ハイブリッド方式のレシピ公開
MPLの「ファイル単位のコピーレフト」の考え方を、料理のレシピ公開に例えてみましょう。
あなたが新しいラーメン屋を開店し、インターネット上に公開されている「スープの基本レシピ」(MPLのコード)を利用することにしました。
GPLのルール(厳格な公開義務): スープのレシピを少しでも使って新しいラーメンを作ったら、麺、具材、タレ、調理手順など、ラーメン全体に関する**全てのレシピ
