54

一部のコンポーネントには、 GNU劣等一般公衆利用許諾契約書バージョン2.1 GNU General Public License(GPL)バージョン2の下にあるツール( ffmpeg)を使用したいと思います。

そうするために、私はそれを私のソフトウェアでそのように呼ぶだけです:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo("lgplSoftware.exe", myParams);
p.Start();

私はそれを変更しません。私はWindows用のソフトウェアのビルドバージョンのみを使用します。


ウィキペディアによると:

GPLに関連する重要な論争は、非GPLソフトウェアをGPLライブラリに動的にリンクできるかどうかです。GPLは、GPLに基づくすべての派生コードがGPLに含まれている必要があることを明確に示しています。静的リンクは二次的著作物を生成することは理解されていますが、GPLコードに動的にリンクする実行可能ファイルを二次的著作物と見なすべきかどうかは明確ではありません(弱いコピーレフトを参照)。フリー/オープンソースソフトウェアコミュニティは、この問題で分かれています。FSFは、実行可能ファイルとGPLコードが「互いに関数呼び出しを行い、データ構造を共有する」場合、そのような実行可能ファイルは実際に二次的著作物であると主張します。


私はこれらすべての合法的な事柄に本当に混乱しています。私も自分のプロジェクトをLGPLにしてソースをリリースしたでしょうが、これは私次第ではありません。

だから問題は、私が今しているようにそれを使うことができるのか、それとも弁護士の軍隊によって処刑されるのかということです。

4

5 に答える 5

62

リンクは、コンピュータプログラミングにおいて特定の意味を持っています。あなたはGPLまたはLGPLのコードをまったくリンクしておらず、GPLまたはLGPLのバイナリを生成しているだけであり、GPLとLGPLはこれを許可しています。ユーザーは、作成者の意図した目的でそのバイナリを自由に使用でき、ソースを自由にダウンロードしてコンパイルできるため、すべての自由が維持され、GPLまたはLGPLに違反することはありません。(これは、GPL FAQが「腕の長さで通信する」ことによって話していることです。)これは、LGPLとGPLの精神にさえ違反しません。彼らはプロプライエタリソフトウェアの存在を容認し、ある時点でプロプライエタリプログラムが無料のプログラムを生み出し、その逆もまた同様であると想定しています。(それ以外の場合、GPLを実行できませんでした」

GPLは、プロプライエタリプログラムとGPLのプログラムが、「効果的に単一のプログラムになるような方法で組み合わされていない」ことを要求しています。プログラムがGPLの実行可能ファイルに完全に依存している場合、スタンドアロンのバイナリであってもそれらがないと使用できない場合は、それが原因で問題が発生する可能性があります。(そして、それはおそらくあなたの弁護士に相談して確実に見つける時です。)

また、これについて具体的に質問していませんが、GPLまたはLGPLのソフトウェアをソフトウェアと一緒に配布すると、インストーラーにライセンスのコピーを含め、ソースも配布する必要があることに注意してください。コード。たとえば、アプリケーションをインストーラーにパッケージ化し、GPLまたはLGPLの実行可能ファイルのコピーをインストーラーに含める場合、LGPLまたはGPLのコードを配布しているため、ソースコードのコピーを利用可能にする必要があります。 (アプリの配布方法に応じて、オンライン、メールインオファー、またはCDのいずれかで)。アップストリームプロジェクトへのリンクを含めるだけでは不十分です(少なくともGPLのバージョン2では)。正確な詳細については、GPLとLGPLをお読みください。

于 2009-09-08T16:12:35.080 に答える
4

私が間違っている場合は訂正してください。しかし、あなたが説明する状況は次のようになっていると思います。

  1. 個別の実行可能ファイルとして構築されたGPLまたはLGPLプログラムがあり、変更は加えられていません。
  2. GPLまたはLGPLプログラムの機能を必要とするクローズドソースアプリケーションを構築しています。
  3. プログラムでは、フレームワークまたはOS機能を使用して、別の個別の実行可能ファイルを実行します。
  4. プログラムでその実行可能ファイルの出力を使用しています。

その場合、実際にはGPLまたはLGPLライセンスのプログラムにリンクしているわけではありません。したがって、そのプログラムのライセンス条項に拘束されることはありません。これは、実際には、複雑な場合でも、そのような実行可能ファイルのライセンスの問題を回避するためのかなり一般的な方法です。

しかし、それはGPLとLGPLの精神に違反しています。

于 2009-09-08T15:39:14.493 に答える
4

一般的に、それは私がGPLの本当に厄介だと思う数少ないものの1つです。さらに悪いのは、それがどれほど伝染する可能性があるかです。それでも、それを回避する方法があります。

まず、データを送信するための独自のインターフェースを定義することから始めます。これは、アプリケーションと作成する別のライブラリの間で使用されます。GPLライセンスに該当するため、GPLコードから何も再利用しないでください。ただし、同様の構造を使用しても問題はありません。このインターフェースはあなた自身が作成したものであるため、あなた自身のライセンスに該当します。好きなように自由に使用できます。

次に、GPLコードの周りにラッパーライブラリを作成します。これにより、個人用インターフェイスも実装されます。このライブラリはGPLライセンスに該当するため、汚染されます。ただし、インターフェイスが外界に公開される可能性はありますが、インターフェイスが汚染されることはありません。派生したものでも何でもありません。これは100%独自のコードであり、同じインターフェイスを使用して別のライブラリに接続できます。

このラッパーライブラリは、独自の適切なコードとGPLコードの間の保護バッファーとして機能します。独自のコードはGPLコードを直接使用していないため、GPLになることはありません。このインターフェースは、別の解決策によってGPLコードを変更するための解決策としても機能します。

ライセンス制限を回避するのはトリックですが、インターフェースはあなたとあなただけのものであるため、GPLはそれによってブロックされます。このように使用すると、GPLコードと非GPLコードは2つの異なるプログラムになります。

それでも、ここで法的なアドバイスが必要になる場合があることに注意してください。ここSOには弁護士はあまりいません。しかし、それはこのGPLライセンスを回避できるトリックです。

于 2009-09-08T16:18:07.083 に答える
2

LGPLソフトウェアではこれを行うことができますが、GPLライセンスソフトウェアではこれを行うことはできません。

組み合わせた作品に関するLGPL2.1セクション6は、クローズドソースプログラムでライブラリを使用する方法を説明しています。LGPLライセンスプログラムを呼び出すことができ、動的にリンクすることもできます。

GPLにはそのような例外はありません。プログラムの一部としてGPLプログラム/ライブラリを使用する場合、それがプログラムの不可欠な部分として認識されるため、GPL互換ライセンスの下ですべてをライセンスする必要があります。このGPL-FAQエントリを参照してください。

于 2009-09-08T15:40:03.167 に答える
1

私は弁護士ではありません。これは法律上の助言にはなり得ません。それが私たちの背後にあるので、私見はあなたがリンクしているコードがLGPLであるなら、あなたは明確です。それが技術的にGPLである場合、それは問題です。

GPLとLGPLの違いは、LGPLコードに対するリンクは、共有の必要性を引き起こさないということです。

于 2009-09-08T15:28:20.710 に答える