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


30

私が書いている別のプログラムからGPLの下でリリースされたプログラムを(合法的に)使用でき、GPLを尊重する必要はありません(私が書いているプログラムに対して)。

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

回答:


30

プログラムが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で保護されたソフトウェアに関する権利を確信できない可能性があります。しかし、もし彼らが受け取ったものが無料のプログラムと別のプログラムであると知っていれば、彼らの権利は明確になるでしょう。

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


1
リンクに関するFSFの立場は少数派であることに注意してください。(そして、IMO、それは何の意味もありません。自動化されたプロセスは新しい作品を作成できません。)
デイビッドシュワルツ

1
ただし、FSFはGPLを作成しました。これにより、彼らの意見ははるかに関連性が高まります。「Xと言うとき、{...}」という意味は法廷で一般的に認められています。「あなたがXを言ったとき、あなたは{...}を意味した」、そうではありません。
–MSalters

「起動に単純なforkとexecのみを使用する」とはどういう意味ですか-誰かがこれを明確にできますか?
クルーナル

それでは、パイプラッパーを記述するだけでGPLを簡単にバイパスして、GPLコードを別のプロセスで実行できますか?それはGPLを無関係にし、強制することを不可能にしているように思われます。独自のライブラリを作成し、GPLのライブラリとともにリンクする場合はどうなりますか。独立したスタンドアロンライブラリもGPLになりますか?GPLのコードを使用しているときに他の人のライブラリにリンクするとどうなりますか?ライブラリはGPLになりますか?これらの質問のいずれにもノーと答えると、GPLを簡単にバイパスするための大きな抜け穴が開きます。はいと答えると、著作権法に違反しています。
セリン

@Cerin-GPLは実際に配布するコードにのみ適用されます。そのため、GPL対応ライセンスと非GPL互換ライセンスの両方にリンクするプログラムを作成できますが、同じプロセスでGPL対応コードと非GPL互換コードを実行するため、そのプログラムをサードパーティに配布することはできません。(「再配布なしで使用」は、多くの人がGPLの抜け穴と見なされます。これは、WebサービスなどがGPLを完全に回避できることを意味するためです。この問題に対処しようとします。)
デイブシェロマン

0

それを使用するという意味に依存しますか?

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

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

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

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


-2

それはあなたのプログラムがGPLプログラムをどれだけ正確に「使用しているか」に依存します。GPL FAQにはかなり長い説明がありますが、それでもまだ解釈の余地がたくさんあります。

GPLで保護されたソフトウェアを独自のシステムに組み込むことはできません。(...)ただし、多くの場合、GPLで保護されたソフトウェアを独自のシステムと一緒に配布できます。これを有効に行うには、無料プログラムと非無料プログラムが独立したプログラムで通信し、それらが効果的に単一のプログラムになるような方法で結合されていないことを確認する必要があります。(...) 2つのプログラムが1つのプログラムの2つの部分になるように結合されている場合、それらを2つの別個のプログラムとして扱うことはできません。したがって、GPLはすべてをカバーする必要があります。コンパイラーとカーネル、またはエディターとシェルのように、2つのプログラムが十分に分離されたままであれば、それらを2つの別個のプログラムとして扱うことができますが、適切に行う必要があります。問題は、フォームの1つにすぎません:自分が何をしているかをどのように説明するか。なぜこれが重要なのでしょうか?コレクション内のGPLで保護されたソフトウェアの無料ステータスをユーザーが明確に理解できるようにするためです。

主にコマンドラインGPLプログラムを呼び出すために存在するGUIの例では、2つは明らかに1つのプログラムを形成するため、GPLの下でコードをリリースする必要があると思います。


いいえ、「明らかに単一のプログラムを形成する」わけではありません。基礎となるコマンドラインプログラムがGUIオーバーレイがなくても機能できる限り、それらは「単なる集約」によって結合され、「事実上単一のプログラム」ではありません。引用したテキストの例に注意してください-コンパイラーはカーネルの上にあり、それなしでは実行されませんが、コンパイラーがなくてもカーネルは問題なく実行されます。
デイブシェロマン

