プログラミングメモ

ソフトウェア開発に関する技術メモ。

LGPLなライブラリを使ってアプリを開発し、配布したい

LGPLv3なライブラリFooを使ってアプリを開発した。
開発したアプリを配布したい。(開発したのはFooを利用したライブラリではなく、Fooを利用したアプリである。)
配布するときに、自分で開発したアプリと共に、そのライブラリ(foo.jar)も一緒に配布したい。
ライブラリFooは自分で改変していないものとする。

守らなければいけないことは何か。

GNU LGPLv3 日本語訳
GNU GPLv3 日本語訳


以下の理解であっているんだろうか・・・

用語との関係

LGPLの用語 本ケースでの該当物
『ライブラリ』(The Library) ライブラリFoo
『アプリケーション』(Application) 自分で開発したアプリ(自分で作った部分)
『結合された作品』(Combined Work) 自分で開発したアプリ(ライブラリFooとあわせた総体)=配布しようとしているモノ

守らなければいけないこと

  • 配布物に含まれるライブラリFooの改変を許す
  • (自分で作った部分も含め?)リバースエンジニアリングを許す
  • ライブラリFooを使っていること、ライブラリFooがLGPLv3で保護されていることを配布物内で目立つように告知
  • 配布物にGNU GPLとLGPLv3文書を添付
  • アプリ実行中にコピーライト告知を表示するときには、ライブラリFooの著作権の告知と、GNU GPL/LGPLv3文書の所在(配布物に添付された文書が配布物中のどこにあるかということ?)を表示

以上は、LGPLv3の4章冒頭の段落と、a),b),c),e)に対応。
d)については、ライブラリの結合の仕方に依存するものだが、JavaのJARによるライブラリ利用の仕組みはd-1)に該当するといえそう。JARを使う限りはd)はクリアできる。

4章e)の要求する『インストール用情報』の提供が必要かどうかが良く分からない。
提供が必要となる条件として、

またそのような情報が、『リンクされたバージョン』の改変されたバージョンと『アプリケーション』を再結合ないし再リンクすることによって作成された『結合された作品』の改変されたバージョンをインストール、実行するのに必要とされる限りにおいてのみである

とある。ライブラリFooの別バージョンに入れ替える場合に必要ならば(『インストール用情報を』提供せよ)、ということになる。別バージョンに入れ替えるにはfoo.jarを置き換えるだけでよく、それ以外に必要な情報はない。foo.jarの置き換え方法の説明を提供する必要がある、ということなのだろうか。


LGPLv3がGPLv3に対する差分(追加の許可)として定義されているため、foo.jarを一緒に配布することに関して、GPLv3の6章の条件を守る必要があると思われる。

  • ライブラリFooのソースの提供

提供方法についてはGPLv3の6章のとおり複数の選択肢がある。必ずしも配布物に含める必要はなさそう。

許可されていること

「守らなければいけないこと」を守る限りは何でも?
LGPLv4の4章

あなたは、『結合された作品』に含まれる『ライブラリ』部分の改変を事実上禁止したり、そのような改変をデバッグするためのリバースエンジニアリングを禁止したりしない限り、『結合された作品』をあなたが選択したいかなる条件の下でも複製、伝達して構わない。ただしその場合、以下をすべて行う必要がある:

したがって、以下は可能と思われる。

  • 有償で配布すること (GPLでも許可されている。(GPLv3 4章))
  • ライブラリFooの除く部分(自分で作った部分)について、
    • 再配布を禁止すること
    • ソースを非公開とすること
    • 改造を禁止すること

参考: The LGPL and Java - GNU Project - Free Software Foundation