17

Microsoftは、ウィンドウやMFC DLLライブラリなどを作成しています。オープンソース開発者は、新しいMFCアプリケーションを作成し、ソースコードをGPLとしてリリースします。アプリはWindowsで実行するためにMSDLL/ライブラリとリンクする必要がありますが、MicrosoftのGPLにDLLを強制する権利があると誰もが主張できるとは思いません。

これは、GPLライセンスが実際に最初に「作成」されたものに依存していることを意味しますか? リンクせずに公開されたプロプライエタリライブラリ(Windows DLLなど)が最初に作成され、GPLコードがリンクされた後、GPLプログラムがリンクされた場合、プロプライエタリコードは「 GPLコードにリンクされています。

この場合、そのようなNVidiaまたはRealNetworksの会社は次のことを行うことができますか?プロプライエタリのHDDecodingメディアデコードエンジンライブラリをプライベートに保ちたいが、オープンソースのGPLコードを「活用」してハードウェアを紹介したいとします。

  1. 彼らは、メディアのデコードを行い、いくつかのサンプルコードをリリースするための独自のライブラリを作成します。
  2. 誰か(オープンソース開発)が、XBMC、Mplayer、VLCなどのGPLコード用のこのプロプライエタリライブラリにリンクされた「プラグイン」を作成します。
  3. 彼らはプロプライエタリライブラリを最初に作成したので(MSが最初にすべてのDLLを作成するのと同じように)、プロプライエタリコードとリンクするGPLプログラムはそれらをGPLコードに変換しないと主張できますか?

理論的には、NVidia独自のメディアデコーダライブラリとリンクするGPLvlc.exeファイルを作成するオープンソース開発者がGPLライセンスに違反していると主張することができます。

つまり、VLC、git、cygwinなどのWindowsで実行されているすべてのGPLプログラムは、実行するために独自のMicrosoft Windowsライブラリとリンクする必要があるため、すべてGPLライセンスに違反しています。

ケース2:これの何が問題になっていますか:

NVidiaは、最新のグラフィックス機能を隠す新しいハードウェアアブストラクションライブラリを作成できます。また、このライブラリを使用してFreeBSDドライバを作成し、BSDドライバのソースコードをリリースしますが、ライブラリのソースコードはリリースしません。

誰か(Linux開発者)は、このライブラリとリンクするLinuxドライバーを実装して、Linux用のNVidiaグラフィックスドライバーを作成できます。しかし、NVidiaはこれを行わなかったため、「Linuxサポート」を有効にしている間、ライブラリソースを「非表示」に保つことができます。

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

Windows / Mac / iPhone / PSP3でGPLされたソースで作成されたexeを実行することもGPLの精神に違反することを意味しますか?

4

5 に答える 5

9

GNU GPL FAQ から:

不自由なプログラムのプラグインを書くときに GPL を適用できますか?

プログラムが fork と exec を使用してプラグインを呼び出す場合、プラグインは別個のプログラムであるため、メイン プログラムのライセンスではそれらの要件はありません。したがって、プラグインに GPL を使用でき、特別な要件はありません。

プログラムがプラグインを動的にリンクし、それらが相互に関数呼び出しを行い、データ構造を共有する場合、それらは単一のプログラムを形成すると考えられます。これは、メイン プログラムとプラグインの両方の拡張として扱われる必要があります。これは、GPL の対象となるプラグインとフリーではないメイン プログラムの組み合わせが GPL に違反することを意味します。ただし、プラグインのライセンスに例外を追加して、それを非フリーのメイン プログラムにリンクする許可を与えることで、その法的な問題を解決できます。

非フリー ライブラリを使用するフリー ソフトウェアを書いているという質問も参照してください。

と:

GPL と互換性のないライブラリを GPL ソフトウェアで使用すると、どのような法的問題が発生しますか?

GPL の両方のバージョンには、一般にシステム ライブラリの例外と呼ばれるコピーレフトの例外があります。使用したい GPL 非互換ライブラリがシステム ライブラリの基準を満たしている場合、それらを使用するために特別なことをする必要はありません。プログラム全体のソース コードを配布するという要件には、それらのライブラリを含むリンクされた実行可能ファイルを配布したとしても、それらのライブラリは含まれません。

何を「システム ライブラリ」と見なすかの基準は、GPL のバージョンによって異なります。GPLv3 はセクション 1 で「システム ライブラリ」を明示的に定義し、「対応するソース」の定義から除外しています。GPLv2 では、セクション 3 の終わり近くで次のように述べています。

