GPLなJavaScriptのコードは、非フリーなソフトウェアに使えるのか
Webで探すと次のページがすぐに見つかりました。
結構、自信満々(*)に「使える」と結論づけていますが、そんなに簡単な問いではありません。
(*)字面に現れていない洞察の末の結論かもしれませんが。
ポイントは「派生物(derivative work)」の解釈です。上のサイトからもリンクされているFAQで言えば、次の項目です。
元々、GPLは(主に)C言語を想定している節があり、コンパイルしてひとつの実行ファイルになったら「派生物」ということだけが明確になっています。ライブラリの場合、静的リンクは、この解釈で派生物の判定が容易です。しかし、動的リンクの場合、この解釈だけだと派生物になりません。静的リンクと動的リンクで効力が変わるのは変なので、少し解釈を拡大して、同じ(プロセス)アドレス空間で動くプログラムになるなら「派生物」という解釈で、C言語(などのコンパイル言語)では落ち着いています。しかし、この解釈はスクリプト系言語で困ります。
ちなみに上の説明で、libcどうなんだ、あるいはkernelのコードも結局同じアドレス空間で動くではないか、と思った人は鋭い人です。これらは、GPLの中で例外扱いしています。GPL2では"major components"、GPL3では"System Libraries"と区別して、例外扱いしています。
この辺り、GPL3(draft)で明確化されたのか調べてみましたが、ざっと見る限り変わっていません。
スクリプト系言語の場合、実行系(interpreter)とスクリプト自体に派生関係がないことは次で明言しています。
interpreterから見れば、スクリプトはデータだから、という解釈です。では、スクリプトが別のスクリプトモジュールの関数呼び出しをした場合は派生物なのか?、という疑問があります。上のFAQによれば、派生物、という解釈です("if you choose to use GPL'd Perl modules or Java classes in your program, you must release the program in a GPL-compatible way")。
(スクリプト系言語ではないですが)Javaに関して、次の文書があります(The LGPL and Java)。
あるjarファイルを利用したJavaコードは派生物だと、明確に言っています。ちなみに、継承(inheritance)も派生物、と言い切っています。リンクと同等に解釈しているので、jarファイルのライセンスがLGPLであれば、非フリーなソフトウェアに使えます。
ここまで来ると、GPLなJavaScriptを使うHTMLやJavaScriptは派生物になりそうな気配濃厚ですが、またまた例外事項がありました。
上記から引用します。
As a special exception to GPL, any HTML file which merely makes function calls to this code, and for that purpose includes it by reference shall be deemed a separate work for copyright law purposes.
JavaScriptの関数呼び出し、およびincludes it by reference、要はscriptタグによる読み込みだと思います、は派生物とはしない(=separate work)という例外を認めています。
と話を終わりにしたいところですが、この例外がGPLの一般論として認めた例外なのか、この例外事項を記載することを薦めた主張(記載しないと派生物になる)なのかよく分かっていません。全体のトーンは後者のような気がしないでもありません("it's possible that template+user data+Javascript would be considered one work under copyright law."とか)。
jarファイルとの比較から、JavaScriptファイルの読み込みはリンク相当にはなりそうなので、LGPLのJavaScriptコードは非フリーなソフトウェアで使えそうです。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/gpl-and-javascript/tbping