GPLリンク例外

GPLリンク例外（）とは、GNU一般公有使用許諾 (GPL) を改変して作られる新しいライセンスの総称で、ライブラリコードを提供するソフトウェアのプロジェクトにGPLの全ての条項を適用せずに、他のプログラムがリンクすることを可能にするものである。リンクとは、実行可能なファイルを作成するためにライブラリのコードを使用するコードに接続する技術的な処理であり、コンパイル時または実行時に機械語コードを生成する際に行われる。リンク例外を適用しない場合、GPLコードとリンクするコードにも、自動的にGPLが適用される。

GNU 劣等一般公衆利用許諾契約 (LGPL) のバージョン3GNU Lesser General Public License, Version 3. 2007-06-29. Retrieved on 2007-10-19.は、同様なGPLの例外として作られたものであるGuide to the second draft of LGPLv3. 2007-04-03. Retrieved on 2007-05-10.。

 ライブラリ 
GPLで配布される自由ソフトウェアのライブラリは、記述の仕方は様々だが、同様の例外条項を備えている。著名なものとして、GNU GuileStallman, Richard. Various Licenses and Comments about Them. Free Software Foundation. Published on 2007-05-17. Retrieved on 2007-05-18.、GNATのランタイムライブラリ、GNU ClasspathClasspath::License. Free Software Foundation. 2007-04-23. Retrieved on 2007-05-18.などがある。

コンパイラのライブラリもこの種のライセンスを使用することが多い。例えばGNUコンパイラコレクションはGCCランタイムライブラリ例外を採用している。Free Pascalプロジェクトの全ライブラリも同様である。

Java
 Classpath 例外 
GNU Classpathプロジェクトは、GPLリンク例外 の一例であり、以下のようなライセンスを採用している(非公式訳)。

ClasspathはGNU一般公衆ライセンスに以下の確認事項と特別な例外を加えた条項の元で配布される。

本ライブラリと他のモジュールを静的または動的にリンクする行為は、本ライブラリに基づく結合著作物の作成となる。そのため、GNU一般公衆ライセンスの条項が結合物全体に適用される。

特別な例外として、本ライブラリの著作権者は、独立したモジュールと本ライブラリをリンクして実行可能プログラムを生成する許可を、それらの独立したモジュールのライセンス条項に関わらず与え、またリンクした独立した各モジュールのライセンス条項を満たした上で、あなたが選んだ条件の元で結果の実行可能プログラムを複製および配布する許可を与える。独立したモジュールとは、本ライブラリの派生物でもなく、本ライブラリを基にしてもいないモジュールである。もし本ライブラリを改変した場合、この例外をあなたの版にまで拡大してもよいが、そうする義務はない。もしあなたが望まないのであれば、この例外の記述をあなたの版から削除せよ。

従って、幅広い種類のアプリケーションやアプレットの実行・作成・配布にこれを利用できる。GNU Classpathが仮想マシンやJava言語のコンパイラやJavaプログラミング言語で記述されたプログラムの核となるクラスライブラリとして無改変で使われる場合、それらのプログラムの配布用ライセンスに直接的には影響を与えない。

 OpenJDK 
OpenJDKも同様のライセンスを使用している。

2007年、サン・マイクロシステムズは、Java SEとJava EEのクラスライブラリのコードを、OpenJDKとして、GPL第二版ライセンスに Classpath リンク例外を追加したライセンスで公開し 、
サンのエンタープライズ向けサーバ製品GlassFishGlassfish license. 2008-03-27. Retrieved on 2008-03-27.およびJava統合開発環境のNetBeans
Netbeans license. 2008-03-27. Retrieved on 2008-03-27.と同じライセンスを選択可能とした。

 GNU 劣等一般公衆利用許諾契約 (LGPL) 
LGPLバージョン2.1 は単独で完結したライセンスだが、LGPLバージョン3はGPLを参照したものとなっている。

上述のGNU Classpathライセンスと比較すると、LGPLは最終的なプログラムの使用者により広範な自由が与えられることを保証するため、リンク例外に必要な要件を多くしている。特に、プログラムを新しいバージョンのLGPLライブラリに対してリンクすること、私的なリバースエンジニアリングやデバッグを許諾しなければならない。

LGPLが適用されたライブラリ中のクラスを継承してサブクラスを作る場合、それは関数呼び出しなどと同じような扱いとなるDavid Turner. 「LGPLとJava」. 2015年5月5日閲覧。

 関連項目 
 GNAT Modified General Public License
 OpenSSL 例外
 自由ソフトウェアライセンス

 参考文献 

Category:GNUプロジェクト
Category:オープンソースライセンス
Category:コピーレフトソフトウェアライセンス