ちょっとLGPLを勉強する

概要

dp.syntaxhighlighterを改変するに辺り、名前同じだと紛らわしいよなぁと思い、改変しようかと思ったのだが、そういえばLGPLをあまり真面目に勉強していなかったので調べておくことにした。
GPLでもLGPLでもBSDでもいいのだが、改変したライブラリの名前って皆どうしているのだろうな。

LGPL

概要

例によってWikiPediaが一番わかりやすい。
http://ja.wikipedia.org/wiki/LGPL


さらなる情報はGNUへどうぞ。
http://www.gnu.org/licenses/lgpl.ja.html

解釈してみる
  1. dp.syntaxhighlighterはLGPLなので、これを改変したAはLGPLでなければらない。
  2. Aはライブラリでなければならない
  3. Aには改変したということ、改変した日時を、Aに記述しなければならない
  4. dp.syntaxhighlighterのライセンスを改変しようとした場合、dp.syntaxhighlighterはライセンス改変の許可をAの作者にとらなければならない
  5. AはJavaScriptのライブラリなので、一般的な使用形態では動的ライブラリになり、ライブラリを使用したプログラムBにソースコード公開の義務は発生しない
  6. ただし、Bのリバースエンジニアリングを禁止してはならない
  7. なお、なんらかの理由でAを静的リンクして使用した場合、Bのソースコード公開を拒否してはならない

情けないが「複製、頒布、改変に関する条件と制約」の「6」はよくわからなかった。
LGPLライセンスのライブラリをリンクしたソースは、それが動的リンクか静的リンクかを問わず「このライブラリを使ってますよ」と載せなければいけないと書いてあるのか?
いずれにせよscriptタグを使っている以上大丈夫なのか?というかスクリプトの場合どうすればいいんだ?同じディレクトリにreadmeでも置いとけばいいのか?
WWWのソースコードって、そもそもどっからどこまでなんだ?
正直、一人では理解に限界がありそう。専門家のいる会合にでも出れればいいのだが、ベトナム行ってしまうし難しそうだな。


あと、「複製、頒布、改変に関する条件と制約」の「7」だが、Aと別のライブラリCを結合した新しいライブラリDを作る事は可と記載されている。この際、CがLGPLでなくてもいいとのこと。
で、この場合、Aのオリジナルのコピーと、Cのオリジナルのコピーを、それぞれ結合されていない形で入手できる場所をDで明示しなければならない。
また、DのAとCから分離した状態のソースコード、これを仮にEとしよう。EをDに添付する(入手できる形で出しておけばいいのだろう)必要があり、EのライセンスはLGPLにする必要がある・・と書いてある気がするのだが、ここがよくわからなかった。AがLGPLでCがGPLだったらどうすりゃいいんだろ。

まとめ

こんなライセンス文書を読ませる手間を強制させるだけで万死に値すると考えたりもするが、利用させてもらっている立場だからちゃんと理解しておかなければなるまい。
ま、要するにC(間違えた)AはLGPLで公開して、かつdp.syntaxhighlighterのオリジナルの場所を明記して、ライブラリの名前を変更して、冒頭のコメントに改変した旨と改変した日時を入れておけばいいのだろう。
で、利用している旨はscriptタグ使っているからわかるだろ、という事で可、C(ここも間違え)Aの単独配布はそもそもscriptタグのsrcで指定する限り問題なし、という解釈で大丈夫そうだ。


ライセンス改変の許可だけ「そんなもん勝手にやれよ」って感じがして面倒くさいが、そんな事態はまずないだろうから無視してしまうとする。
許可を得なければいけない=許可申請を受け付ける体制は作っとけ、と言われている気がして嫌だね。
GNU的には要するに「一度公開したらライセンスは変えるな」と言ってるんだろうけど、ならはじめからそう書いてくれたらよかったのに。法的な問題で難しかったりするのかね。