GNU Lesser General Public License ( LGPL ) は、フリーソフトウェア財団(FSF)が発行するフリーソフトウェアライセンスです。このライセンスにより、開発者や企業は、強力なコピーレフトライセンスの条件に従って自社コンポーネントのソースコードを公開することなく、LGPL の下でリリースされたソフトウェアコンポーネントを自社の (プロプライエタリ) ソフトウェアに使用および統合することができます。ただし、LGPL でカバーされているコンポーネントを修正する開発者は、修正版を同じ LGPL ライセンスの下で提供する必要があります。プロプライエタリソフトウェアの場合、LGPL の下で提供されるコードは通常、共有ライブラリの形式で使用され、プロプライエタリコンポーネントと LGPL コンポーネントが明確に分離されます。LGPL は主にソフトウェアライブラリに使用されますが、一部のスタンドアロンアプリケーションでも使用されています。
LGPLは、GNU一般公衆利用許諾書(GPL)の強力なコピーレフトと、 BSDライセンスやMITライセンスなどのより寛容なライセンスとの妥協案として開発されました。タイトルにある「Lesser(より少ない)」という言葉は、LGPLがエンドユーザーのソフトウェア使用における完全な自由を保証するものではないことを示しています。LGPLは、LGPLに基づいてライセンスされたコンポーネントの変更の自由のみを保証し、プロプライエタリなコンポーネントの変更の自由は保証しません。
このライセンスは当初GNUライブラリ一般公衆ライセンスと呼ばれ、1991年に初めて公開され、GPLバージョン2との互換性を保つためにバージョン番号2が採用されました。LGPLは1999年に公開された2.1ポイントリリースで若干の改訂が行われ、FSFがすべてのライブラリがこれを使用する必要はないという立場を反映して、GNU低級一般公衆ライセンスと改名されました。LGPLバージョン3は、GPLバージョン3に適用される追加の許可事項のリストとして2007年に公開されました。
GPLの「プログラムに基づく著作物」という用語に加えて、LGPLバージョン2では「ライブラリに基づく著作物」と「ライブラリを使用する著作物」という2つの追加的な明確化用語が導入されました。[ 4 ] LGPLバージョン3では、これらの用語が部分的に削除されました。
GPLとLGPLの主な違いは、後者では、GPLファミリーのライセンスまたはその他のライセンスでライセンスされているかどうかに関わらず、非(L)GPLプログラムと作品をリンク(ライブラリの場合は「使用」)できる点です。[ 5 ] LGPL 2.1では、非(L)GPLプログラムは、派生作品でない限り、任意の条件で配布できます。派生作品である場合は、プログラムの条件で「顧客自身の使用のための作品の変更、およびそのような変更のデバッグのためのリバースエンジニアリング」を許可する必要があります。LGPLプログラムを使用する作品が派生作品であるかどうかは、法的問題です。.so 、.dll 、または同様の媒体を介してライブラリに動的にリンクするスタンドアロン実行ファイルは、LGPLで定義されている派生作品ではないと一般的に認められています。これは、「ライブラリを使用する作品」の定義に該当します。LGPLバージョン2.1の第5項には次のように記載されています。
基本的に、「ライブラリを使用する作品」である場合、そのソフトウェアはLGPLでカバーされているプログラムの新しいバージョンとリンクできる必要があります。最も一般的に使用される方法は、「適切な共有ライブラリのリンクメカニズム」を使用することです。あるいは、ソースコードまたはリンク可能なオブジェクトファイルのいずれかが提供されている場合は、静的にリンクされたライブラリも許可されます。[ 6 ]
フリーソフトウェア財団のソフトウェアライセンス一覧には、多くのオープンソースライセンスとの互換性が説明されています。
LGPLの特徴の一つは、LGPLの下で受け取ったソフトウェアをGPLの下でサブライセンスする許可があることです[ 7 ](LGPLバージョン2.1のセクション3、およびLGPLバージョン3のセクション2オプションbを参照)。この機能により、LGPLでライセンスされたコードをGPLでライセンスされたライブラリやアプリケーションで直接再利用できます[ 8 ] 。
LGPL バージョン 3 は、GPL バージョン 2 と本質的に互換性があるわけではありません。ただし、後者を使用して、より新しいバージョンの GPL の使用を許可している作品は互換性があります。[ 9 ] GPLv2「またはそれ以降のバージョン」でリリースされた作品は、LGPL バージョン 3 ライブラリのコードと組み合わせることができ、組み合わせた作品全体は GPLv3 の条件に従います。[ 8 ]
すべての LGPL バージョンは、すべての GPL バージョンが互換性があるため、Expat ライセンスおよび X11 ライセンス (MIT ライセンス)と互換性があります[ 10 ] [ 11 ]。また、LGPL は GPL よりも多くの権利を与えます。
LGPL 3.0 は Apache License 2.0 と互換性があります。[ 12 ] LGPL 2.0 と LGPL 2.1 は Apache License 2.0 と互換性がありません。[ 12 ]ただし、ライセンス条件が LGPL-2.0-or-later または LGPL-2.1-or-later の場合は、LGPL 3.0 を互換性のあるものとして選択できます。
すべてのLGPLバージョンはApache Licenseバージョン1.0および1.1と互換性がありません。[ 13 ] [ 14 ]
以前の名称であるGNU Library General Public License は、 FSF がすべてのソフトウェア ライブラリは LGPL を使用し、プログラムは GPL を使用することを推奨しているという印象を与えた。1999 年のエッセイ「次のライブラリに Lesser GPL を使用すべきでない理由」で、リチャード・ストールマンは、LGPL は廃止されたわけではないが、GPL を使用することでフリー ソフトウェア開発者に有利になる可能性があるため、すべてのライブラリに必ずしも LGPL を使用すべきではないと説明した。[ 5 ]
このライセンスは、主にC言語またはそのファミリーで書かれたアプリケーションを対象とした用語を使用しています。Allegro Common Lispの開発元であるFranz Inc.は、Lispの文脈における用語を明確にするために、ライセンスの独自の序文を公開しました。[ 15 ] この序文付きのLGPLは、LLGPLと呼ばれることもあります。
さらに、Adaにはジェネリクスという特別な機能があり、 GNAT修正一般公衆ライセンス(GMGPL)の使用を促す可能性があります。これは、コード自体がGPLの対象となることなく、GMGPLでカバーされるユニットにリンクしたりインスタンス化したりすることを可能にする機能です。
C++テンプレートとヘッダーのみのライブラリは、 Ada のジェネリクスと同じ問題を抱えています。LGPL のバージョン 3 では、セクション 3 でこのようなケースに対処しています。[ 16 ]
LGPLライセンスのコードに含まれるオブジェクト指向クラスを、非(L)GPLライセンスのコードに継承することの妥当性について懸念が生じています。これについては、GNUの公式ウェブサイトで説明されています。