たとえば、
1)英語の翻訳辞書をサーバで保持している。プラグインで辞書サーバにアクセスできる部分だけを開発した。これはGPLにする必要はあるのか?
2)レコメンドエンジンを開発した。XMLデータからリモートサーバでレコメンド商品を抽出する演算処理を行う。プラグインでこのサーバにアクセスしてデータを送受信する。このプラグインはGPLにする必要はあるのか?
ほかにもいろんな事例が考えられると思いますが、OSSでも外部のサードパーティーを利用する場合の統合プラグインの位置関係はGPLにすべきなのかどうかが分かりません。
私が言いたいのは、つまり外部のリソースは何でも構いません。要は外部のリソースにアクセスして、そのデータを送受信してOSSにサービスを提供することを前提にしています。そのための統合プラグインの位置関係がGPLになるのか、どうかです。
アドバイスお願いします。
それぞれのつながり方で答えは変わるのですが、
プラグインはOSSから"動的リンク"されることが多いと思います。
GPLのプログラムと"動的リンク"で結合されるプログラムはGPLに従わなければなりません。
質問者の意図は、自前の翻訳辞書サーバみたいなものへのアクセス方法を隠したいのでGPLにしたくないということでしょうか?
ということでしたら、これを回避するには、もう一段階クッションをおいて、
サードパーティー製品 - サーバー通信プログラム - プラグイン - OSS
という構成にします。「サーバー通信プログラム」とプラグインが"プロセス間通信"でやりとりするようにします。
GPLのプログラムと"プロセス間通信"で結合されるプログラムはGPLに従う必要は無いとの解釈が一般的です。
この場合はプラグインはGPLになりますが、「サーバー通信プログラム」はGPLを回避できます。
GPL自体がWeb向けに作られていないこともあってその辺りは難しい所だと思います。
(Web向けにはAffero GPLなどがあるようですが、私はあまり詳しくありません。)
正確なところはライセンスを読むしかありませんが、とりあえず私見を。
GPLのソフトウェアからexecやfork(WindowsでいえばShellExecuteでしたっけ?)で単に実行ファイルを呼び出すだけのような場合には、実行ファイルは基本的にGPLにする必要はありません(GPLの下で公開されていたプログラムがプラグインを使うとして、プラグインのライセンスにはどのような条件がありますか? - GNU GPLに関して良く聞かれる質問を参照)。
一方、DLLなどを呼び出す場合には、それを呼び出すためのAPIが存在して、相互にデータをやりとりするわけですから、DLLもGPLでなければならない、ということのようです。
ただ、上記のリンク先にも書かれてある通り実際は微妙なところで、例え実行ファイルを呼んでいるだけでも、それを経由してDLLとデータをやりとりしたりしていると、悪質な場合にはGPL違反となってしまう可能性があります(以前に私も似たようなことを考えたので参考まで。)。
さて、質問者さんは主にWeb上でのプラグイン的な用途について想定しておられるようなので、そこに当てはめて考えてみます。
"プラグイン"という表現が微妙なのですが、OSS側でAPIが仕様で定められていて、プラグインに記述された関数を呼び出すような形式であればWindowsでいうDLLに、フレームで表示したりhttpのリクエストを行ってその結果を処理するだけならWindowsの実行ファイルに当てはまるのではないかと思います。
で、おそらく質問者さんのいうプラグインは前者だと思うので、この場合はおそらくGPLでなければならないのではないかと思います。
そこで、GPLにするとして、ここでは更に別のサーバとデータの送受信を行うわけですが、サーバ側が単なるDBでなくスクリプトであるような場合で、それとデータのやりとりをするような場合には、場合によってはこのスクリプトもGPLでなければならない可能性があります(サーバが単なるDBサーバであれば、そのデータはGPLでなくても問題ないと思います)。
はっきりとしたことは言えませんが、要は呼び出し元と呼び出し先のデータのやりとりがどの程度あるかによって決まると思います。
明らかに一体なコードを分割してGPL逃れをしていると見られるような場合にはGPL違反とみなされると思いますが、そうでない場合にはどちらとも言い難いのではないかと思います。
参考になるか分かりませんが、とりあえず個人的な見解を述べさせていただきました。
長文失礼しました。
微妙な回答ですね。
>バイナリを配布しないWebサービスではソースコードを公開する必要はないとのこと。
異論はいろいろありますが、上記の解釈ではGPLでなくてもよいということになります。
WordPressのテーマとかもGPLでないものも多数存在します。
サードパーティー製品(バイナリ) ← プラグイン(こいつの立場はGPL!?) → OSS(GPL)
ってことです。いまいちプラグインの立ち位置が理解できません。
それぞれのつながり方で答えは変わるのですが、
プラグインはOSSから"動的リンク"されることが多いと思います。
GPLのプログラムと"動的リンク"で結合されるプログラムはGPLに従わなければなりません。
質問者の意図は、自前の翻訳辞書サーバみたいなものへのアクセス方法を隠したいのでGPLにしたくないということでしょうか?
ということでしたら、これを回避するには、もう一段階クッションをおいて、
サードパーティー製品 - サーバー通信プログラム - プラグイン - OSS
という構成にします。「サーバー通信プログラム」とプラグインが"プロセス間通信"でやりとりするようにします。
GPLのプログラムと"プロセス間通信"で結合されるプログラムはGPLに従う必要は無いとの解釈が一般的です。
この場合はプラグインはGPLになりますが、「サーバー通信プログラム」はGPLを回避できます。
なるほど、この方法が最も妥当でしょうね。
回答してくださった皆様、ありがとうございました。
なるほど、この方法が最も妥当でしょうね。
回答してくださった皆様、ありがとうございました。