2010/09/22

Reading LGPL v2.1

http://www.gnu.org/licenses/lgpl-2.1.html

「java-ja 第1.9.2回 チキチキ ライセンスって何ですか?」ってのに参加してみて、LGPL v2.1 を改めて読み直す気になった。御存知の通り、LGPL および GPL の最新バージョンは 3 である。なぜ今 version 2.1 なのかといえば、これが LGPL v3 を理解する助けになるからである。

僕の理解を要約すると以下の通りである

- 「ライブラリを改変して再配布する」場合はGPLまたはLGPLで公開する必要がある
- 静的リンク、または(LLのような)リンク不要なライブラリの組み合わせを再配布する場合は、ソースコードまたはオブジェクトコードを公開する必要がある
- 動的リンクの場合は組み合わせたものを同時に配布しない限りLGPLの埒外である。同時に再配布する場合は 6. にある諸条件を守ること(ライブラリと組み合わせたソフトのソースコードを公開する必要はない)

----

以下はそのメモであるが、僕は法律家ではないので、勝手な個人の解釈であることをお断りしておく。また、本エントリの内容にはいかなる保証もしない。

----

- Preamble(はじめに)の部分

殆どはLGPL v2 の哲学についての宣言的な部分である。一応ちゃんと読もう。しかし、「ライブラリを基にした著作物」と「ライブラリを利用する著作物」の区別を述べた以下だけは滅茶苦茶重要である。日本語訳の該当部分を引用する。

・「ライブラリを基にした著作物」と「ライブラリを利用する著作物」の違いによく注意してください。前者はライブラリから採られたコードを含んでおり、一方 後者は実行するためにライブラリと結合されなければならないということを意味しています。

----

- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION(複製、頒布、改変に関する条件と制約) の部分

0. 「ライブラリ」と「ソースコード」の定義、およびこのライセンスの適用範囲について述べている。『複製や頒布、改変』に適用されることが重要

1. コピーの配布条件。以下の二つを両方満たす必要がある

-- 適切な著作権表示と無保証であることを目立つよう適切に記載する
-- LGPL v2および無保証に触れた告知すべてをそのまま残す。つまり、LGPL v2 全文の複製物を『ライブラリ』と共に頒布する

2. 「ライブラリを基にした著作物」の配布条件。ライブラリを改変したり、ライブラリを取り込んだコードを作成した場合すべてに当てはまる。以下をすべて満たす必要がある

-- 上記 1. を守ること
-- 改変されたものをソフトウェアライブラリの状態にすること
-- 改変されたファイルに改変した旨を示すこと
-- LGPL v2 を適用すること
-- 改変した部分がアプリケーションのコードを含んでいた場合、それがなくても動くように努力すること

3. 「ライブラリ」には GPL を適用してよい

4. ライブラリ単体のオブジェクトコードの配布条件。以下の二つを両方満たす必要がある。
ライブラリとリンク・組み合わせ・結合された結果生成されるものについては、5. と 6. で述べられている

- 上記 1. と 2. の条件を両方満たすこと
- ソースコードを添付するか、そのありかを示すこと

5. 「ライブラリを利用する著作物」の保護範囲

ライブラリとリンクすることによって動作するプログラムは「ライセンスを利用する著作物」と呼ばれ、それ単体では LGPL は適用されない。しかし、LGPLが適用されるプログラムと組み合わせて **一緒に** 著作物を再配布する場合は、静的・動的リンクを問わず 以下 6. の適用を受ける

ただし、以下の場合は除く

- ライブラリの「数字のパラメタやデータ構造のレイアウト、アクセス機構または小さなマクロや小さなインライン関数(長さが 10行かそれ以下)のみ」を利用している場合

※この条項だけだといかにもリンカがリンクした場合のみに以下の 6. が適用されるかのように読めるが、6. では「結合(Combine)」とも書いているので、それに限らない。つまり、LGPLな PHP のライブラリをアプリケーションと混ぜる場合も以下の 6. が適用される(と勝手に解釈している)

6. ライブラリと結合(リンク、または組み合わせた)した著作物の配布条件

LGPLで保護されたライブラリと組み合わせて著作物を一緒に配布する場合には、(静的・動的リンクであるかどうかを問わず)以下をすべてを守る必要がある

- 配布する著作物の改変およびリバースエンジニアリングを禁止してはいけない
- ライブラリが著作物の中で用いられていることと、それがLGPLで保護されていることを告知する
- LGPLライセンスのコピーを一部提供する
- 著作物が実行時に著作権表示を表示するならば、その中にライブラリ』の著作権表示を含め、そのうえでこのライセンスのコピーの在処を示す参照文も含める

かつ、以下のうちの **いずれか** を満たす必要がある

