我らがリチャード・ストールマン(敬称略)はGNU宣言を発表してフリーソフトウェア運動を始めた偉人である。そう、リチャード・ストールマンが支持するのはフリー(自由な)ソフトウェアであってオープンソースではないのだ。なんだか似たような感じがするし、恐らくオープンソースとフリー(自由な)ソフトウェアを明確に区別している人はほとんど居ないだろう。オープンソースと言う語をはじめて公式に発表したブルース・ペレンズも「フリーソフトウェアとオープンソースは実質的に同じものを指す」なんて言っちゃってるぐらいだ。だけどリチャード・ストールマンは二つを明確に区別し、あくまでもフリー(自由な)ソフトウェアを支持する立場を貫いている。オープンソースとフリー(自由な)ソフトウェアの違いは「哲学」だ。
オープンソースライセンスとフリーソフトウェアライセンス
恐らくほとんどの人にとって、オープンソースとフリー(自由な)ソフトウェアの区別なんてどうでも良い話かもしれない。「タダでソースコードが公開されてりゃ何でも同じだろ」ぐらいに思ってるんじゃないだろうか。まあ確かにそもそも両者はとても似ていて区別が付きづらい。オープンソースの要件を満たしたオープンソースライセンスと、フリーソフトウェアの要件を満たしたフリーソフトウェアライセンスがかなり被っているというのも曲者だ。- Licenses by Name | Open Source Initiative
- Various Licenses and Comments about Them - GNU Project - Free Software Foundation (FSF)
例えばGPLv3はフリーソフトウェアライセンスの代表だが、オープンソースライセンスの要件も満たしている。ライセンスが同じなら実質的な扱いも同じなので、両者の区別はますます付きにくくなる。
哲学の違いとは?
フリー(自由な)ソフトウェアにとって至上命題は「自由」だ。素性(ソースコード)の分からないプロプライエタリなソフトウェアや、DRM、特許、スパイウェアなどから解放されて、自由にソフトウェアを自分の目的に沿うように改造すること。そしてそれを同じ問題で困っている人に再配布することだ。まだGNU宣言を読んだことが無い人は、一読されることをおすすめする。リチャード・ストールマンのエッセイ集フリーソフトウェアと自由な社会にもGNU宣言が収録されているが、こちらのほうが翻訳の質が高くておすすめだ。以下はフリーソフトウェアの定義からの抜粋。これがGNUによって目指す「自由」だ。
- 目的を問わず、プログラムを実行する自由 (第 0 の自由)。
- プログラムがどのように動作しているか研究し、そのプログラムに あなたの必要に応じて修正を加え、採り入れる自由 (第 1 の自由)。 ソースコードが入手可能であることはこの前提条件となります。
- 身近な人を助けられるよう、コピーを再頒布する自由 (第 2 の自由)。
- プログラムを改良し、コミュニティ全体がその恩恵を受けられるよう あなたの改良点を公衆に発表する自由 (第 3 の自由)。 ソースコードが入手可能であることはここでも前提条件となります。
一方、オープンソースの目的は平たく言えば「優れたソフトウェアを開発すること」だ。それはOpen Source Initiativeのホームページに書いてある。
Open source is a development method for software that harnesses the power of distributed peer review and transparency of process. The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in.
つまり、良質で、信頼性が高く、柔軟性があって、低価格で、ベンダーロックインから逃れるための開発手法なのだと。
「自由」か、それとも「優れたソフトウェアを作ること」か。それがそれぞれの目指す哲学なのだ。
2007年にリチャード・ストールマンが来日したときのインタビューでも、哲学の違いについて触れている。このインタビューもとても面白いので是非読んでみよう。リチャード・ストールマンのお茶目っぷりを堪能できること請け合いだ。
ここでちょっと少し話が横道に逸れるがお付き合い頂きたい。
ベンダー主導型開発はオープンソースの要件を満たすか?
結論から言えばYesだ。なぜならば、Open Source Definition(OSD)に抵触していないから。抵触していないというよりは、OSDでは終始どのようにソフトウェアが提供されるべきかということが定義されていて、どのようなスタイルで開発するべきかということは一切書かれていない。オープンソースは開発手法に対する哲学なのに、開発手法についての定義は一切なされていないのはこれ如何に?と思ってしまう。
だが、開発手法について定義するのは雲をつかむような話だ。哲学は語れても、「こうするべし」というのを定義するのは至難の業であるし、またそうするべきではない。「著作権を管理する中立的な団体を設立して、方針はコミュニティが議論して・・・」等々などの決まりを作ってしまうと、多くのソフトウェアがオープンソースと呼べなくなってしまうだろう。
一方、OSDにのっとった「オープンソースソフトウェア」として配布されているというだけでも享受できるメリットはたくさんある。
- ソースコードを公開しているので、バグ報告のフィードバックが多い。
- バグを見つけてパッチを送ってくれる人も居る。
- ユーザーが自分でカスタマイズできる。
- 管理ツールやプラグインのような、そのプロジェクトを補完するようなプロジェクトが出現する。
このようなメリットはソースコードが公開されていないプロプライエタリなソフトウェアでは絶対に得られないものだ。だからオープンソースであればこそ出来る開発手法はいろいろ考えられる。むしろ杓子定規に「コミュニティ主導」というような枷を設けないほうが、可能性に広がりが出ると考えることもできる。
オープンソースの目的が「優れたソフトウェアを作ること」であれば、オープンソース的な開発手法を「オープンソースライセンスによって実現できるあらゆる開発手法」と捉えるべきだと思う。そして皆がそれぞれ自分が信じるやり方で優れたソフトウェアづくりに邁進すればいいのではないか。どのやり方が正しいかは、出来上がった作品が証明してくれる。
コミュニティ主導型開発 vs ベンダー主導型開発
「ベンダー主導で開発したらロックインだ」なんていうワケの分からない議論はおいといて・・・(ソースコードが公開されてるんだからロックインなわけねーだろっ!)オープンソースの目的が「優れたソフトウェアを作ること」であれば、議論は「どちらのほうが優れたソフトウェアを作り出すことが出来るか」というものであるべきだ。
よくコミュニティ主導型の成功例としてLinuxが挙げられるし、俺自身もLinuxは大成功したプロジェクトだと思う。(「伽藍とバザール」でもLinuxの大成功が取り上げられている。)けど、果たしてその大成功は他の全てのオープンソースプロジェクトにも当てはまるのだろうか?Linuxは特殊な例ではないだろうか?コミュニティ主導型の開発をすれば猫も杓子も成功するのだろうか?
無論そんなわけはない。プロジェクトが成功するかどうかということには、様々な要因が絡んでくる。開発手法はその要素のひとつに過ぎない。
ベンダー主導型開発のいちばんの弱点は、開発者の数が限られるということだ。コミュニティ型プロジェクトでは、しばしば多くの人が開発に参加してくれるというもメリットのが主張される。コードを書いてくれる、修正してくれる人の数が多いのは良いことだ。そして、ベンダーにとってプログラマを雇用するというのは頭が痛い問題だ。(なんせお金がかかる。)だが、その問題点はベンダーが潤沢に資金を持っていれば解決できる。ベンダーがたくさんのプログラマを雇ってしまえばいいのだ。問題は、オープンソースをネタにした商売が上手くいくかどうかという点だろう。優秀なプログラマの雇用を維持出来るほど儲かっていれば、ベンダー主導型でも「開発者数」の問題はクリアできる。
その問題点さえクリアすれば、先ほど述べたようなオープンソースであることの利点は享受できる。特にバグを報告してくれる人の存在は重要だ。
コミュニティ主導とベンダー主導では、最終的にどちらのほうが良いものが出来るか?というのは、ケース・バイ・ケースだとしか言えない。Linuxが成功したのはそれがLinuxだからであって、例えば今自分がオレオレOSをコミュニティ主導型のオープンソースで始めたところで成功する可能性は皆無であろう。
コミュニティ主導型開発 vs ベンダー主導型開発の代表例と言えばオープンソースRDBMSだ。その代表格ともいえるMySQLとPostgreSQLがそれぞれ異なる開発手法をとっている。MySQLはベンダー主導型でPostgreSQLはコミュニティ主導型だが、「じゃあMySQLとPostgreSQLはどちらが優れているか?」ということについて話をしだすと最終的に拳で語り合うしかなくなるので、ここではその議論については伏せておく。
さて、リチャード・ストールマンにとって、このような「優れたソフトウェアを作ること」は至上命題ではない。あくまでも、「最終的にユーザーが使うソフトウェアが自由かどうか」ということが重要だからだ。
その先にあるもの
オープンソースの目的が「より優れたソフトウェアを開発すること」であれば、それは何のために目指しているのだろう?恐らく多くの人は直感的に「社会のため」と理解しているのではないだろうか。社会のため、それは即ち「公益」のためだと言える。一方で、リチャード・ストールマン支持する「自由」が何故大事なのかというと、それもやはり公益のためだ。我々から自由が奪われ、特定の企業や団体によるソフトウェアの独占やコントロールを許してしまうと、公益が損なわれることになる。
どちらも「公益」のためのものであるなら、なぜリチャード・ストールマンはオープンソースを支持しないのだろうか。それこそが哲学だ。哲学故の選択だ。
人々の幸福を考えたとき、「自由」か、はたまた「優れたソフトウェア」か、本当に大事なのはどちらなのかというテーマに対する答えの違いだ。いくら優れたソフトウェアであっても、それを「自由に」使うことが出来なければ、何の意味があろうか?いくら自由であっても、出来の悪いソフトウェアでは不便ではないか?
これはなかなか答えが出ない問いだ。だからこそ、それを選択するのは哲学なのだ。
自由こそ人類にとって最も大事なもの。自由のない人生なんてまっぴらじゃないか!それはソフトウェアとて同じこと。
それがリチャード・ストールマンの答えなのだ。
0 件のコメント:
コメントを投稿