パスワードを忘れた? アカウント作成
533734 journal

beroの日記: ライセンス(ライトニングトークつづき)

日記 by bero

ライセンス

- 厳密なオープンソース(OSI認証ライセンス)の必要はない
-- 例:MAMEライセンス
-- 実質GPL + 「違法なゲームソフトと同一メディアで配布するのを禁じる」OSI定義に外れている
-- バザール開発等、「オープンソースのメリット」は全て当てはまる

- OSI認証ライセンスであれば(いちいち見なくてよいので)わかりやすい?
-- 反例:例外つきGPL(libgcc,libstdc++)
-- 反例:部分的にライセンスが異なる(gettext,ffmpeg)
-- rootのCOPYINGだけ見て判断するな

- "Notify Me"ライセンス
-- 連絡可能にしておく(ex.sourceforge.net)

- GPL or "Notify Me"
-- ex. winampプラグイン

- ライセンスを無視する人には無力
-- 中国、香港、タイ

----

(前フリ)さてここで、今まで「ソース公開」と言って、「オープンソース」と言わなかったことに気づいた人もいるかもしれない。

というのは、ソフトウェアプロジェクトが(勝手に)成長する条件は、
厳密な意味のオープンソース、いわゆるOSI定義のオープンソースである必要はない。

例えば、有名なMAMEというエミュレータがある。
このライセンスは、GPL同様のソース公開条項に加え「違法なゲームソフトと同一メディアで配布するのを禁じる」という項目がある。
そもそも「違法なゲームソフトを配布する」こと自体が(ほとんどの国においては)著作権侵害なので、同一メディアであれなんであれ「違法なことをするな」という自明なことを言っているに過ぎず、冗長な条項ではある。
何れにせよこういった「配布制限」があるため、OSI定義上のオープンソースには当てはまらない。
しかしMAMEはバザール開発によって大きく成長している。

「OSI認証ライセンスであれば(いちいち見なくてよいので)わかりやすい」
という意見もあるが、コレはむしろ誤解をまねきやすいと思う。特に問題となるのがGPLである。

「とりあえずGPLにしとくか」という第三者はともかく、本家GNU(FSF)は非常に戦略的にライセンスを決定しているので、よく見ると例外つきGPLだったりすることが多い。そして例外つきGPLは(例外のつけ方次第では)LGPLより自由度が高い。
一見してGPLだからといって、(ソース公開できない用途やNDAコードと混ぜる用途等に)使えないと判断するのは早計である。もちろん安全側に振るという見解もあろうが、使えるものを使えないと判断して見落とすのはもったいない。

例外つきGPLの例としては、gccに付属しているランタイムライブラリであるlibgccやC++ライブラリのlibstdc++などがある。
「Q: (GPLの)gccをプロプラ目的に使えますか?」というのはFAQといってもいいが、自作ソースをコンパイル(してオブジェクトファイルを生成)するのはGPL 0項により常に可能であり、ランタイムライブラリをリンク(して実行ファイルを生成)するのはlibgccやlibstdc++の例外条項により可能となるので、「使える」という答えになる。
(余談だがNetBSDではlibc内にlibgcc互換ライブラリを用意しているようだ。よって(Cでコンパイルした)実行ファイルはpureBSDになる。たぶん)

また、部分的にライセンスが異なるものもある。
例:gettextはlinux等で一般的に使われている国際化ライブラリ/周辺ツールである。
コレはソースアーカイブは一つになっていて、COPYINGにはGPLと書いてあるが、よく見ると
国際化データを作成するツール(msgfmt等)
自作プログラムから国際化データを利用するライブラリ(libintl)
がセットになっている。
libintlディレクトリ(バージョンによってはgettext-runtimeディレクトリ)にはCOPYING.LIBがあって、この配下はLGPLである。
したがって自作プログラムにlibintlをリンクして国際化対応しても、GPLは伝播しない。

例:ffmpegは様々な動画・音声形式(codec)に対応した再生・変換ライブラリである。
それ自体にも再生・変換プログラムが付属するが、他の再生・変換プログラムからライブラリとして使われることも多い。
大部分はLGPLだが、特定の動画形式は他のライブラリからGPLコードを取り込んでいるので、全体としてはGPLである。
しかしコンパイルオプションで特定形式を外すことによってGPLにもLGPLにもなりうる。

これらのライセンスの詳細はドキュメントをよく読まないと気づかないことがある。libgccやlibstdc++にいたってはソースコードの先頭に書いている。アーカイブを展開したルートディレクトリにあるCOPYINGだけ見て判断したり、そういった紹介を鵜呑みにしてはイカンのである。
結論としては「OSI認証ライセンスであろうがなかろうが、ライセンスはよく読め」ということになる。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー

読み込み中...