「オープンソース」は唯一の正解か

「オープンソース」は唯一絶対の正解か? 「オープンソース」は過去の遺産の簒奪者なのか? まずはオープンソースとその定義を巡る議論を整理してみよう。

今までも折に触れて述べてきたことなのだが、依然として誤解があるようなのでここでまとめておきたい。

「オープンソース」はソフトウェアを「自由」にする手法として、ただひとつのものなのだろうか。筆者はそうは思わないし、そんな言説には徹底して反対する。これを読んで驚いた方は以下も注意深く読んで頂きたい。

以下では、ハッカーの大半は「ソースコードが自由に利用できる状態」を好む、と仮定して話を進める。なぜ好むかという理由は簡単で、そちらのほうがハックしやすいからだ。世の中は広いので、中には特許やライセンスでガチガチに縛られた状態を好む奇特な方もいるかもしれないが、ここではとりあえずそういった指向の方については触れないことにする。

ここでただちに問題となるのは、「ソースコードが自由に利用できる状態」とはそもそもどんな状態か、ということだ。例えば、著作権という概念がそもそも存在しなければ、あるいはソフトウェアが著作物に分類されていなければ、世にあるソフトウェアはすべて自由に利用できる状態にあると考えられる。または、特定のソフトウェアがパブリックドメインに置かれていれば、そのソフトウェアに関しては誰でも自由に利用できると考えて良いだろう。これらがおそらく最も極端な例だ。

次に、BSDスタイルのライセンスが適用されたソフトウェアについて考えてみよう。これは非常に緩やかなライセンスで、改変や二次利用などが明示的に許可されている。ふつうに考えれば十分「ソースコードが自由に利用できる状態」にあると言ってよいだろう。しかし、さすがにライセンスの規定を無視して、「著作権表示を消してしまいたい」あるいは「カリフォルニア大学や著作権者の名前を宣伝に使いたい」というような要望には応えることができない。パブリックドメインならこうした行為ももちろん「自由」だが、ではパブリックドメインのほうが良いかと言えば、自分のクレジットが消されてしまうことに不快感を覚えるハッカーもいるだろう。また、リチャード・M・ストールマンに近い考え方を持つ人々からは、「二次的著作物のプロプライエタリ化に寛容すぎて、真の意味で自由を保証するものではない」というような批判も受ける可能性がある。

ではそのストールマンが書いたGNU GPLはどうだろうか。もちろん改変や二次利用など、ハッカーの基本的な権利は保証されている。それらに加えて、GNU GPLではオリジナルから派生した二次的著作物もGNU GPLを継承すること、頒布に追加的な制限を加えてはならないことなども規定されている。いわゆる「コピーレフト」だ。もちろんストールマンはこれが必要だと思ったから取り入れているわけだが、BSDスタイルの場合とは逆に、この種の「制限」はハッカーの自由を損なうと考える人々もいる。コピーレフトを主張すべきか否かですでに20年ほど激しい論争が続けられているが、依然として誰をも納得させられるような答えは出ていない。おそらく永久に結論は出ないだろう。

ようするに、「ソースコードが自由に利用できる状態」を一意に規定し、定義することなど最初から不可能なのだ。ハッカー一人一人にとって、あるいは直面する個々のケースにおいて、重要となるライセンス的な制約は千差万別である。あるハッカーにとっては、ライセンスに「平和利用に限る」と書き込むことは大した制限ではない。あるハッカーにとっては、「商用利用禁止」と書いたところで別に彼が考える「ソースコードが自由に利用できる状態」が損なわれるわけではない。あるハッカーにとっては、ライセンスでコピーレフトを主張したところで別に彼の考える「自由」は失われず、むしろ強化されるくらいだ。そもそも、現在に至るまでGNU GPLやBSDスタイルを始めとしていくつものライセンスが生き残ってきたのは、そういった個々のライセンスに特定の需要があったからに他ならない。厳密な意味でone fits for allなライセンスなどないのである。

しかし、ハッカーたちが議論を重ねることによって、だいたいこの程度の基本的な「自由」がライセンスで保証されていればまあ実際上は満足できるだろう、というある程度の妥協線、いわば「落としどころ」を考えることはできる。1998年にブルース・ペレンスやエリック・レイモンドらによって「オープンソースの定義」として定式化された「オープンソース」は、そういった落としどころ、「ソフトウェアが自由に利用できる状態」のうち成功した一つの例に過ぎない。言い換えれば、「オープンソース」は「ソフトウェアが自由に利用できる状態」の唯一の正解ではない。当然、「オープンソースの定義」は「ソフトウェアが自由に利用できる状態」の唯一絶対の定義でもない。これは筆者としてはごく当たり前のことだと思っていたのだが、驚いたことにオープンソースを批判する立場の人々のみならず、擁護する人々もこの点について勘違いしていることがあるようなので、ここで強調しておきたい。

