mbstringのLGPLライセンス違反問題に関する見解
はじめに
ここでは、2003年6月末から一部のメーリングリストや掲示板において
話題となったPHPのマルチバイト拡張モジュールmbstringで使用されている
一部のコードの関するLGPL違反問題に関して日本PHPユーザ会の
見解を報告するものです。
なお、本見解は法律的な解釈に基づくものではなく、
本見解により生じる責任を日本PHPユーザ会および関係者が負うことは
ありません。
メーリングリストにおける議論等の結論として、
現在のPHPの配布および使用について
問題はないと思われます。以下に問題の内容と対策について
まとめます。以下の記述には、概要を最初に示し、
経緯の詳細を続いて示します。
問題の内容と対策(概要)
-
PHPのマルチバイト文字用拡張モジュールmbstringには、
LGPLライセンスとして配布されているmbfilterおよびmbregexのコードが
含まれています。一方、PHPはBSDライセンスライクなPHPライセンスのもとに
配布されています。
-
mbfilterに関しては元々の実装に種々の機能追加が行われ、本来の実装との解
離しているのにもかかわらず、独立したライブラリとしての対応する実装が存在
しないことがLGPL上の問題と指摘されました。
このため、現状のmbfilterの実装を独立したラ
イブラリ(libmbfl)としてリリースしたものをPHPにバンドルする形態に移行する
こととします。
(現在、パッチ形式で実装を配布・テスト中。)
-
現状の版の配布・使用については、上記形態への移行期間における現状の形態での配布
について現在の著作権者(アクセンス・テクノロジー社)の了解が得られているので
問題はありません。これには、間もなくリリース予定のPHP 4.3.3も含まれます。
-
mbregexに関してもLGPLですが、外部実装(Ruby)が存在し、本来の機能を損
なう変更やPHP独自の機能追加もないことから、ライセンス上の問題は
ないと思われます。
ただし、より高機能でかつPHPライセンスとの親和性が高い実装(鬼車)へ互換性や
機能確認を行いつつ、移行することとします。
詳細
経緯
PHPは、Webアプリケーション構築用のスクリプト言語として
世界的に広く使用されており、日本国内においても多くのユーザー
が存在します。
PHPは、シングルバイト文字圏の開発者により開発されたため、
日本語や中国語、韓国語といったマルチバイト文字を使うユーザ
においては、マルチバイト文字を扱う機能が望まれていました。
このため、
「PHP3国際化プロジェクト」により、PHP3の頃に
文字コード変換を扱う機能が追加され、
国際化版PHP3として配布されていました。
この際、日本語文字コードの変換エンジンとして
株式会社ハッピーサイズがライセンスを保有するコード(ここではmbfilterと
呼びます)が使用されました。また、マルチバイト文字対応正規表現機能
に関しては、スクリプト言語Rubyのコードが使用されました。
PHP3はGPLライセンスのもとに配布されていたことと、開発者の意図に
合致した経緯もあり、当時の開発者はmbfilterを含む国際化機能の
コードに関するライセンスとしてGPLを選択しました。
この課程で、UTF-8に関する拡張等多くの機能が追加されました。
PHP4の開発に伴い、塚田氏によりPHP4用マルチバイト文字
拡張モジュールjstringが開発され、独立した拡張モジュールとして
GPLライセンスのもとに配布されました。
PHP4と共に配布されることの利便性や開発の効率化を考慮し、
2001年4月末にjstringはmbstringとしてPHP4のソースコードに
マージされ、PHP 4.0.6としてリリースされました。
この際、GPLライセンスはPHP4で採用された
PHPライセンス(BSDライセンスがベース)と互換性がないため、
著作権者の了解を得て、
PHPと依存するPHPとのインターフェイス部分はPHPライセンスに、
ライブラリとして
汎用性があるコード(mbfilter)はLGPLライセンスに変更されました。
その後、同じく塚田氏が作成/配布されていたマルチバイト
正規表現用拡張モジュールmbregexもPHP本体のソースコードに
マージされました。
この際も、
PHPと依存するPHPとのインターフェイス部分はPHPライセンスに、
ライブラリとして汎用性があるコード(mbregex)はLGPLライセンスとしました。
PHP4のソースコードにマージ後、PHPの開発者により、
mbstringに対する機能拡張や不具合の修正が行われました。
このうち、一部の変更はmbfilterやmbregexの機能を
拡張したり、不具合を修正するものでした。
変更の例としては、mbfilterがサポートする文字コードに
中国語や韓国語、ロシア語のサポートを追加したり、
ZTSモード(PHPのマルチスレッドモード)に対応したりといったものがありました。
LGPLライセンスは、GPL/LGPLライセンス以外のライセンスのもとで
配布されるソフトウエアとともに配布することを認めています。
しかし、その配布に際していくつかの制約条件がついており、
現在のPHPにおける配布形態はその一部に違反するのではとの指摘が
2002年12月〜2003年6月に行われました。
この指摘を受け、主に国内のPHP開発用メーリングリスト(php-dev@php.gr.jp)に
おいて、議論が行われました。
見解
上記の議論の結果、LGPLのライセンス条項を調査し、
以下のような見解をまとめました。
-
PHPのマルチバイト拡張mbstringで使われているmbregexおよびmbfilterは
LGPL ライセンスのもとでPHPとともに配布されている。
-
LGPLは、そのライブラリに改変を加えない場合、他のライセンスをもつ
ソフトウエアにバンドルした形での再配布を許可している。
-
LGPLにおいては、ライブラリに改変を加えて配布する場合には、
以下の要件が求められています。
-
改変されたもの自体がソフトウエアライブラリであること
-
改変の有無と日時を明示すること
-
LGPLに基づく利用を第三者に無償で許可すること
-
組み込まれるアプリケーションの関数やデータテーブルを
参照している場合は、それを参照しない場合でも本来の機能が
動作すること
(LGPLに関しては、下記URL参照)
http://www.opensource.gr.jp/lesser/lgpl.ja.html
-
しかし、mbregexおよびmbfilterは、PHPにマージされた後、問題点の修正や
機能拡張のためにソースコードの改変が行われている状態となっています。
-
この課程で、mbfilterに関しては長年に渡りPHP用に種々の拡張が
行われて来たため、原型となる独立したライブラリの実装が存在しない
という問題があり、
この部分がLGPLの要件に抵触する可能性があります。
-
mbregexに関して原型はRubyの実装ですが、PHPへのマージ後にZTSへの対応や
種々の問題の修正が行われており、原型のライブラリ実装として
Rubyにバンドルされているものがあり、
現在のPHPとともに配布されているコードも
マクロZTSを定義しなければ本来の機能は維持されているため、上記、
c項の要件は満たしていると思われます。
-
上記ソースコードの改変の明示については、
PHPのソースコードとともに配布されるファイル(ChangeLogおよび
NEWS)に日付や変更の概要が記載されており、
PHPのソースコードを配布されたものが容易に知ることができることから
問題はないものと思われます。
対策
上記議論の課程でmbfilterの現在の著作権者である
アクセンス・テクノロジー社の意志が示されたことから、
この部分を反映することを最優先に、
また、PHPユーザの利便性、限定されたPHPの開発リソースの有効活用を
考慮して、以下の案を作成しました。
-
現状のmbfilterの実装を独立したライブラリ(libmbfl)としてリリー
スしたものをPHPにバンドルする形態に移行することとします。
(現在、パッチ形式での実装を配布・テスト中。)
-
libmbflの開発・配布は、sourceforge.jp
のphp-i18nプロジェクトにおいて行われます。
-
mbregexに関してはライセンス上の明確な問題は存在しないと考えられますが、
より高機能でかつPHPライセンスとの親和性が高い実装(鬼車)へ移行します。
-
上記の変更に際しては、現状のバージョンとの互換性、機能の整合性、
安定性を重視します。
スケジュールについては、以下とします。
-
PHP4マージ後の追加コードも含め、mbfilterの外部ライブラリ化と
LGPLでの配布について著作権者の了解をとる。(実施済み)
-
PHP5について、開発版ソースコード(CVS)にて作業し、上記変更を行う。(実施済み)
-
PHP4については、PHP 4.3.3リリース後、開発版ソースコード(CVS)
にて作業し、上記変更を行う。(2003年8月中を予定)
-
互換性および機能の実現性については、メーリングリスト
等を通じて、開発版の広範なテストを実施、安定したリリースへの
協力を要請する。
-
現状、ハッピーサイズ社と古いままとなっているソースコード中の
ライセンスホルダー名を現在のライセンスホルダーである
アクセンス・テクノロジー社に更新する。
現在の形態でのバージョンの配布・使用に関して
まもなくリリースされるPHP 4.3.3を含み、現状の版の配布および使用について
は、上記形態への移行期間における現状の形態での配布
について著作権者(アクセンス・テクノロジー社)の了解が得られているので
問題はありません。