中島@ブレーンです。

最近、ある方からWalrusのライセンスについて疑問を提起されました。自分な
りに調べてみたのですが、Rubyのようなスクリプティング言語について、GPL 
がどのように適用されるか、ということがわからず解決できないでいます。ど
なたか詳しい方のアドバイスをいただきたいのですが、よろしくお願いします。

○ 問題の概要

Walrusは、現在GPL2の元で公開しています。Walrus自体は今後も永久的にオー
プンソースソフトウエアであり続けるつもりですが、問題は、Walrusを使って
開発したアプリケーションのライセンスです。WalrusがGPLだと、Walrusの元
で動作するアプリケーションも自動的にGPLになってしまい、商用利用は事実
上不可能になるのではないかというのが、問題の指摘の内容です。

問題は二つに分かれると思います。

(1) GPLのソースをrequireするプログラムは必ずGPLになる
(2) 開発されたプログラムがGPLであると再配布をしなくてもソース公開の義
    務が生じる

私としては、Walrusは商用目的でも使ってほしいので、もしこの指摘が正しけ
ればライセンスを変更する必要があると思いますが、本当にそうなのか確認し
たいのです。

○ GPLのソースをrequireするプログラムは必ずGPLになるのか

Walrusの元でのアプリケーションは、次のようにWalrusが提供するclassを継
承して作成されます。

  # hello.rb
  require "walrus/walrus"
  class HelloDocument < Walrus::HtmlDocument
    def greeting
      "hello"
    end
  end

このソースをWalrusがロードし、環境定義ファイルという別のファイルの指示
に従って、HelloDocumentクラスのオブジェクトが生成され、そのオブジェク
トがWalrusの他のオブジェクトと共に動作します。

これについて、私は次のように考えていました。

   Walrusとhello.rbの関係は、ワープロと文書のようなものである。ワープ
   ロがGPLで、ワープロ文書の中にマクロのプログラムが書かれていて、その
   プログラムがワープロと同一のプロセス(メモリ空間)で実行されるとして
   も、文書(の中のマクロ)は「それ自体独立で異なる作成物」であり、GPLに
   する必要性はない。同様にhello.rbはWalrusが処理するコンテンツであり、
   たまたま、Walrusを実装した言語と同じ言語で書かれているだけである。
   つまり、hello.rbは「それ自体独立で異なる作成物」でありWalrusがGPLで
   あることからライセンスについて制約を受けることはない。

Exerb(rb2exe)のように、スクリプトとruby本体を一体化するツールを使って、
Walrusを単体のバイナリにしてしまえば、この意味が明確になると思います。

一方で、指摘されて気がついたのですが、次のような解釈もなりたちます。

   Walrusとはライブラリであり、hello.rbはこのライブラリを利用するソフ
   トウエアである。この場合は、ライブラリをリンクして作成されたバイナ
   リに対してライブラリのGPLが適用される(伝染する)ことに準じて、
   hello.rbもGPLになると考えるべきである。

これを一般化すると、「GPLのソースをrequireするプログラムは必ずGPLにな
るのか」という問題になります。これはperlやpythonでも同様に発生すること
ですから、どこかに答えがあると思ったのですが、見つけられませんでした。

○ 再配布をしない時のGPLによる制約

そこで、仮にアプリケーションがGPLになるとしたらどうなるか考えてみたの
ですが、そこでまた難問が発生しました。ユーザが外部に公開したくないアプ
リケーションをWalrusで開発できるのか、ということです。

ユーザがソフトハウスに自社の業務用のアプリケーションを発注して、ソフト
ハウスがWalrusで開発し、そのソフトにGPLが適用されたとします。すると、
GPLによって、以下の権利が保証されます。

  (1) ユーザはソースをもらう権利がある
  (2) ユーザはこのアプリを(GPLのもとで)再配布する権利がある

インタープリタ言語ではソース=実行形式ですから、(1)は常に満たされている
ので、意味がありません。

問題は(2)の方ですが、もしユーザがこのアプリケーションを再配布しようと
すると、そこでユーザの方が配布元になるので、いろいろな制約が発生します
が、一般的にはユーザは自社専用のアプリを再配布しようとは思いません。再
配布しようとしなければ(2)の方も無意味になります。

それで、仮にアプリケーションがGPLになるとしても実質的な問題はないと、
私は判断したのですが、「GPLの前文によると、この場合、第三者が配布元に
ソースを請求できる(という解釈が一般的である)」という指摘を受けました。

そんな解釈があるとは知らなかったのですが、これを主張する某氏は、GPLを
原文で読んで、それなりの知識を持っておられるようです。そのような解釈は
本当に一般的なのでしょうか?

なお、私と某氏とのやりとりは、以下の掲示板の36番以降で参照することがで
きます。

http://210.155.146.159/bbs/s27/

ただし、最初の方は私(ハンドル名walrus)が問題点をよく把握できないまま答
えていますので、散慢なやりとりになってしまっています。

-- 
「stableでなければ生きていけない。unstableでなければ生きてる意味がない」
中島 拓 (株)ブレーン 研究部 (tnakajima / brain-tokyo.jp)
http://www.brain-tokyo.jp/~research/koutetu/