web-dev-qa-db-ja.com

「クラスパス例外を伴うGPL」は実際にはどういう意味ですか?

Oracleは、Javaに関連するすべてのオープンソースコードをGPL with classpath exceptionでライセンスしているようです。私が理解していることから、これにより、これらのライブラリを独自のコードと組み合わせて、GPLでカバーする必要のない製品にすることができるようです。

  1. これはどのように作動しますか?
  2. これらのクラスの使用例と使用できない例は何ですか?
  3. LGPLとは対照的に、この新しいライセンスが使用されたのは、LGPLがほとんど同じことを許可しているように見えますが、確立され理解されているためです。
  4. LGPLとの違いは何ですか?
71
Thilo

まず、私は弁護士ではありません。しかし、私は多くのライセンスを研究し、それらに関する問題を理解しました。

第二に、これは古い問題であることは知っていますが、それでも混乱と懸念のポイントだと思います。気にしない場合は、そうする必要があります。ライセンスを選択することは、特に複数の貢献者が関与している場合は、簡単に変更することはできません。

(L)GPLは、残念ながらC/C++を念頭に置いて作成されました。 「ソースコード」、「オブジェクトコード」、「動的リンク」、「静的リンク」、「コンパイラ」、および「オブジェクトコードインタープリター」について話します。したがって、これを同じコンパイル手法に従わない他の言語(Javaのバイトコード、Pythonのジャストインタイムコンパイル、Javascriptの解釈された性質など)に翻訳するには、推測と仮定が必要です。法律について話しているとき、つまり、2人の当事者が主張している最終的な裁判事件について考えているとき-明確な区別がないことは悪いことです。

標準のGPLライセンスのコードは、その意図が非常に単純です。そのコードを使用する人はだれでも、コードを配布または販売するときにすべてのユーザーにコードをリリースすることが期待されます。それは、Richard Stallmanが作成したかった、明確かつクリーンなGPLウイルスです。

LGPLはもともと、バイラルではない「ライブラリ」を許可する試みでした。しかし、エンドユーザーが自分でライブラリを置き換えることができるようにしたかったため、「静的」リンクと「動的」リンクの違いがわかりました。ユーザーは、動的にリンクされた別のライブラリにスワップできるため、その必要はありません。 GPLとしてライセンスされます。静的リンクでは、ユーザーはGPLである必要があります。ライセンスは実際には「ヘッダーファイル」について語っていますが、C/C++では明確ですが、Java、Python、JavaScriptなどの世界では明確ではありません。したがって、LGPLのL(「ライブラリ」)は、せいぜい濁っています。

これは問題の核心に到達します。法律の世界では不明確なことは何でも悪いことです。 GPLまたはLGPLコンポーネントのいずれかを使用して何かを構築することを検討している場合、法廷に上陸した場合の将来の私の法的立場を確認したいと思います。しかし、今日の時点では、判例は確立されていません。このようなフォーラムでの知的主張のみが、法廷での訴訟が実際にあったわけではありません。

ここで、クラスパス例外が非常に貴重です。それはライセンスの下のコードが(L)GPLであることを明確に述べていますが、singのコードは何でも好きなライセンスに従うことができます。 ifs、ands、butsはありません。コアコードを変更した場合(バグの修正など)、GPLの一部としてそれらの変更をリリースする必要があります。ただし、使用しても感染することはありません。

ビジネスの観点から、10 'ポールでGPLコードに触れたくない人がいる理由を理解しています。法的地位は不明確であり、法的先例がついに決定されるとき、ビジネスは道の10年後に刺されるかもしれません。または、彼らは法的先例を確立するために戦う何年もの間法廷で行き詰まっているかもしれません。とにかく、彼らはその戦いのコストを危険にさらしたくないだけです。 Classpath Exception句を追加すると、法的質問がなくなり、(重大な)訴訟の可能性がなくなります。

したがって、私にとって、クラスパス例外はLGPLとは大きく異なります。これは、GPL以外のGPLまたはLGPLソースコードまたはライブラリの使用を可能にする明るい線を引くための法的にクリーンな方法です。

71
Steve

クラスパス例外のあるGPLは、ほとんどの用途でLGPLのように動作します。

これは、ライブラリのソースをオンデマンドで出荷できる必要があることを意味します。独自のソースを出荷できる必要があるという意味ではありません。静的にリンクする場合、ライブラリを置き換える方法を出荷する必要はありませんが、公開キーを使用して置き換えを防ぐことはできません。

6
Joshua