バグが起きた仕組み
結構な人が「バグでそんなことが起きるの?」と考えたようだ。「manページのマニュアルを差し替えるなんて人為的にやらなきゃ起こり得ない」という思考だろう。そう考える前にひとつ事実を知ってほしい。そもそもMySQLのソースコードとmanページはもともと別個に管理されているということを。どれでもいいので以下のページに記載されてあるリポジトリをコピーしてみてほしい。
MySQL Server in Launchpad
5.6なら例えば次のコマンドを実行すれば良い。
shelL> bzr branch lp:mysql-server/5.6
そしてmanディレクトリの中を覗いてみよう。そこにあるのは「mysqlman.1」というファイルだけだ。これはMySQLのmanページについての紹介文が書かれたごく短いもので、ライセンス表示は含まれない。そもそもmysqlmanというコマンドは存在しない。ただしMySQLがインストールされている環境でman mysqlmanというふうにコマンドを入力すればこのmanページを見ることができる。
何が言いたいかというと、manページはMySQL本体のソースコードとは個別に管理され、後からマージされてパッケージ化されているということだ。そして、パッケージングシステムを誤って(プロプライエタリライセンスのmanページが含まれてしまうように)変更してしまったことがバグの原因である。
ちなみに、やらかしたのはMySQLチームの人間であり、オラクルの偉い人の意図等によってそうなったわけではない。むしろ全く関係ない。そもそもやらかした人間ですら意図してそうしたわけではない。全ては手違いなのである。
manページのライセンスについて
今回、不幸にもパッケージに含まれてしまったmanページはプロプライエタリライセンスのものだが、商用版のパッケージにはこのライセンスのものが含まれる。MySQLはデュアルライセンス方式をとっており、コミュニティ版はGPLv2、商用版はプロプライエタリライセンスとなっている。実は元々manページのライセンスはプロプライエタリなものだったのだが、Debianコミュニティとのやり取りの中でGPLに変更されたという経緯がある。そのへんの話は次のページの記事にちょこっと載っている。MySQL Documentation and Debian/Ubuntu | MCslp
つまりDebianの人が「あれ、このマニュアルって俺らが配布するソフトウェアのライセンスとしてふさわしくないんじゃね」ということを発見してバグ登録し、なおかつmanページを別パッケージとして分離したというのが事の始まりだ。その後のやり取りの中で、manページのライセンスがGPLに変更された。何故元々プロプライエタリだったかというと、manページは通常のドキュメントと同じライセンスが適用されており、それはプロプライエタリなライセンスだという話だ。ドキュメントのライセンスがプロプライエタリなのはMySQL AB時代からの話で、何もオラクルになってそうなったワケではない。信じられないという人は下記の記事を参照して欲しい。
MySQL documentation: no license change (mysqlf)
今もドキュメント(でっかいマニュアル本体)はプロプライエタリライセンスである。つまりドキュメントからmanページだけを切り出して、GPLライセンスにしたという経緯が過去にあるということだ。manページ自身は、パッケージに含まれているだけでなく、単体でMySQLのドキュメントサイトで配布されている。(manページを作成しているのはドキュメントチームである。)
MySQL :: MySQL Documentation: MySQL Reference Manuals
こちらのライセンスは騒動があった間も変わらずGPLであった。意図してプロプライエタリライセンスに変更したわけではないということをお解かり頂けただろうか。
なんでGFDLじゃなくGPLなの?
担当者に聞いたところ、「管理を簡単にするためにライセンスを本体と統一したかった」とのことだ。ちなみに、「GPLはソフトウェアのライセンスだからmanページに適用できないんじゃ?」という疑問があるかと思う。推奨はもちろんGFDLだが、GPLを適用できないわけではない。(manページを再現できるマシンリーダブルなソースコードを適用すればOKだ。)詳しいことはGNUのFAQを見て頂きたい。スラドの記事についてひとこと
以前からスラドの記事は偏向されまくってて好きではなかったが、流石にこれはどうなのかと思う。これでMySQLを使うべきでない(使えない)理由がまた1つ増えたことになる。なお、当然ながらMySQLからフォークし、MySQLと互換性を保っているMariaDBについてはこの限りではない。
ちなみに、この記事で参照されているスラド本家の記事にも、MariaDB Foundationのブログにもこのような悪意のある記述は見当たらなかった。
バグがあれば使えないということであれば、この世の全てのソフトウェアは使えないことになってしまう。MySQLユーザーの皆さんには、このような陰謀論(?)に惑わされず、これからも安心してMySQLを使って頂きたいと思う。
manページのライセンスに関する説明、興味深く拝見しました。
返信削除MariaDB Foundationのブログといえば、一年近く前の話題ですが
http://blog.mariadb.org/disappearing-test-cases/
Disappearing test cases or did another part of MySQL just become closed source?
こちらの方がmanページのライセンスの話よりも影響の大きい話だと思います。
日本語の記事だと例えば
http://jp.techcrunch.com/2012/08/21/20120818oracle-makes-more-moves-to-kill-open-source-mysql/
Oracle、オープンソースのMySQL潰しに次の一手
で「OracleがMySQLの利用を可能な限り困難にしようとしていることは明白だ」
とまで書かれています。
差し支えのない範囲でこちらの件にもコメントをくださると幸いです。
Kazuhiko Shiozaki さん
返信削除コメントありがとうございます。
こちらの件は別エントリで書こうとおもってたのですが、削除したのはセキュリティ脆弱性に対する実証コードに相当するもので、オラクルのセキュリティポリシー(かなり厳しい)に基づくもので、オープンソース潰しというわけではありません。セキュリティに関する情報を何でもかんでも公開するかどうかというのは悩ましい判断だと思うのです。公開するかしないかは、どちらを選択してもベストということはないと思います。
MySQLはオープンソース的でないと言われればそうかも知れません。ただし、GPLv2で公開している以上、れっきとした「フリー(自由な)ソフトウェア」です。個人的にはフリーソフトウェア支持者であり、オープンソースは数ある開発手法のひとつ(好ましいけど絶対ではない)というスタンスです。