カテゴリ: ライセンス

LGPL3.0がすごい

ライセンスについて色々と調べていたところLGPL3.0がとんでもなくすごいライセンスだということに気づきました。LGPL3.0がいかにすごいかを紹介したかったのでちょっと記事を書きます。あと、ここに書いてることはすべて鵜呑みにしないでください、あくまで参考程度にとどめておくようにお願いします。

GPL

オープンソースライセンスとして有名なのは、「GPL」ではありますが、GPLはGPLとして配布されているソフトウェアもしくはライブラリを使用した場合はそのすべてのソフトウェアやライブラリをGPLとして公開してね、という超強力なコピーレフトを備えている恐ろしいライセンス。

オープンソースと聞くと、この超強力なコピーレフトが嫌な人も多いと思う。自分もそうで、このGPLのせいでオープンソースのことをちょっと食わず嫌いしていた時期もありました。

GPL汚染

ソフトウェアをオープンソースとしてGPLを使用するのは別にいいとは思うのですが、それがライブラリだとすると話が変わってきます。ライブラリ、つまり、モジュールです。ソフトウェアにそのライブラリを組み込んで機能の一つ、いわゆる一部分としてだけ使いたいのに、GPLだとソフトウェアすべてのソースコードを開示しなくてはならないという、オープンソース界隈ではない人にとっては嫌な存在になるわけで。

LGPL

そこで、そのGPL汚染を解決するために LGPLっていうのができた。これだとライブラリとして使用する分には、ソースコードを公開しなくてもいいよ。ただ著作権表示とか免責事項だけは明記してねっていうのがLGPLで、これを使えばソフトウェア全体としてソースコードを開示する義務を追わなくてすむので、オープンソース界隈ではない人にとっては大喜びのライセンスだったりします。

あと、LGPLとして配布されていたソースコードを改変して使用したいという場合はその改変した部分のソースコードだけを開示すればOK。ソフトウェア全体のコードを開示しなくてもいい。

しかしこれにもちょっとした問題があって、論争がまた起きてる。

LGPLで配布されているものは、DLLとかSO形式のものでダイナミックリンクしないとだめだ
アプリケーションの内部に組み込んだら違反だ!ソフトウェア全体のコード開示しろ!
いや、同じファイルにまとめたとしても、ちゃんと別々になってるし、そもそもソースコード改変してないしソフトウェア全体とは別物だし開示しなくてもいいだろ
などなど・・・。いろんな考え方があります。

そこでLGPL3.0

GNU 劣等一般公衆利用許諾書 (GNU Lesser General Public License)
http://sourceforge.jp/magazine/07/09/05/017211

このページがGoogle検索にひっからなかったのでちょっと探すのに苦労したのですが、sourceforgeでオープンソースプロジェクトを作成する場合は、このライセンスが選べるようになっていたりします。

このライセンスに書いてあることを一部抜粋すると、

5. 結合されたライブラリ
あなたは、『ライブラリ』を基にした作品であるライブラリ機能を、『アプリ ケーション』ではなく、かつ本許諾書で保護されていない他のライブラリ機能 と一緒に、単一のライブラリ内で並置し、そのような結合されたライブラリを あなたが選んだ条項に従って伝達することができる。ただしその場合、以下の 両方を行わなければならない。
結合されたライブラリに、他のいかなるライブラリ機能とも結合されて おらず、本許諾書の条項に従って伝達される、元のままの『ライブラリ』を基 にした作品のコピーを添付する。
その一部が『ライブラリ』を元にした作品である結合されたライブラリ に、対応する結合されていない形式の同じ作品がどこで見つかるかを説明した 目立つ告知を載せる。

これを自分の解釈なりに言い表してみると(間違ってるかも)

あなたがLGPL3.0のライブラリを使用したソフトウェアで、そのライブラリを動的リンクによって外部ファイルとして扱うのではなく、異なるライブラリと一緒にまとめて一つのファイルにし利用する場合は以下のルールに従わなければならない
一つのファイルとしてまとめられたファイルに含まれるLGPL3.0のライブラリを、異なるライブラリと完全に分離された状態で、元のままのライブラリの形(改変しない)として本来のインターフェースによって使用すること
一つのファイルとしてまとめられたファイルの中に含まれるLGPL3.0のライブラリのまとめらてない状態のライブラリがどこにあるかを示したURLまたはファイル名の説明書きを行うこと

となった。つまりこれって、前者の問題を解決してることになるんじゃないだろうか。うまく読み進められてないけど、とにかくLGPL3.0はすごいと思った。