ただし、特別な例外として、配布されるソース コードには、実行可能ファイルが実行されるオペレーティング システムの主要なコンポーネント (コンパイラ、カーネルなど) と共に (ソースまたはバイナリ形式で) 通常配布されるものを含める必要はありません。そのコンポーネント自体が実行可能ファイルに付随していない限り。

...

于 2009-12-06T10:04:58.587 に答える
6

あなたは、GPL 制限が発効する方法について根本的な誤解を持っています。最初の例は「システム ライブラリの免除」でカバーされていますが、そうでなかったとしても、あなたが仮定した効果はありません。

GPL は、GPL のプログラムまたはその派生物を配布する場合、GPL と同等の条件の下でプログラムまたは派生物のソースも (プログラム/派生物を配布した人に) 提供する必要があると述べています。

これは、Microsoft のコードの一部にリンクされた GPL プログラムを配布する場合、ワックスのボール全体にソースを提供する必要があることを意味します。そうしないと、著作権を侵害したとしてあなたから訴えられる危険があります。Microsoft がサード パーティである限り、これは Microsoft に何の制限も課さないことに注意してください(もちろん!)。私が Microsoft のコードにアクセスできない場合 (その可能性は高い)、ライセンスに違反することなくその派生物を配布することはできません。

于 2009-12-06T11:39:33.867 に答える
1

簡単に言えば、リンクの例外を適用しない限り、GPL と互換性のないコードまたはライブラリの上に GPL を適用し、コンパイルされた結合作品を配布することはできないということです。

リンクの例外は、プログラムをソース形式で配布するために特別な許可を必要とせずに、フリーでないビットを含むコンパイル済みの実行可能ファイルを配布する方法を提供します。

もちろん、この例外はフリーではないライブラリに依存しており、それに対して (特に静的に) リンクされたプログラムを配布できるようになっています。

したがって、最初の質問に答えるには、いいえ.. これは「鶏が先か卵が先か」のシナリオではありません。私がお勧めするのは、例外を書かなければならない可能性に直面したときです。おそらく、Apache や 3 条項 BSD ライセンスなど、制限の少ないライセンスを選択する方がよいでしょう。

第二に、いいえ、たまたまリンクしている何かのライセンスを変更する目的で、コードに GPL を適用することはできません。繰り返しますが、リンクの例外に戻ります。これは、提供する責任があります。

GPLはspririt、プロプライエタリなソフトウェアなど存在しない世界に生きています。RMS はこれを最終的な目標として何度も述べてきました。残っているのは、自由ではないプラットフォームで自由ソフトウェアを配布したい人々のために取り組まなければならない実用性です。

これは、Linux (カーネルと同様) が GPL v2 のみのままである最大の理由の 1 つです。

于 2009-12-07T02:56:42.977 に答える
0

IANAL ですが、作成の順序は関係ありません。2 つのバイナリをリンクすることが GPL に違反する場合、どちらが最初に作成されたかに関係なく、GPL では許可されません。

ケース 1 は、Michael Burr が引用したように、システム ライブラリの例外によって対処されます。これは時間に依存しないことに注意してください。システム ライブラリの例外がなければ、2003 年に書かれた GPL コード (GPL コードより前に書かれたもの) を Windows 98 で実行することは、GPL 違反と同じくらい GPL 違反になります。 Vistaで実行することです(GPLコードの後に​​書かれました)。

ケース 2 は GPL の精神に違反することに同意しますが、この用語は GPL で使用されているため、NVidia ドライバーはモジュールとしてロードされるため、Linux カーネルと「リンク」されていません。非フリーの NVidia バイナリが静的にリンクされた Linux カーネルを配布することはできませんが、最近、静的にリンクされたカーネルを配布するのは誰ですか?

于 2009-12-06T10:56:24.137 に答える
0

それらにリンクすることによって他のプログラムのライセンスを変更することはできません。ライセンスで非オープン ソース プログラムへのリンクが許可されていない場合は、ライセンスを変更するか、それらのプログラムへのリンクを停止する必要があります。他のプログラムがあなたのプログラムにリンクしている場合、状況は異なります。その場合、ライセンスを変更するか、プログラムへのリンクを停止する必要があります。

于 2009-12-06T11:55:50.357 に答える