GPLリンク例外GPLリンク例外(英: GPL linking exception)とは、GNU一般公有使用許諾 (GPL) を改変して作られる新しいライセンスの総称で、ライブラリコードを提供するソフトウェアのプロジェクトにGPLの全ての条項を適用せずに、他のプログラムがリンクすることを可能にするものである。リンクとは、実行可能なファイルを作成するためにライブラリのコードを使用するコードに接続する技術的な処理であり、コンパイル時または実行時に機械語コードを生成する際に行われる。リンク例外を適用しない場合、GPLコードとリンクするコードにも、自動的にGPLが適用される。 GNU 劣等一般公衆利用許諾契約 (LGPL) のバージョン3[1]は、同様なGPLの例外として作られたものである[2]。 ライブラリGPLで配布されるフリーソフトウェアのライブラリは、記述の仕方は様々だが、同様の例外条項を備えている。著名なものとして、GNU Guile[3]、GNATのランタイムライブラリ[3]、GNU Classpath[4]などがある。 コンパイラのライブラリもこの種のライセンスを使用することが多い。例えばGNUコンパイラコレクション[5]はGCCランタイムライブラリ例外を採用している。Free Pascalプロジェクトの全ライブラリも同様である[6]。 JavaClasspath 例外GNU Classpathプロジェクトは、GPLリンク例外 の一例であり、以下のようなライセンスを採用している(非公式訳)[4]。
OpenJDKOpenJDKも同様のライセンスを使用している。 2007年、サン・マイクロシステムズは、Java SEとJava EEのクラスライブラリのコードを、OpenJDKとして、GPL第二版ライセンスに Classpath リンク例外を追加したライセンスで公開し[7]、 サンのエンタープライズ向けサーバ製品GlassFish[8]およびJava統合開発環境のNetBeans [9]と同じライセンスを選択可能とした。 GNU 劣等一般公衆利用許諾契約 (LGPL)LGPLバージョン2.1 は単独で完結したライセンスだが、LGPLバージョン3はGPLを参照したものとなっている。 上述のGNU Classpathライセンスと比較すると、LGPLは最終的なプログラムの使用者により広範な自由が与えられることを保証するため、リンク例外に必要な要件を多くしている。特に、プログラムを新しいバージョンのLGPLライブラリに対してリンクすること、私的なリバースエンジニアリングやデバッグを許諾しなければならない。 LGPLが適用されたライブラリ中のクラスを継承してサブクラスを作る場合、それは関数呼び出しなどと同じような扱いとなる[10]。 関連項目参考文献
|