3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

オープンソースのライセンスではまった GPL,LGPL編

先日自分が所属しているプロジェクトでアプリケーションにオープンソースのライブラリを使っていることが発覚しました。

オープンソースというと無料で使えるというイメージがあるみたいなので、特に何も考えずにOSSライブラリをアプリケーションに組み込んでしまっていたパターンのようです。(この時点ではライセンスで要求されてることをしてなかったので、ライセンス違反となっていました。)

これを機会にオープンソースのライセンス、特にGPLLGPLについていろいろ調べてみました。

まず、今回のプロジェクトで使っていたライブラリの一つが ZIP ファイルの圧縮・解凍を行う SharpZipLib というライブラリです。

このライブラリは GPL (GNU General Public License) が適用されています。

まず GPL ライセンス条文の原文はhttp://www.gnu.org/licenses/gpl-2.0.html(GPL 2.0)にあります。

といっても、これは英語なのでさっぱしです。ということで、日本語訳がhttp://sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_General_Public_Licenseにあります。

まあ、日本語訳よんでも私にはさっぱしでしたが。。

というとこで、分かりやすく説明してるサイトがないかと探したところ、@IT 訴訟が増えている!? OSSライセンス違反@IT OSSライセンスが求める条件とは?で分かりやすく解説されてました。

特に GPL の特徴としては、改変しなくとも、再頒布する場合、その OSS 自体とその OSS の二次的著作物にソースコードの開示が要求されること、そして、二次的著作物も GPL ライセンスを適用しないといけないことです。

(ちなみに、再頒布せず、自分が使うためにOSSを改変したり利用したりする場合は、GPLに従わなくていいようです)

厄介なのは二次的著作物(派生著作物)にも GPL が適用されてしまうということですね。

たとえば、企業が商用アプリを作って、その中に GPL をコードを組み込んでいると、その商用アプリも GPL になるという感じでしょうか。GPL は商用可能なので、販売してもいいんでしょうが、結局その商品ソフト自体のコードを開示しないといけなくなるので、なかなか簡単にはできないと思います。

さらに、GPL なライブラリへのリンクが2次的著作物になるというとこも見逃せません。

静的リンクは2次的著作物になると断言できるようですが、動的リンク(DLL呼び出しとか)は、グレーっぽいです。Wikipediaによると、「日本国著作権法第2条によれば、二次的著作物は原著作物の「翻案」を要素としているため、GPLのライブラリーとGPLでないプログラムが動的にリンクしても、翻案を経ていない以上ライセンス上の問題は生じない。」とは書いてるようです。

まあ、いずれにせよ GPL のソフトを動的リンク以外で組み込んで再頒布するときには注意が必要ですね。

ちなみに、SharpZipLib は GPL ですが、配布サイトのLicense項を見る限り(英語読めないので自動翻訳)では、そのまま独立したライブラリとして使うなら呼び出す側は GPL 感染しないという風に解釈しました。

また、GPL も最近(といっても2年前)に Ver3.0 が出たみたいです。

おもな点は 2.0 と同じですが、いくつか変更されてるみたいですね。

特徴については、CNET FSF、GPL 3をリリースで取り上げられています。(なんかこの3.0版は Linuxの父 Linus が嫌っているためLinux陣営では微妙らしいです)

もうひとつ今回のプロジェクトで使っているOSSのライブラリは ZedGraph というグラフを書くライブラリです。

このライブラリのライセンスは LGPL ですが、これは GPL を少し緩くした感じのようです。

原文はhttp://www.gnu.org/licenses/lgpl.html、日本語訳はhttp://sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_Library_or_Lesser_General_Public_Licenseです。

特に2次的著作物に対する扱いが変更されており、GPL のようにソース開示ではなくリバースエンジニアリングを許可することに変わっているようですね。

で、ここでもはやり2次的著作物の問題が出てくるわけですが、いろいろ見てると動的リンクは派生物とはならないという意見が多いです。

ただし、いろいろ制約はついてますね。

LGPL ライブラリの著作権表示や LGPL ライブラリのソースを公開する点などです。

詳しくは、LGPL バージョン2.1についてのメモソフトウェアのライセンスのメモで箇条書きであげられてました。

ということで、企業としては GPL よりかは LGPL の方が使いやすいと思います。

で、ZedGraph ライブラリの場合、配布サイトのライセンスをまたもや自動翻訳で解釈した限りでは、動的リンクの場合は LGPL 5節の制約は問題ないと書いてるみたいですね。

ZedGraph の作者も LGPL 5項の

「しかし、「『ライブラリ』を利用する著作物」に『ライブラリ』をリンクして実行形式を作成すると、それは「『ライブラリ』を利用する著作物」ではなく、『ライブラリ』の派生物となる(なぜならそれは『ライブラリ』の一部を含んでいるから)。そこで、実行形式はこのライセンスで保護される。第6節ではそのような実行形式の頒布の条件を述べる。 」

という部分はことをややこしくするって書いてますね。

ということで、ZedGraph について動的リンクとして使い、著作権表示と、オリジナルの ZedGraph のコードをパッケージに添付して配布することとにしました。

いやー、なかなかOSSのライセンスは難しいです。。

後は、英語が読めるようになりたいですね。

参考:

ライセンスはややこしい~GPLと動的リンク GPLの動的リンクについての考察です。「

GPLに限らずラインセンスというものはややこしい。この記事書くだけで相当時間つぶしちゃったよ。」とありますが、同感です・・・

第2回 オープンソースライセンス事情を俯瞰する

いまさら人に聞けないGPLの基礎 ここでもは主にGLPについて取り上げられてますが、GPLライブラリへの動的にリンクに関しては「結局のところその国の著作権法に大きく左右される」という有識者の意見が載ってました。