特に、最近「オープンソース」に対して批判を浴びせる向きが多いのだが、それらの多くは根本的にこのあたりの誤解から発しているのではないかと思われる。彼らの主張として良く見られるのは、「『オープンソース』などという言葉が出てくる前から『オープンソース』は存在した」「『オープンソース』は(彼らの考える、いわゆる)『オープンソース』の唯一の定義ではない」というようなものだが、彼らが本当に言いたいのは、「『オープンソース』などという言葉が出てくる前から(彼らの考える)『ソフトウェアが自由に利用できる状態』は存在した」「『オープンソース』はいわゆる『ソフトウェアが自由に利用できる状態』の唯一の定義ではない」ということであろう。先ほどから述べていることからも明らかなように、こういった主張は別に間違っていないのである。そもそも、すでに1984年ごろ、ストールマンは彼が考える「自由」の具体化である「フリーソフトウェア」の概念を打ち出しているのだから。

しかし、現在問題としている「オープンソース」とは、1998年に生まれた新しい用語と概念であって、あるソフトウェアに適用されたライセンスが「オープンソースの定義」で規定された、(現在は10個の)諸条件を満たしている、という意味だ。もっと言えば、それしか意味していないのである。すでに存在する事象を後から完全に過不足なく定義するのは困難で、基本的には不可能なことだと筆者は思うが、「オープンソース」に関しては、そもそも定義のほうが先にあったというのが大きな違いである。これを否定するには、そもそもそれ以前にソフトウェアの世界で「オープンソース」という言葉が別の意味で広く使われていたことを論証しなければならないはずだが、それは事実上不可能だろう。筆者自身、1998年にはすでにこの世で生活していたが、当時もそれ以前も「オープンソース」などという言葉は聞いたことがなかった。ゆえに、少なくとも「広く」一般的に使われていた言葉だとは思えない。よって、「オープンソースの定義」は当然「オープンソース」を一意的に定義しているのであって、二者は等価かつ恒等的な関係であると考えられる。すなわち、「オープンソース」は固有名詞であり、一般名詞ではないのである。それゆえ、「オープンソースの定義」に準拠していない「オープンソースソフトウェア」はあり得ない。一方で、「オープンソースの定義」に準拠していないが「ソースコードが(ある人の基準では)自由に利用できる」ソフトウェアはいくらでも存在しうるのである。それは、個々の考え方の問題に過ぎない。

「オープンソース」を標榜しつつ独自のライセンスを採用していて、それがたまたま「オープンソースの定義」から逸脱している、というケースがときどきある。このような場合、「オープンソースではありませんね」と指摘すると怒り出す方がいる。自分が貶められたような気分になるらしいのだが、もちろん指摘する方にはそんな意図はないし、そんな風に思う必要もない。単なる事実の指摘である。そもそも、彼が考える「自由」さえ確保されていれば、「オープンソース」かどうかなど些細なことであろう。しかし、依然として彼のライセンスは「オープンソース」ではないし、彼が自分のプログラムを「オープンソースソフトウェア」と呼ぶのは、語義の混乱を招くということを差し引いても適当ではないのである。

ただ、あえて付け加えておくと、現在の「オープンソースの定義」はそれなりに良く練られており、ぎりぎり必要最小限の条件のみを厳選していると筆者は思う。少なくとも、オープンソースによるバザール開発モデルを考えた場合には、経験上不可欠となるものばかりだ。筆者が「オープンソース」にすることを勧める理由もここにある。多数のハッカーによる議論から生まれ、現在でも依然として激しい論争の対象となっている、「オープンソースの定義」に反駁するのは容易ではない。しかし、きちんと論証して欠陥を指摘すること自体は決して不可能ではないと筆者は思う。以前から述べているように、筆者としては、中途半端な感情論ではなく、このような「オープンソースの定義」の内実に関して、論理と事実に基づいた議論が活発に行われることを期待したいのである。

上記とも関連するのだが、最後に、なぜ筆者がこういったことを強調するか述べておきたい。理由は簡単で、筆者自身現在の「オープンソース」に満足していないからだ。個人的には、現行の「オープンソースの定義」に加え、コピーレフトを要求することが必須だと考えている。長期的に見てソフトウェアが自由であり続けること、そして「自由なソフトウェア」が波及的に広がっていくことをメカニズムとして保証することが重要だと思っているからだ。場合によっては、今後ソフトウェア特許の行使に対する制限なども必要になってくる可能性がある。簡単に言えば、筆者にとって「ソースコードが自由に利用できる状態」を保証するには、いくぶん「オープンソースの定義」は弱すぎるのである。

しかしながら、前にも書いたようにこれらは論争を呼ぶポイントであって、結論は出ていないし、おそらく一般論としては永久に決着のつかない問題である。筆者自身確固たる自信はない。そういった状況において、「オープンソース」は、筆者にとってはなかなかいい線をいっている、十分満足できる妥協線だと思う。ゆえに支持する。ただそれだけの話である。「妥協」であることは「オープンソースの定義」の価値をいささかも貶めるものではない。皆さんは自分で良く考えて、自分の考えを決めてほしい。それこそが、「自由」ということなのだから。

投稿者: mhatta

A rapidly-aging old-school geek in Japan.