2013-03-16

Boostのcstdint.hppとendian.hppとlimits.hppにライセンス問題発覚

Boost mailing page: [boost] License of endian and limits in Boost detail

boost/cstdint.hpp, boost/detail/endian.hpp, boost/detail/limits.hppに以下のコメントの存在が発覚した。

/*
 * Copyright (c) 1997
 * Silicon Graphics Computer Systems, Inc.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  Silicon Graphics makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided "as is" without express or implied warranty.
 */

なんとSGIライセンスである。この許諾では、著作権表記と許諾表記を、ソフトウェアのドキュメントに記載しなければならない。これはBoostライセンスと非互換である。

プログラムのバイナリが著作権表記を出力しなければならないとか、プログラムのドキュメントに著作権表記を記載しなければならないというのは、ソフトウェアのライセンスとしては、かなり厄介なものである。ソフトウェアが使うライブラリは無数にあるので、どのライブラリがどのような著作権表記や許諾表記を必要とするかをすべてまとめあげて正しく実装しなければならない。だからこそBSDライセンスは修正されたし、Boostライセンスは著作権表記を求めない。現代の許諾的なオープンソースライセンスは皆避けている条項である。

しかし、cstdint.hpp、endian.hpp、limits.hppは、たとえばconfig.hppからもincludeされているという、相当に基本的なソースコードであり、Boost全体に影響する。

メールでは、当時コードを書いた人間が多数出てきて議論している。

limits.hppを書いたJohn Maddockによれば、当時はまだBoostライセンスではなく、SGI風ライセンスを使っていたのだという。ほとんどはBoostライセンスに移行したが、どうしても移行できなかった箇所がいくつか残ったらしい。

limits.hppについては、問題のソースコードごと単に消してしまってかまわないとしている。というのも、もはやそのコードに依存した当時のシステムは、どうせ今のBoostをまともに動かすことはできないだろうからとのこと。

endlian.hppについては難しい。その内容は長年のBoost利用者やバグ報告者による知識の積み重ねである、というか、なんでSGIライセンスなのかよくわからない。John Maddockによれば、Caleb Epsteinがコードをlimits.hppからコピーしてきたから、SGIライセンスもその時くっついてきたのではないかとしている。

そして議論は、この問題を解決するためには、クリーンに再実装するしかないという意見に流れている。あるものがコードを読んで言葉で説明して、別人がコードを書けばどうか。今から既存のコードは読まず独立してエンディアンについて調べて実装しようと申し出た者もいる。ただし、それには時間がかかる。

13 comments:

hoge said...

> プログラムのドキュメントに著作権表記を記載しなければならないというのは、ソフトウェアのライセンスとしては、かなり厄介なものである。(中略)。だからこそBSDライセンスは修正されたし

ダウト。修正BSDライセンスもドキュメントに著作権表記を記載しないといけない。

江添亮 said...

あ、そうでしたか。

Anonymous said...

結局根本的な主張がコメントであっさり否定されて趣旨がよくわからんのですが。単にboostのライセンスと互換性がないというだけ?

江添亮 said...

現状では、cstdint.hpp、endian.hpp、limits.hppを使うプログラムは、ドキュメントに著作権表記と許諾表記をいれなければならないということです。

ほとんどのライブラリは該当するのではないかと。

Anonymous said...

著作権表記や許諾をいれろというライセンスがけしからんという主張なのか単にboostライセンスと互換性がないのでboost開発者が困ったという話なのかという質問なのですが。

前者を問題にするというのならかなりびっくりする主張ですが後者だというのならエントリを書き直したほうがいいのでは。

Anonymous said...

この人はライセンスについてあんまり気にしないみたいだから突っ込んでも無駄だよ。
「オープンソース(笑)」とか書いてる記事もあったし。

Anonymous said...

フリーソフトウェアのエバンジェリスト気取りで滅茶苦茶なこと書いておいてツッコミは無視とか真面目にやっている人に迷惑かけてる自覚ないね。

Anonymous said...

結局どっちだったんですか?

Anonymous said...

BSD・MITライセンスのコードを使用したソフトはきちんと一つ一つライセンスに従ってドキュメントに著作権表示等を記載していることも知らないのかと。

BSDライセンスの話は4項BSDの宣伝条項の話を書いてしまったんだとわかるんだがその前後も合わせるとちょっと勘違いで済まない致命的なミスなんだよねえ。この人のライセンスの話は聞く価値なしと思われても仕方がない。

Anonymous said...

この話題はもう無視を決め込んじゃうんでしょうか
自由ソフトウェア主義者として重要なところだと思うのですが

江添亮 said...

別に特定の自由ソフトウェアライセンスがいい悪いではなく、極端に許諾的なBoostライセンス一本が売りのはずのBoostで、SGIライセンスが残っているのが問題だと書いたのですが。

Anonymous said...

互換性のないライセンスのコードが混入していてboost開発者が困ったという話だったらエントリを書き直すべきだと提案しているんですがね。他のコメントもそのこと自体にケチをつけようとはしていない。

「プログラムのバイナリが著作権表記を出力しなければならないとか…」の節の存在のせいで主張が滅茶苦茶だしフリーソフトウェアへの理解も疑わしいと思われているから何とかしろと言われているのがわかりませんか?

Anonymous said...

Boostってなんか恐ろしいほどにSGIライセンスがしみこんでいるようですが、今この問題ってどうなっているんでしょう。
https://groups.google.com/forum/#!topic/boost-devel-archive/tKj7xITjlhg
There are actually many hits for "Silicon Graphics" all over Boost.
boost/container/deque.hpp
boost/container/string.hpp
boost/detail/algorithm.hpp
boost/detail/binary_search.hpp
boost/interprocess/streams/bufferstream.hpp
boost/interprocess/streams/vectorstream.hpp
boost/intrusive/rbtree_algorithms.hpp
boost/multi_array/algorithm.hpp
boost/multi_index/detail/ord_index_node.hpp
boost/multi_index/detail/ord_index_ops.hpp
boost/multi_index/ordered_index.hpp
boost/tr1/detail/config_all.hpp
boost/wave/util/flex_string.hpp