[PHP-dev 845]mbfilter/mbregexのライセンス問題に関するまとめ

Rui Hirokawa rui_hirokawa @ ybb.ne.jp
2003年 8月 14日 (木) 21:39:28 JST


廣川です。

遅くなりましたが、
mbfilterおよびmbregexのライセンス上の問題に関して、
以下にまとめます。

問題の要点:

a. PHPのマルチバイト拡張mbstringで使われているmbregexおよびmbfilterは
  LGPL ライセンスのもとでPHPとともに配布されている。
b. LGPLは、そのライブラリに改変を加えない場合、他のライセンスをもつ
  ソフトウエアにバンドルした形での再配布を許可している。
c. LGPLにおいては、ライブラリに改変を加えて配布する場合には、
  改変されたもの自体がソフトウエアライブラリであること、
  改変の有無と日時を明示すること、
  LGPLに基づく利用を第三者に無償で許可すること、
  組み込まれるアプリケーションの関数やデータテーブルを
  参照している場合は、それを参照しない場合でも本来の機能が
  動作すること、が要求されています。
  (LGPLに関しては、下記URL参照)
   http://www.opensource.gr.jp/lesser/lgpl.ja.html

- しかし、mbregexおよびmbfilterは、PHPにマージされた後、問題点の修正や
  機能拡張のためにソースコードの改変が行われている状態となっています。
- この課程で、mbfilterに関しては長年に渡りPHP用に種々の拡張が
  行われて来たため、原型となる独立したライブラリの実装が存在せず、
  また、改変の日時の明示という点で、
  上記、c項の要件を満たしていないという問題があります。
- mbregexに関して原型はRubyの実装ですが、PHPへのマージ後にZTSへの対応や
  種々の問題の修正が行われており、原型のライブラリ実装として
  Rubyにバンドルされているものがあり、現在のPHPとともに配布されているコードも
  マクロZTSを定義しなければ本来の機能は維持されているため、上記、
  c項の一部の要件は満たしていますが、改変の有無の明示等については、
  c項の要件を満たしていないという問題があります。
- 結果的に、現時点での配布形態はLGPLをライセンスの雛型として採用した
  原作者の意図に即していない状態となっていると判断されます。

上記の問題を解消するために
php-dev @ php.gr.jpでの議論を経て以下のような案をまとめました。

I.mbregexに関してはRubyから移植したものであるが、
同じくRuby用に作成されておりライセンス的のもPHPライセンスと
互換で高機能なマルチバイト正規表現ライブラリ「鬼車」に実装を変更する。

II.mbfilterに関しては、著作権者がPHPで今後とも使用されることと
独立したライブラリとして機能することを望んでおられることから、
独立したライブラリ(libmbfl)としてLGPLライセンスのもとで
公開し、これをPHPにバンドルする形で継続して配布する。

上記II項に関しては、現在の著作権者であるアクセンス・テクノロジー社
に以下の依頼を行い了承されました。

1. mbfilterをライブラリ(libmbfl)として作成/公開すること。
2. 現状、ハッピーサイズ社と表示されている著作権者クレジットの
   アクセンス・テクノロジー社への変更。
3. PHPがlibmbflをバンドルする上記の形態で実装を変更し、安定動作
   するまでの間に必要な一定の期間においてリリースされるバージョン
   (具体的には既にリリースプロセスに入っているPHP4.3.3等)において
   現在の形態でmbfilterをPHPと共に配布することに関する許可。

3項については、mbstring/mbfilterをアンバンドルするといった策が
ユーザの利益や著作権者の意志を考えると好ましいことではないことを
了解して頂きました。また、上記2項に関しては、
アクセンス・テクノロジー社の方で作業を行って下さるとのことです。

mbfilterについては、PHPへのバンドル後に複数の方が
コード拡張を行っているため、上記の配布形態の変更に関する了承を
得るためにメールを出しており、(今のところ)異義はでていません。

mbfilter->libmbfl、mbregex -> onigurumaへの実装変更に関しては、
小泉さんを中心に既に着手済みであり、既に小泉さんが libmbflの
実装を sourceforge.jp に、onigurumaをPHPで使用可能にする
実装のパッチを本ML(php-dev @ php.gr.jp)にて告知されています。
また、libmbfl+鬼車の実装をPHP-4.3.3RC3用のパッチとして
廣川が以下のURLで公開しています。

http://www.geocities.jp/rui_hirokawa/php/patch/

また、libmbflに関してはリリース候補版1をテスト用として
sourceforge.jpにて公開しました。

http://sourceforge.jp/projects/php-i18n/

この実装をベースに(現在リリース直前のフェーズにある)PHP 4.3.3のリリース後、
PHP 4.xとPHP5の開発版における実装をlibmbfl+鬼車のバンドルに変更します。

現在のところ、上記のパッチによるPHPでテストケースは通過しており、
実装上の大きな問題はないと考えていますが、テストが十分でないため、
正式リリースまでには、今後、十分なテストが必要と考えます。
具体的な課題としては、ZTSモード等では問題を発生する可能性があります。
広範な環境のユーザにテストに参加していただき、早期に安定した
実装をリリースできればと思います。

以上のまとめには、私の私見も含まれているかと思われますので、
御意見頂ければと思います。

-- 
Rui Hirokawa <rui_hirokawa @ ybb.ne.jp>


PHP-dev メーリングリストの案内