-- ライブラリの(改変点をすべて含めた)完全なソースコードか、オブジェクトコードを出すことで、実行形式が再生成できるようにする。(静的リンク、またはLLのライブラリとの組み合わせの場合はここが該当する)
-- 著作物に上記で指定されたものを、手数料と引き換えに提供することを書面で知らせる
-- 上記で指定されたものへの適切なアクセス手段を提供する
-- 上記で指定されたものをユーザーに適切に送ったか、受け取っていることを確認する
--『ライブラリ』とのリンクに適切な共有ライブラリ機構を用いる(動的リンクの場合の配布条件)

「ライブラリを利用する著作物」は、それから実行形式を複製する際必要なデータまたはユーティリティプログラムをすべて含めた形で頒布されなければならないが、その中に、実行形式が実行されるオペレーティングシステムの主要な部分(コンパイラやカーネル等)と通常一緒に(ソースかバイナリ形式のどちらかで)頒布されるものすべてを含んでいる必要はない

7. ライブラリを基にした著作物(ライブラリから採られたコードを含んだもの)と組み合わせた場合の配布条件

- それぞれを分離した配布を許可すること
- ライブラリを基にした著作物の完全なコピーを同じ条件で添付する
- ライブラリを基にした著作物であるという事実と、それのありかを知らせる

8. このライセンスに定めた行為以外の複製や改変、サブライセンス、リンク、あるいは頒布を禁止する

9. このライセンスによって保護されたライブラリを改変、再配布することは、このライセンスを受け入れたことと同等と見なす

10. コピーレフト規定。再配布するたびに、それを受け取った人はこのライセンスで得られる権利と同等の権利を得る(強制する必要はない)

11. 特許侵害があった場合でもこのライセンスの制約は免除されない。

12. 他の著作権や特許によってこのライセンスと矛盾する制約を加えている地域を排除して配布できる

13. FSF は新しい LGPL を発表できる。その場合でも、バージョン指定か、or later を選択できる

14. LGPL と矛盾するライセンスを持つソフトと統合したい場合は、作者に連絡して許可を求めること

15. 16. 無保証について

2010/09/01

Tweet This! button on blogger

http://thoughtsomething.blogspot.com/2009/01/understanding-blogger-template-2.html

Blogger の欠点の一つは、何か細かいカスタマイズを加えようと思ったときに Blogger のXHTMLにある名前空間の内容を多かれ少なかれ把握しないといけない点である(本当に把握したいと思った暇人は上記のリンクを見ると良いよ!)。このブログには はてなスターはてなブックマークDelicious のボタンがついているが、はじめのボタンをつけるときは御多分に漏れずやたら苦労した。

Tweet This! ボタンを付けるには、以下の手順を踏むと良い。
※ クラシックテンプレートでは動作しないので注意!

1. blogger にログインする
2. ページ右上の「デザイン」リンクをクリック
3. 「HTMLの編集」リンクをクリック
4. 「ウィジェットのテンプレートを展開」のチェックボックスにチェックを入れ、テンプレートの全ソースを展開する
5. 以下のタグを適度に埋め込む。style や img タグの src 部分、そしてtwitterへのリンク先の文言は適度に調整すると良い

<a expr:href='&quot;http://twitter.com/home?status=「&quot; + data:post.title +
&quot;%20&quot; + data:post.url + &quot;」%20via%20@mumumu&quot;'><img alt='Tweet This!'
src='http://twitter.com/favicon.ico' width='20' height='20' style='margin:0;padding:0;border:none;' title='Tweet this!'/></a>
6. 「プレビュー」ボタンを押してエラーが出ないことを確認したら、「テンプレートを保存」をクリックする

※ 大した内容なんてありゃしないのに Tweet This! ボタンをつけようと思ったのはこの記事がきっかけである。

[ Update September 20th 16:06 JST by m ]

img タグに width と height が指定されていなかったのでアイコンが巨大になっていたのを修正

Naoya Ito left Hatena

http://d.hatena.ne.jp/naoya/20100831/1283249089

はてなCTOの伊藤さんが退職された。暫くは「えええー」という驚きだけしかなかった。

『退職の理由を聞かれます。しかし、これといって"これが退職の理由"という主だったものはありません。』と述べておられるが、はてなが成長して「組織になった」(これにも複数の意味が含まれるとは思うが)という部分が一番大きいんだろうなと勝手に思い、大規模システムの屋台骨を支えてきたエンジニアが様々なところから去っていく理由に思いを致す次第である。

これまで積み上げたものをひっ下げて彼がどこに向かうのか、非常に楽しみだ。自分にとって心からそう思える人は多くない。

ともあれ、本当にお疲れ様でした。