[PHP-dev 660] Re: mbfl ライセンスに関して

Moriyoshi Koizumi php-dev@php.gr.jp
Mon, 09 Dec 2002 01:01:47 +0900


小泉です。

この点に関してはさらに議論が必要と思いましたので、
php-dev@php.gr.jp にも転送します。

Rui Hirokawa <rui_hirokawa@ybb.ne.jp> wrote:

> 廣川です。
> 
> On Sun, 08 Dec 2002 01:39:15 +0900
> Moriyoshi Koizumi <moriyoshi@at.wakwak.com> wrote:
> 
> > 小泉です。
> > 
> > 返信遅くなってしまいすみません。
> > そうすると、廣川さんの部分に関しては LGPL にしてしまって
> > 構いませんでしょうか?
> > 
> 
> かまいません。
> 
> > それでもなお、ロシア語サポートの部分に関しては著者の方に
> > 了承を取る必要があるので、すぐにマージ作業には入れない様子です。
> > 
> > 詳細に関しては今日明日中に、php-i18n.sourceforge.jp の方に
> > 現在作業中の部分に関してのみ上げたいと思っていますので、
> > 詳細はそちらをご覧いただければと思います。
> > 追って ml に状況を流します。もし問題があればすぐに
> > 指摘してくださると助かります。
> > 
> > ところで、これは、問題にしない限り問題ではないのですが、
> > mbfl のソースには、厳密に言えば LGPL 違反になっている
> > 部分が多々見受けられました。というのは、LGPL は、
> > 元のものに改変を加えた場合は、ライブラリとしての独立性を
> > 保障して初めて他のライセンスを持つソフトウェアとの
> > 配布が認められるようなのですが、現時点では mbfl は php がないと
> > 完全に動かない状態です。
> 
> LGPLに詳しくはないのですが、
> もともとmbfilterのようなライブラリは単体では動かないものなので
> 他のプログラムにある程度依存するのは仕方がないのではないかと
> 思っています。
> データ構造の依存性を避けるためには、PHP固有のAPIに依存している
> 部分もmbfilter側で提供し、PHP以外でも問題なく使えることを示せれば
> 良いのかもしれませんが、個人的には他のLGPLのライブラリが
> 完全に他のシステムに依存していないかといわれるとそうではないように
> 思います。

個人的には非常にややこしい問題になっていると思います。
たいした事柄ではないのかもしれませんが、
これに白黒つけてからマージ作業をしたいと思っています。

廣川さんよりもむしろ金本さんとお話したほうがいい話題になってくる
のかもしれませんが、私が、"streamable kanji code filter and converter"
(以下 mbfilter と記述)について抱いている疑問は、

「mbfilter には mbstring に組み込まれる前の、元の形のソースコードが
存在する?」

ということです。

ここで私の言うソースコードとは、ソースコード自体になんらかの変更を加えなく
とも、適切な指示の下に、ライブラリとして利用できるバイナリを生成でき、他の
プログラムから利用することができるものとします。

# この「適切な指示」について、LGPL は言及していませんので、
# 解釈が分かれるところだと思いますが。

この疑問が浮かび上がった背景は次のような点にあります。

(i) 他の LGPL と互換性のないライセンスの元で配布されている
ソースコードまたはその生成物としてのバイナリと一緒に配布する場合は、
その元の形がどこで入手できるのか明示しなくてはならないようです。

-- GNU Lesser General Public License version 2.1 第7節より引用

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

-- EOQ

(ii) また、ソースコードに変更を加えたものを再配布する場合は、
その成果物もライブラリである必要があるようです。

-- GNU Lesser General Public License version 2.1 第2節より引用
  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.
-- EOQ

(iii) 成果物は、それを利用するアプリケーションから独立した場合にも、
元のライブラリが持っていた機能を提供できるようになっているべきとの
ことです。

# make a good faith effort となっていますから、必ずしもその必要は
# ないのかもしれませんが、その下に付けられた平方根の例では、
# "must still compute..." と、必要性を訴えています。

-- GNU Lesser General Public License version 2.1 第2節より引用
    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

   (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)
-- EOQ

したがって、私の解釈が正しいとすると、

(i) に関して
あくまで LGPL の適用されたライブラリであると主張する必要が
あるならば mbfilter の原型をどこかで入手できなくてはならないし、
mbfilter がライブラリである限り、入手方法は php の配布の際に明示
しなくてはならない。

(ii) に関して
php(mbstring) と mbfilter が一緒に配布されているのは、
それが互いに補完しあうものだからではなく、単に利便性のために
2つの別々のパッケージを一つのアーカイブの形で配布している
ためであるということを、アーカイブに含まれるファイルの
利用者が読むことのできる部分に注記しなくてはならない。

(iii) に関して
mbstring が php のパッケージの一部として配布されるようになってから、
幾多となく変更が行われたが、その変更は、既にもとのライブラリとしての
機能を保証するものでなければならない。

上記の3つのいずれも満たされない限り、mbfilter の再配布や利用に関する条項
は無効であると判断せざるを得ません。

だから、私個人としては、

LGPL => PHP ライセンスまたは BSD スタイル互換ライセンス

への変更がすぐにできればいいと思っていますし、する必要があるとも思います。


それでは、長々と失礼しました。