web-dev-qa-db-ja.com

非GPLソフトウェアからGPLソフトウェアを呼び出す

私が書いている別のプログラムからGPLの下でリリースされたプログラムを(合法的に)使用できますか?

たとえば、プログラム(GPLの下にある)を使用するGUIがありますが、GUIでコードを非表示にして販売することはできますか?

31
Valmond

プログラムがGPLの影響を受けることなく、独自のプログラムからGPLされたプログラムを使用することができますが、プログラムがGPLの対象になることなく、GPLされたコードを独自のプログラムにリンクすることはできません。条項。

既存のコマンドラインプログラムの周りにGUIラッパーを記述した質問の例では、GPLされたプログラムを実行する独立したプログラムである場合、GUIはGPLの条件に拘束されません。別個のプロセスであり、既存のインターフェースを介してのみそれと通信します-例えば、コマンドラインを介して、および/またはstdin/stdoutを介して。

GPL FAQ からの関連ビット:

2つの別々のプログラムと2つの部分を持つ1つのプログラムの境界はどこにありますか?これは法的な問題であり、最終的に裁判官が決定します。適切な基準は、通信のメカニズム(exec、パイプ、rpc、共有アドレス空間内の関数呼び出しなど)と通信のセマンティクス(交換される情報の種類)の両方に依存すると私たちは考えています。

モジュールが同じ実行可能ファイルに含まれている場合、それらは確実に1つのプログラムに結合されます。モジュールが共有アドレス空間でリンクして実行されるように設計されている場合、それはほぼ確実にそれらを1つのプログラムに結合することを意味します。

対照的に、パイプ、ソケット、コマンドライン引数は、通常2つの別々のプログラム間で使用される通信メカニズムです。したがって、それらが通信に使用される場合、モジュールは通常別々のプログラムです。しかし、通信のセマンティクスが十分に親密で、複雑な内部データ構造を交換している場合、それも2つの部分をより大きなプログラムに結合したものと見なすための基礎となります。


GPLでカバーされたプラグインをロードするように設計されたフリーでないプログラムをリリースできますか?

これは、プログラムがプラグインを呼び出す方法によって異なります。たとえば、プログラムがプラグインを呼び出して通信するために単純なforkとexecのみを使用する場合、プラグインは別個のプログラムであるため、プラグインのライセンスではメインプログラムに関する要件はありません。

プログラムがプラグインを動的にリンクし、プラグインが相互に関数呼び出しを行い、データ構造を共有する場合、それらは単一のプログラムを形成すると考えられ、メインプログラムとプラグインの両方の拡張として扱う必要があります。 GPLの対象となるプラグインを使用するには、メインプログラムをGPLまたはGPL互換のフリーソフトウェアライセンスでリリースする必要があります。また、メインプログラムを配布してこれらを使用する場合は、GPLの条件に従う必要があります。プラグイン。

プログラムがプラグインを動的にリンクしているが、プラグイン間の通信が、いくつかのオプションを指定してプラグインの「メイン」機能を呼び出し、プラグインが戻るのを待機している場合、それは境界線の場合です。

いかなる場合でも、GPLは基礎となるコマンドラインプログラムに完全に適用されることに注意してください。(ユーザーに別のソースから取得させるのではなく)配布する場合は、GPLのコピーをユーザーに提供し、それを作成する責任があります。コマンドラインプログラムがGPLの下にあること(GUIラッパーがそうでなくても)を明確にし、要求に応じてコマンドラインプログラムのソースコードを利用できるようにします。 GPLからFAQ再び:

ユーザーが、GPLで保護されたソフトウェアを、ユーザーが部分的にプロプライエタリであることを知っているシステムの「一部」と呼んで配布した場合、ユーザーはGPLで保護されたソフトウェアに関する自分の権利を確信できない場合があります。しかし、受け取ったものが無料のプログラムと別のプログラムを並べたものであることを彼らが知っていれば、彼らの権利は明らかです。

標準的な免責事項:私は弁護士ではありません。私が弁護士であったとしても、私はあなたの弁護士ではありません。明確な回答が必要な場合は、管轄区域での実施が許可されている適切な法務専門家に相談してください。

31
Dave Sherohman

あなたがそれを使用することによってあなたが何を意味するかに依存しますか?

  • コードにコンパイルします
  • 共有ライブラリを使用する
  • 実行可能ファイルを実行する

また、GPLのどのバージョン/バリアントが他のコードの下にあるかによっても異なります。

  • GPL
  • LGPL
  • AGPL
  • おそらく他の

法的免責事項:私は弁護士ではありません。

0
Martin York