1
@Dave:コマンドラインプログラムのライセンスステータスが問題になっている場合、GUIオーバーレイがなくても基礎となるコマンドラインプログラムが機能し続けることができるかどうかは関係がありますが、問題はGUIについてであり、コマンドラインプログラムです。したがって、それらが単一のプログラムを形成していることは疑いの余地がありません。
マイケルボルグワード

引用したセクションの例の1つを置き換えて、それがどのように維持されるかを見てみましょう。「...しかし、問題はコンパイラに関するものであり、これはカーネルなしではまったく役に立たないので、単一のプログラムを形成することは疑いの余地なく真実です。」もちろん、引用したテキストが「2つの別個のプログラムとして扱うことができる」と明示的に述べていることを除きます。単に依存関係の問題である場合、そのソフトウェアは(GPL化された)カーネルなしでは「完全に役に立たない」ため、Linux上でクローズドソフトウェアを実行することはできません。
デイブシェロマン

@Dave:もちろん、コンパイラとすべての種類のクローズドソフトウェアは、Linuxカーネルなしでは役に立たないということは例外です。POSIXおよび/またはCライブラリ標準を実装し、独自の重要な機能を提供するもので実行できるからです。 。1つの特定のコマンドラインプログラムを駆動するためだけに存在するGUIラッパーとはまったく異なる問題です。
マイケルボルグワード

3
ただし、GUIの部分は間違っています。同じGUIラッパー、他のCLIプログラム、特にオリジナルのそれ以降のバージョンで動作します。基になるプログラムに対する元のGPL権利を引き続き行使できることを意味するため、これはこのコンテキストに関連しています。10%速くなるように再コンパイルしても、CLIは私を邪魔しません。
MSalters

-3

いや

GPLコードは、他のGPLコードでのみ使用できます。

ウィキペディアのGPL記事の最初の行を引用:

GPLは一般使用向けの最初のコピーレフトライセンスです。つまり、派生著作物は同じライセンス条件でのみ配布できます。

それに加えて、GPLは長さが数ページあり、いくつかのバージョンが存在します。


警告、先に個人的な暴言!

個人的には、GPLライセンスは非常に制限的でウイルスに似ているため、嫌いです。彼らはそれを「無料」と呼んでいますが、実際はまったく逆であり、GPLコードは他のGPLコード以外では使用できません。したがって、現在のプロジェクトがオープンソースであるかどうかに関係なく、他のプロジェクトをGPLに強制したり、ライブラリ全体を書き換える必要があります。たとえば、freeBSDのような巨大なオープンソースプロジェクトがありました。ライセンスは互換性がないため、数十万行のlinuxコードを書き直さざるを得ませんでした。 GPLと互換性がありません。

「何でもやりたい」という意味で本当に「無料」のライセンスが必要な場合は、BSDまたはMITライセンスをお勧めします...実際、他のほとんどのライセンスは問題ありません。GPLのみが本当に問題となるのは、それがいかに制限的であり、他の人にそれを強制するかだからです。最後に、非常に複雑です。

ああ、それは片道チケットでもあります。GPLはほとんどのライセンスからライセンスされたコード/ライブラリを使用できますが、これらのライブラリ/コードはGPLコードを順番に使用できません。


「派生作品」と書かれています。それには、GPLコードに動的にリンクするソフトウェアが含まれていますか?
右折

@WTP:間違いなくはい-LGPLのポイントは、これを許可する別のライセンスを持つことです。
マイケルボルグワード

3
コマンドラインプログラムを囲むGUIシェルは、著作権目的で定義されている「派生著作物」ではありません
デイブシェロマン

1
@Dave Sherohman-それは明らかではないようです。 この質問に対する受け入れられた答えは、「私見、精神的には、単にGPLプログラムの機能を公開する純粋なラッパーはGPLであるべきです」と言っています。それは彼らがコミュニケーションする方法の技術的な側面だけでなく、意図でもあります。たとえば、本を翻訳すると派生作品が作成されます。それをKindle形式に変換することは、派生した作品です。GUIを追加すると派生作品が作成されると判決を下す判事を見ることができました。気をつけて。
スコットホイットロック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.