オープンソースとFLOSSに関する世界観です。GNU・FSFやオープンソース(パーミッシブ・ライセンス)も参照のこと。FLOSSは「フリー・リブレ(自由)・オープンソースソフトウェア」の略です。
オープンソースとは、公共の利益のために、惜しみなく、見返りを求めずに、あえてソースコードをソフトウェアとともに全世界に公開することです。
多くの場合、オープンソースソフトウェアは無料で提供されます。ソースコードには開発のために必要なすべての情報が含まれるため、「見返りを求めずに、すべての開発に必要な情報を公開する」ということに近いです。
オープンソースソフトウェアは、ほとんどの場合インターネット上に公開され、無料でダウンロードすることができます。また、パッチや派生ソフトウェアも多くの場合、オープンソースで提供されます。
ソースコードとは、プログラムの設計図のことです。ソースコードはC言語などの高級言語で人間の手によって書かれており、ソフトウェアの動作内容が人間にとって読み取りやすいコードで記述されます。ソフトウェアを開発するために必要なすべての情報がソースコードにあります。コンパイラ言語の場合、このソースコードをコンパイラという専用のツールを使って自動的に機械語のバイナリファイルに変換して実行します。C言語などの場合、実際に動くのはバイナリファイルであり、ソースコードではありません。
商売をしている会社の商用ソフトウェアは、このようなソースコードを一般に公開することがありません。ソフトウェアの開発のためのすべての技術情報が記述されている設計図を公開してしまうと、ほかの会社に技術を盗まれてしまいます。また、ソースコードはコピーが可能です。そのため、ライセンスを通じて違法コピーを禁止して、料金を取って儲けることができず、ビジネスモデルが成り立たないのです。
ですが、パブリックドメインのOSだったかつてのUNIXのフリーソフトウェアによるクローンを目指すGNUプロジェクトやFSFの創始者であるリチャード・ストールマンは、これとは逆の発想をします。すなわち、ソースコードにアクセスできることをソフトウェア利用者の「権利」であると考えます。この権利は、ソフトウェアのソースコードを見たり、改変したり、コピーしたり、再配布したりすることの自由な権利のことです。この権利を用いることで、ソフトウェア制作者を「手助けする権利」があるとストールマンは考えます。
GNUとその母体組織であるFSFは、GPLというフリーソフトウェアのライセンスを裁定しています。GPLでは、商用ソフトウェアのライセンスのように、「違法コピーをしてはならない」とするのではなく、その正反対である、「ソフトウェアのソースコードを公開しなければならず、またコピーや改造、再配布を防げてはならない」というライセンスを定めます。そのため、GPLソフトウェアを配布する際には、必ずソースコードを開示しなければなりません。そして、派生ソフトウェアを作る場合には、「必ず元のソフトウェアと同じライセンス(つまりGPL)にしなければならない」とします。
このようなGPLライセンスは、厳格なライセンスであるとされます。もし、派生ソフトウェアについて同じライセンスを継承させる(コピーライトにひっかけてコピーレフトと呼ばれる)ようにしたくない場合は、BSDライセンスやApacheライセンスのような寛容なライセンス(パーミッシブライセンスと呼ばれる)にすることもできます。GPLの場合派生ソフトウェアがGPLになることが決まっているので、パッチや改善されたソフトウェアは必ずGPLになります。これは共同開発をする上で、「いつまでもGPLが保たれる」というメリットもありますが、商用ソフトウェアに組み込みたい場合には使いづらいライセンスです。現に、SONYのプレイステーションなどには、BSDライセンスによるFreeBSDがベースのOSとして使われています。LinuxカーネルやGNUソフトウェアはGPLですが、すべてのLinuxに使われているソフトウェアがGPLであるとは限りません。
フリーソフトウェアのフリーは、ソフトウェアの「自由」を意味しており、「無料」を意味しているわけではない、ということには注意が必要です。単に無料なだけのフリーソフト、フリーウェアとは異なります。
また、フリーソフトウェアと「オープンソース」はよく似た単語ですが、使用される背景が異なります。オープンソースとは、Linuxカーネルのバザール開発と呼ばれる共同開発のやり方から生まれた言葉で、インターネット上で繋がった片手間のボランティアが、見返りを求めずパッチを共有することで、Windowsのようなビジネスで開発されるソフトウェアよりも高品質でバグのないソフトウェアを開発することができるという、「革新的なソフトウェア開発方法」の奇跡を示す言葉です。ただし、現在ではRed Hatのような会社によって開発される部分もあるLinuxのようなオープンソースソフトウェアは、既に「ボランティア」によるものではなく、「インターネットを通じてボランティアあるいは会社が緩やかに繋がって、個人の利益だけを求めず公共の(あるいはプロジェクト全体の)利益のために共同開発する」といったものになっています。
また、フリーソフトウェアがなぜ「無料」ではなく「自由」なのかといえば、フリーソフトウェア(オープンソースソフトウェア)を販売することは禁止されていないからです。多くのオープンソースソフトウェアはインターネット上で無料で公開されていますが、Red Hatのような商用ディストリビュータはLinuxやオープンソースソフトウェアを有料で販売し、サポートサービスでエンタープライズ向けのビジネスをしています。このような場合、先に言うBSDライセンスなどであれば、自らが開発した部分を公開しなくてよいため、ビジネス的にはやりやすいでしょう。GPLでライセンスされた場合、必ずコピーレフトでソフトウェアを公開する必要があるため、「売ったとしてもコピーされてしまい、儲からない」と言えます。このため、Red Hatのような企業は、オープンソースをビジネスモデルにすることに苦労してきました。現在では、エンタープライズ向けのサポートサービスの販売や、クラウド向けのサービスなどでビジネスをしています。また、かつてMySQLなどの会社がやっていたように、「オープンソースにする部分と商用ライセンスにする部分を分ける」というやり方もあります。著作権者はライセンスを自由に決められるので、「GPLと商用ライセンスのデュアルライセンス」にすることは可能です。
また、最近では、GoogleやMicrosoftのような大手IT企業が、ソフトウェアをオープンソースで公開することも増えてきました。この理由は、ソフトウェアだけで儲けるのではなく、関連するサービスで儲けることができるようになってきたため、ソフトウェアそのものをオープンに公開しても構わなくなってきたことや、オープンソースにして無料で公開した方が多くの人に使ってもらうことができ、結果としてエンジニアやソフトウェア会社などのプログラマにとっての「業界標準技術」を握ることができるようになってきたことが言えます。商売をしているプログラマは、コストを削減したり、できるだけ他人が使っているのと同じ技術を使うために、オープンソースの技術を使うことがあります。これはGoogleやFacebookをはじめとするGAFAや、Microsoftのような「プログラマに使ってもらう基本的なプログラム」(たとえば言語やフレームワーク、開発ツールやOS、ミドルウェア)を書いている大手企業にとっては、「標準を握ってしまえばその技術の開発の主導権を得られる」という意味でメリットがあります。特に、以前はLinuxやオープンソースと敵対姿勢だったMicrosoftは、その売り上げの多くがWindowsのようなOSからAzureのようなクラウド関連サービスへと移ってきたこともあり、自らの技術を積極的にオープンソースとして公開するようになっています。
しかしながら、オープンソースは、インターネット上の「コミュニティ」によって大きく左右されるものであり、従来のソフトウェア開発とは違います。コミュニティが間違った方向へ向かえば、オープンソースそのものの存続が危ぶまれます。わたしたちは、ビジネスとは関係なくボランティアが公共のためにオープンソースソフトウェアを公開し、開発者に感謝し、パッチなども含めて共有し、自らも開発者となって参加し、透明性のある議論を行う、という「オープンソースの理想」へと立ち返る必要があると思います。
また、あえて僕個人の意見を言うと、オープンソースはセキュリティと障害対応に優れていると思います。
たとえば、Windowsのフリーソフトを入れる場合、そのソフトウェアが本当にマルウェアではないと言えるでしょうか。
ソースコードが公開されていないため、そのソフトウェアに本当にシステムのデータを奪う機能や操作・処理がないか、保証することは誰にもできません。
オープンソースなら、ソースコードが公開されているため、バグや未解決のセキュリティホールはあるかもしれませんが、マルウェアであるかそうではないかの区別は多少つくように思います。
特に、Windowsのフリーソフトには、悪名高いRealPlayerのように、スパイウェアまがいのことをするソフトウェアがかつてたくさんありました。
それから、エンタープライズや業務で使う場合、きちんとソフトウェアが動かなかった時に、障害の対応をしなければなりません。
こうした時、バグが自分の会社で作ったソフトウェアのものではなく、基盤となる別のソフトウェアだった場合、オープンソースならば、それを突き止めたり、あるいは自分の手で直したりすることもできます。
これがもし、Windowsだった場合、Microsoftにいくら問い合わせても、その時点で終わり、解決不可能になるかもしれません。
あるいは、オープンソースの場合、問題の特定がやりやすいかもしれません。ソースコードを見て特定することができるからです。
しかしながら、ここまで言っておいて、オープンソースならば必ず問題の特定ができるかというと、一般的にそれはWindowsの場合よりも難しいです。なぜなら、ユーザーが少なく、また従来からUNIXはあまりに設定ファイルやコマンドを多用するため、分かりやすいGUIの設定ができるWindowsに比べて、管理がとても難しいからです。
エラーメッセージの検索といっても、初心者には見るべきファイルがログファイルだったりすること自体分からないでしょう。設定ファイルも英語の羅列であり、一般的オフィスユーザーには理解するのが困難です。
また、多くのLinuxの不具合が、「バグではなく仕様」であり、「熟練したLinux管理者からすると当たり前の動作をしている」ということもあります。なので、簡単に問題が解決するとは限りません。
また、Linuxは一様でありません。Windowsならば、今サポートされている10だけを考えればいいでしょう。Linuxでは、Debian、Ubuntu、Fedora、Arch、SUSEなどで、それぞれ全くシステムが違います。同時に、それぞれがサポート期限を決めているため、サポートが終わっても使い続けている人の割合は、Windowsの場合よりも高いと思います。
自分の書いた「シルフの秘密の場所」2022/04/17より。
なぜ、オープンソースを信じないのか。
オープンソースとは、自らのコンピュータを柔軟に使う自由を得るということだ。自らのコンピュータが実行しているプログラムの実行内容がどのようなものであるかをコンピュータのユーザーが知ることができ、それをユーザーが書き換えることも、コピーすることも、他人に再配布することも自由である、という、「自由を許されたコンピュータソフトウェア」ということだ。
なぜ、オープンソースに参加しないのか。
オープンソースソフトウェアは、従来のソフトウェア会社による「金儲け」によって開発されていない。インターネット上の無数に繋がる「見返りを求めない善意のボランティア」によって開発されており、Linuxカーネルなどは何千人という単位でインターネットで繋がった貢献者たちが自らの成果を「みんなのものとして共有」している。これによって、高品質なソフトウェアが生まれている。
僕は、オープンソースを信じて、参加しようとした。僕は今までの商用のソフトウェア業界と真っ向から対峙し、GNUやLinuxのために戦った。
オープンソースこそ、真に革新的な、もっとも正しいソフトウェアのあり方である。
たとえば、Windowsや商用ソフトウェアの場合、コンピュータのICチップとハードディスクにおけるOSの機械語のバイナリが付属されているだけで、内容を見ることができない。
内容を見れないということは、「悪い内容が実行されていても見ることができない」ということを意味する。また、「プログラムの内容を自分で書き換えて、自分の実行させたいプログラムに記述しなおして実行する」ということもできないということを意味する。
また、コピーや再配布ができるということは、インターネット上に、著作者である自分とまったく同等の権利内容を許しながら、全員と共有し、共同開発することができるということを意味する。
すなわち、内容を秘密にした上でお金儲けのためにソフトウェアを開発しなくても、インターネットを使うことで、秘密の内容を公開したとしても、みんなでネットワーク上でボランティアが開発すれば、商用のソフトウェア以上の品質のソフトウェアを開発することはできる。そして、それはインターネット上で無料でソースコード付きで配布されており、無料でダウンロードできるだけでなく、自らも開発者のひとりとして参加することもできる。
オープンソースこそ、真に正しいソフトウェア開発のあり方であると僕は信じている。せっかくコンピュータを与えられたのに、自分でそのコンピュータを使ってプログラミングができないのであれば、そのための編集可能なソースコードもOSもコンパイラもフリーで与えられないのであれば、なんのためのコンピュータか。巨大テック企業に使われるだけが、自分がコンピュータを所有している目的ではない。わたしたちは、自らのコンピュータを使って開発に参加できるのだ。だからこそ、わたしたちはGNUとLinuxを作るのだ。
オープンソースとは何か、ということを一言で言えば、「みんなのものを共有し、共同制作する」という文化です。
インターネット上において、ホームページはそもそも、ホームページの管理人の作った、個人のページのことでした。
ですが、インターネットが進歩するに従い、「誰のものか分からない、みんなのものとしか言えないような共有コンテンツ」が、インターネットの仮想世界で共有されるようになりました。
これはたとえば、匿名掲示板やチャット、あるいは今で言えばSNSやツイッターや動画配信サービスなどについて言えます。
オープンソースも、これらインターネットの文化と同じように、「みんなでソフトウェアを共同制作する文化」であると言えます。
20世紀の巨大な共産主義国家であるソ連という体制は失敗作でした。かつてのソ連は、スターリンという独裁者のせいで、まったく生活に必要なものを生産できない社会体制を作りました。
ですが、インターネットのコンテンツ共同制作文化は、ソ連とはまったく関係ありません。
オープンソースであっても、著作者は居ます。そして、その著作者が、プロジェクトの基本方針を決めます。Linuxカーネルであれば、リーナス・トーバルズが著作者であり、トーバルズがプロジェクトの方針を決めます。
ですが、実際にクレジットを持っている貢献者は、Linuxカーネルには何千人と居ます。彼らは、善意のボランティアあるいはオープンソース貢献企業として、トーバルズにコードを提供し、大きな貢献者はカーネルのサブシステムをメンテナンスするメンテナーとなってトーバルズに協力しています。
このような「みんなのもの」であるLinuxを、誰かが勝手に私物化したり、一企業や悪意ある個人によって独占されてはいけません。みんなの文化はみんなの文化であり、誰かひとりのものになってはいけません。
Linuxでは、GPLというライセンスを裁定しています。誰かが勝手にLinuxのfork(派生版)を作ることは自由ですが、GPLコードを利用するのであれば、同じGPLでライセンスされなければなりません。万人に自由な権利を許すGPLのライセンスを勝手に誰かが変えてはいけません。それによって、誰かひとりによる私物化を防ぎながら、派生版を作る自由な権利を万人に与えることができます。
同時に、プロジェクトには透明性が尊重されるべきです。すなわち、Linuxカーネルの著作者であるリーナス・トーバルズや、あるいはプロジェクトの参加者の合意なく、誰かがプロジェクトを乗っ取ったりすることはあってはいけません。なので、大きなプロジェクトでは、民主的な透明性のあるプロセスを裁定するか、あるいは個人のプロジェクトや会社のプロジェクトであれば、プロジェクトの管理者や運営者がプロジェクトの方針を決めます。これを誰かが勝手にひとりで乗っ取るようなことはできるだけあるべきではありません。
そのような仕組みを作った上で、Linuxなどのオープンソースプロジェクトでは、「みんなのものを共有し、共同制作する」という方式を実現しています。
このようなオープンなプロジェクト運営は、地球上のすべての人類が参加できるような「インターネットの共同制作文化」と非常に親和性が高いです。多くの目と声でコードをレビューしながら、インターネット上の誰であってもコードを寄贈することができ、インターネットの「みんなのもの」を共同で開発するということは、非常に合理的です。コードの開発者にお金が支払われないことが多いというデメリットはありますが、ソフトウェアの使用料金が多くの場合無料となり、ダウンロードも簡単で、ソースコードもすべて公開されるというベネフィットがあります。デメリットを上回るぐらい大きなメリットがあるのです。
オープンソースによる開発は、会社による開発と同じぐらい効率的で合理的です。ひとりでは作れないものが、インターネット上の共同制作では作ることができます。それぞれが作ったものを持ち寄ることもありますし、ひとりの天才的開発リーダーが作ったものに対してみんなでバグ修正や機能追加・改良などの貢献をすることもあります。そして、このような共同開発は「楽しい」ということが言えます。インターネットにおけるさまざまな人々と、自分の家のパソコンが繋がって、みんなでひとつの目標に向かってそれぞれがやりたいように開発するというのは、リーナス・トーバルズが著書「それがぼくには楽しかったから」で言うように「楽しい」のです。
そういうわけで、オープンソースは非常に合理的で、かつ楽しく、インターネットのもたらす利益を最大限活用した開発方法であると言えるでしょう。「GPLはウイルスだ」という批判もありますが、それ以上にベネフィットが大きいから、Linuxはここまで進歩し、発展したのではないかと思います。
なぜ、Linuxやオープンソースが、ここまで成功し、世界を変えるに至ったのか、それは「見返りを求めない善良さ」があると思います。
突然ですが、「善」とはなんでしょうか。
僕は、善とは、見返りを求めずに、相手に対する手助けだけを目的として、手助けが必要な人を助け、協力することだと思います。
なんらかの見返りを求めた時点で、それは「見返りが目的」になってしまいます。見返りを必要ないとすれば、それは「純粋な手助けそのものが目的」になることができます。この、「それ自体が目的」という意味で「善」を行うことこそが、善良であるということです。
そして、単に手助けが善良なだけではなく、人々の「声」や「意見」を聞くことが、プロジェクトの健全性を高めます。オープンソースに限ったことではなく、多くの人々の「現場の声」を聞き、実際のユーザーの求めるものをよく知った上で開発することは大切です。その上で、専門的知識のある開発者がたくさんバグを直し、デバイスドライバを提供し、サブシステムを書き換え、レビューを行います。最後の「レビュー」が重要です。意見を聞くだけではなく、できるだけ多くの人の目で見ることが、ソフトウェアの品質を高めます。
なぜ、善良であれば世界を変えるに至るのか。それは、「悪いことをして世界をよくすることはできない」からです。
グーグルやフェイスブックは、世界中の個人情報を集めて、それを会社の技術開発に利用していますが、ここではプライバシーの問題が考えられていません。
また、マイクロソフトをはじめ、そのようなITの巨大テック企業は、金儲け優先であり、コミュニティが健やかな社会になることよりも、金儲けができることを優先に製品やサービスを作っています。
このような、「悪いことをして儲けているIT企業」が、いくら世界をよくしようとしても、悪いことをして世界をよくすることはできないのです。
僕個人の経験から言っても、オープンソース活動で世界を変えることができるのは、オープンソースが善良だからです。そして、どんなに偉大な計画と野心を持っていても、マスコミを支配して操ることで、この世界を救うような「大実験」を行ったところで、世界を救うことはできません。たとえそれがどんなに愚かで馬鹿だったとしても、オープンソース活動のほうが、世界を変え、日本社会を救うほうに近いのです。逆に、テロリストのようなことを行うのであれば、それがどれだけよく考えられた賢いことであっても、世界を救うことはできず、試みは失敗に終わります。
なので、会社の技術者が金儲けのために作った技術には、世界を変えるような革命的技術や革命的サービスは期待できません。善良で、お金を儲けない、個人のボランティアの集まりこそ、オープンソースの本来の姿です。世界を変えるかもしれないと期待できるのは、商用ソフトウェアではなく、オープンソースソフトウェアです。善良かつ人々の声をよく聞いてみんなで作るオープンソースこそが、この世界を救う「革命」を実現するのです。
また、さらに言えば、ソフトウェアの開発という側面から見ても、オープンソースは正しいです。みんなで会社でソフトウェアを開発すると、単に顧客の要求を満たすだけの、「何も優れた点や賢い点のないソフトウェア」になってしまいます。そうではなく、ひとりの天才が独断で設計と実装を行うことで、「センスのあるソフトウェア」が生まれます。この「センス」こそが、ソフトウェアにとって重要です。また、ひとりの天才が開発するのではなく、複数の人間が開発する場合、オープンソースならば、天才のプロジェクトに別の天才が参加し、「天才と天才の化学反応」が起きて、「複数の天才による共同デザイン」が生まれます。
ですが、オープンソースにかかわっている天才は、すべてが最高の天才ではなく、GNOME 3やsystemdといった失敗例もあります。それでも、彼らは自分の作っているソフトウェアを愛しています。この「みんなが愛しているソフトウェアをみんなで作る」ということが重要です。誰も愛していないソフトウェアを、単に保守や管理のために作っても、それはきちんとシステムとしては動きますが、ソフトウェアにおける「面白さ」が何もありません。だからこそ、天才がひとりで設計し、実装することが大切です。人はセンスのあるデザインがされたものを愛します。センスのないソフトウェアは誰も愛しません。会社ではなく個人が作る(あるいは個人が集まる緩やかなコミュニティで作る)ということは、「センス」という意味でも重要なのです。
ここまで、オープンソースに好意的なことを書いてきましたが、オープンソースに対する批判を書くと、「結局金儲けが正しい」のかということになります。
Linuxをはじめとするオープンソースソフトウェアは、みんなでソースコードを公開しながら、インターネットで共同開発し、バグがあれば自分で修正してパッチを共有するか、みんなでそのバグを修正する、といった方法で大きくなりました。
このような常識は、オープンソースのかつての黎明期においては成立しました。
ですが、今のオープンソースは違います。個人の善意のボランティアは少数派で、ほとんどが金儲けのためにRed Hatのような企業が開発しています。リーナス・トーバルズのような重要人物は、オープンソース組織に雇われることで、Linuxなどの主要コンポーネントの開発を行っています。
また、GoogleやFacebookのオープンソース技術は、完全にボランティアではなく、企業の金儲けのための「会社戦略としてのオープンソース技術」です。
そう、結局、いつもの善意のボランティアから成り立つオープンソースコミュニティなどは、本当はLinux界にはほとんど残っていません。ほとんどが企業の技術です。リーナス・トーバルズがCPUメーカーのトランスメタで働きながら片手間でLinuxカーネルを開発していた状況とは、まったく異なる状況になっています。Linuxは低コストのシステムを構築するための技術であり、その目的はすべて金儲けのため、ビジネスのためです。結局、「金儲けが正しかったのか」と言うしかありません。
自分の書いた「紅蓮と黄金の出会う場所」2024/07/13より。
実際、過去の引きこもり時代に考えたことは、すべて、オープンソースのように考えただけである。
すなわち、原則全員個人の自由であり、どんなプロジェクトを行っても自由だが、そのプロジェクトにおいてはそのプロジェクトの管理者とメンテナが絶対的に自由であり、パッチを送る際にはそのパッチが取り入れられたとしても拒絶されたとしても、それを受け入れなければならない。すべてプロジェクトの管理者とメンテナが自由だ。
その上で、どんなにプロジェクトを自由に作ってもいいし、そのプロジェクトから派生する派生プロジェクトを作ってもいい。パッチを取り入れるかを決めるのはプロジェクトの管理者とメンテナだが、もし取り入れられないのが不満なら、サブプロジェクトを派生(fork)させて自分で作ればいい。
その上で、一切の統一はしない。「統一」という考え方はオープンソース的でない。オープンソース的な考え方は「多様性の尊重」と「選択の自由」だ。だから、すべてのプロジェクトの多様性を尊重した上で、どのようなソフトウェアを使うのかは個人が選択する。ユーザーに選択の自由がある。
だが、共有については原則、集積のもっとも可能性の大きいものを取る。すなわち、同一のプロジェクトにおいて、あらゆるすべてのパッチを共有し、意見やバグの報告情報やアイディアの提案についてもすべて共有する。その上で、派生(fork)させるのは自由だ。だから、NetBSDからOpenBSDが派生しても自由だし、DebianからUbuntuが派生しても自由だ。その派生したプロジェクトの中で、さらにパッチや発想などを共有する。
同時に、ソフトウェアは再利用できるべきであり、それを作った原作者でなくても改善や改良ができるべきだ。そうでなければ、原作者がソフトウェアを開発するのをやめた時点でプロジェクトが終了してしまう。オープンソースを、「なぜリーナス・トーバルズという個人のプロジェクトで作っているカーネルを公共のインフラや会社の製品で使うのか」と言うが、事実、開発がもしリーナスによってされなくなったとしても、LinuxカーネルはGPLであるため、ほかのプロジェクトが開発を存続できる。だから、リーナスという個人のプロジェクトであっても依存度は少なく、ソフトウェアが開発終了になったとしても他人が存続させられる保険がかかっているのである。
ソフトウェアというものは、原作者だけのものではなく、ユーザーがそれを必要とする時点でユーザーのものでもあり、ソフトウェアの原作者が「俺の権利だ」とかたくなに主張するのはオープンソース的ではない。ソフトウェアの開発者は「すべてオープンに公開し、すべて無料で提供しますから、どんなことをするのであっても自由にしてください」とするべきだ。少なくとも、インターネットにおけるフリーソフトウェアの提供の文化としては、誰が見てもそれが理想である。すなわち、ソフトウェア開発者のことを考えるのではなく、純粋にソフトウェアを提供するということを考えた際に、オープンソースが理想なのである。
同時に、オープンソースは開発者の成果物の共有という意味でも優れている。すなわち、会社で作るよりも、インターネットで不特定多数のボランティアを募ったほうが、はるかに人数も多くなるし、可能性も高くなる。僕が好きだったのはそうした「開発者をインターネットで募ってみんなで開発するボランティアの共同開発プロジェクト」だ。そしてそこでも、不自由な会社のルールを強要するのではなく、管理者とメンテナの個人の自由とした上で、CVSやGitのようなバージョン管理システムを使いながら、「どんなパッチでも送り付けてください」とすることが、僕にとっての正しい「自由」だった。
そもそも、ソフトウェアの利用について、さまざまな契約条項を付けて「売る」ということを行う時点で、ユーザーの「自由」は奪われてしまう。買ったとしても著作権が譲渡されるわけではなく、不自由な中でソフトウェアを使うことを余儀なくされる。不自由になるのはソフトウェアだけではなくハードウェアも含まれるため、フリーでないソフトウェアを使う時点で自らのコンピュータ自体が不自由になってしまう。自らが自由にコンピュータを使うという「楽しさ」を取り戻すためには、オープンソースを使わなくてはならない。オープンソースにおけるGPLのようなライセンスが「みんなのもの」という考え方を体現しているのは、何も共産主義をやりたいわけではなく、そのほうが自由だからGPLによる「みんなのもの」という考え方を採用しているだけにすぎない。オープンソースがボランティアによる「無料」のソフトウェアであるというのは、オープンソースの経済的な利用の一面しか見ていない。実際はオープンソースは「自由」というかけがえのない理想が存在し、GPLによって「みんなのもの」にすることで「一番自由なプログラムの開発方法」を行っているのである。
昔の僕は、そういう考え方をすべてひっくるめて「自由」と呼んでいた。そこにあるのはすべて、オープンソースのことを指す自由だった。
また、自由だけでなく、僕はさまざまなことをIT技術の通りに考えていた。Lispのような言語では無名関数を多用するし、JavaやCORBAなどではソフトウェアコンポーネントの再利用が重要とされる。そのような、「外部から改良することのできる改善可能性が許された製品」が僕にとっての理想だった。それを作った原作者でなくても、ユーザー自身がそれを改良でき、一度作られたソフトウェアは再利用でき、再利用性を高めるためにコンポーネント化し、再利用の際には無名関数やブロックを使うことができるように元から抽象的な再利用性が考えられた設計にする。僕にとっての理想とは、オープンソースであり、IT技術とハッカー文化だったのである。
だが、そのような僕も、インターネットのエキスパートでは決してなかった。僕は自らの失敗と過ちからLinuxのコミュニティを滅ぼした。すべては僕がインターネットということに精通していなかったせいであり、すべて、僕のせいでこの世界はLinuxとオープンソースのコミュニティが滅び、かつてのようなボランティア中心のオープンソースはインターネットから衰退してしまったのである。
Linuxは、オープンソースのOSです。リーナス・トーバルズによるモノリシックカーネルと、リチャード・ストールマンやその協力者によるGNUのフリーソフトウェア・システムを組み合わせて作られた、オープンソースなOSです。
オープンソースとは、「ソースコードが公開されている」という意味です。通常、プログラムには、機械語で書かれた「CPUで実行される単純なプログラム」と、C言語などの高級言語で書かれた「人間が読み書きし理解する、人間らしいプログラム」の2つがあり、このうち前者だけが存在していれば、プログラムを実行させることはできますが、後者が存在しなければ、プログラムを自分で書き換えたり、開発することはできません。そして、前者のプログラムを「バイナリ」と呼び、後者のプログラムを「ソースコード」と呼びます。そして、ソースコードを機械語のバイナリに変換するプログラムを「コンパイラ」や「言語処理系」と呼びます。
Linuxでは、OSのカーネルやコマンドのほか、言語処理系であるGCCやPerl/Python/PHPなどもオープンソースで、またサーバー(Apache/Nginx)・データベース(MySQL/PostgreSQL)・ウィンドウシステム(X11)・デスクトップ環境(GNOME/KDE)・Webブラウザ(Mozilla)・Officeソフトウェア(LibreOffice)・デザインソフトウェア(GIMP/Inkscape)のような、OSを使う際に必ず必要となるソフトウェアも、多くの場合全てオープンソースです。
オープンソースなOSでは、ソースコードを自由に見ることができます。自分でそのソースコードを書き換えて、自分の独自のプログラムを開発することもできます。この時、オープンソースソフトウェアにはソフトウェアによってライセンスの違いがあり、独自のプログラムを開発した際に、その自分で書いた部分をオープンソースにしなければならない「コピーレフト」のライセンスと、自分で書いた部分をオープンソースにしなくても良い「緩いオープンソース」のライセンスがあります。コピーレフトの代表がGPLで、LinuxはGPLで配布されているため、Linuxを改良した場合、その改良ソフトウェアを配布する際には、GPLで配布しなければなりません。
オープンソースであることは、2つの意味を持っています。まず、多くの場合「無料」であるということ。オープンソースは、RHELなど一部の例外を除いて、無料で配布されています。もう一つの意味は、「自由」であるということ。オープンソースのソフトウェアは、ソースコードが公開されているため、自分でそのソースコードを書き換えたり、コピーしたりする自由があります。
また、オープンソースには「コミュニティ開発」という一面があります。多くのオープンソースソフトウェアは、コミュニティによって開発されており、「開発に参加することが簡単」です。このため、その会社の従業員にならなくても、自分でアップストリームのプログラムに貢献できます。そのため、「第一配布元としてのオリジナルのプログラムに、自分の書いたコードを取り入れてもらう」ことができます。これは、KDEのようにデスクトップ環境などのプロジェクトでは、とても「楽しい」ということが言えます。「みんなで自由に開発できる」からです。ただし、オープンソースのプログラムにはコミュニティ開発ではなく会社が作っているものもあります。Qtや以前のMySQLは、会社によって開発されているオープンソースソフトウェアでした。
オープンソースのデメリットとして、「儲けるのが難しい」ということが言えます。オープンソースのことを良く「設計図が公開されたソフトウェア」であると言いますが、ラーメン屋を考えてもらえば分かるように、秘伝のスープを公開してしまえば、誰でもそれを無断でコピーして使うことができます。これでは、自分だけの独自のスープで儲けることはできません。オープンソースは、そもそもが個人やボランティアによる共同プロジェクトとして成り立っており、儲けることは考えていません。Red Hatのような商用のLinux企業は、サポートサービスで儲けようとしていますが、前途は多難で、どのようなビジネスモデルを行うのか、まだ確立されていません。それでもオープンソースは日々進歩しており、WebKitのようなオープンソースのHTMLレンダリングエンジンは多くのブラウザ(商用を含む)で標準的になったりしています。これはお金をかけて独自のWebブラウザを開発しても、既製品や無料のオープンソース製品の品質が高いために、独自では勝てないからです。
また、GitHubなどの努力によって、オープンソースソフトウェアは急速に開発の参加へのハードルが低くなっています。git cloneというコマンドを使うだけで、簡単に開発に参加できます。一昔では考えられないほど簡単になりました。
オープンソースの用語で、Windowsのようにバイナリだけが有料で販売されており、ソースコードは公開されていないソフトウェアのことを「プロプライエタリソフトウェア」とか、「独占ソフトウェア」と言います。これは、Microsoftというひとつの会社だけが、プログラムを理解・変更できる権利を「独占」し、ソフトウェアを「私有」しているからです。また、以前はオープンソースのことを「シェアードソース」(共有ソース)などと言うことがあったように、そもそもオープンソースとはソフトウェアの共有の文化です。みんなで同じソフトウェアを共有して、みんなで作り、みんなで使います。
オープンソースは、バザール開発のように、昔のソフトウェア開発手法を否定して現れた「IT業界の新星」でした。
みんなでよってたかって開発し、しょっちゅうリリースしながらみんなでバグを直すその手法は、潜在的かつ爆発的な可能性があるように見え、またIBMのような金儲けのビジネス主義ではない、新しいデジタル共産主義の成立のような可能性と希望がそこにありました。
ですが、そうした発想から10~20年経って、むしろ、オープンソースソフトウェア(OSS)はごく普通に使われるようになり、爆発的発展や進歩のような考え方よりも、「きちんと動く共有インフラ・基盤」のような側面が強くなりました。
また、Linuxのように、オープンソースでは個人のプログラマがボランティアで作った金儲けとは縁の遠い純粋なソフトウェアである、というのは嘘です。実際には、PHPやMySQLのようなオープンソースサーバー製品は、Yahoo!やGoogleそしてベンチャーのネットサービス企業などのプログラマが大きく貢献して開発されています。彼らはLinuxを使ったインターネットサービスで儲けながら、PHPのようなコミュニティで影響力を得るためにコードを寄贈しています。彼らは金儲けの集団であり、LinuxやOSSが金儲けとは縁が遠い綺麗なソフトウェアであるというのは大嘘です。また、最近はオープンソースの可能性を目につけて、Mozilla.orgのようにオープンソース化を頑張っている会社も増えてきましたが、逆にOracleのようにOSSが嫌いな会社も増えてきました。
また、オープンソースが下火になってきた要素のひとつとして、IT業界で強者が堅固になって確立されてきたというのが言えます。Microsoft、Oracle、Adobe、そしてGoogleやFacebookのようなGAFAが強くなり、それらが安定して新しいサービスを提供するようになりました。オープンソースは、彼らの格好の餌食であると同時に、彼らのシステム開発に大きく貢献していますが、彼らを覆すほどの強力さは無く、逆に彼らをもっと強くするだけのものになってきていると思います。
ですが、オープンソースが終わったわけではなく、僕は今でもオープンソースが進歩すると思っています。これからは、一部の先進企業が知っているだけの専門的知識を、日本のみんな、大企業から中小企業、あるいは別の業界の会社や一般の個人に向けて、Linuxやオープンソースの知識を共有することで、Linuxは庶民にとって優しい良いシステムになります。ただ、一部のハッカーが初心者を「タコ」とは呼ぶでしょう。そうであったとしても、僕はLinuxは今から、普遍的IT業界の知識として、「より一般的・普遍的になっていく」と思います。少しずつ、日本の業界もオープンに融和的になり、著作権や知的財産権を「守る自由だけではなく誰しもに与える自由」の時代になっていくと思います。
また、オープンソースがごく一般的になっていくことに、不安を覚える方は居ると思います。「著作権の全く守られない世界になるのではないか」という不安です。ですが、僕はこれは、「別の形で儲けられるビジネスモデルが自然に確立されていく」と思います。たとえばYouTubeはコピーし放題ですが、広告で儲けながら著作権団体と協調し(一部の利益を還元している)、また動画の作成者には再生回数でお金を払うことで新しいビジネス市場を作り、歌手にお金を還元しています。そうした既得権への確執は、必ず別のエコシステムを生む新しいものへと自然に変わっていくでしょう。たとえば、昔のRed Hat Linuxをforkして、「セキュリティを守りながら互換性を保つ」ような形で、新しいサポート企業がでてくる可能性などが、それに当たるでしょう。
後日注記:Linuxやオープンソースが金儲けとは縁の遠い綺麗なソフトウェアではない、というのは確かに正しいが、彼らはそもそも個人プロジェクトを今でも続けているだけであり、また、「ボランティアが働いてみんなのコードをGPLで作る」というやり方はとても共産主義に近い「善意のOS」である、ということは注意しておくべきである。彼らはとても公正で透明性のある集団であり、今後も簡単に会社のものにはならないだろう。
オープンソースの文書として一番著名なのは以下のエリック・レイモンドによる「伽藍とバザール」。一応読んでおきましょう。
それから、Mozillaに関する以下の文書がとても面白い。
僕が言えることとして、「GNUの考え方は必ずしもUNIXと合致しない」というのが言える。
UNIXには独自の哲学があり、その中でも大切なのは「シンプルにしなければならない」ということである。UNIXでは、他のどんな要素よりも、シンプルさと単純さを重視する。
GNUは、必ずしもシンプルではない。GNUはコマンドを作るのであっても、どんどん機能をつけて、何でもできるようにする。Red Hatのようなオープンソース企業は、これでもかというぐらい信頼性、機能性、性能などを高めるが、その結果重くなり、プロのためのOSではなく初心者に優しいだけの重くて使い辛いものになろうとしている。その最たる例が、GNOMEやsystemdである。
そう、Xfceのようなシンプルなデスクトップ環境は、UNIXの哲学に戻ろうとしている。ごてごてと機能をつけるGNU/Linuxのやり方は、必ずしもUNIXと合致するものではない。これはLinuxの大きな反省点である。
UNIXは、元のAT&T UNIXはパブリックドメインで提供され、さまざまな商用UNIXとしてコードが使われました。そこから、たくさんのUNIX互換OSが生まれました。
ですが、彼らプロプライエタリ企業は、UNIXを用いて自社のワークステーションを販売し、儲けるだけで、商用UNIXの「著作権フリー」を継承し、自らのUNIXをオープンにしませんでした。
たとえばX Window Systemは、多くのUNIXでバイナリだけを配布している、ということは先に書いた通りです。
ですから、「会社が使う時にも、オープンにせよという強制力を発揮する」という意味で、GPLは「ソースコードを永久にフリーのままにするライセンス」なのです。
GPLにすることは、一見ソースコードの利用者に強い制約を課すように見えるかもしれません。ですが、そのソフトウェアのユーザーのことまで考えると、GPLにすることがフリーソフトウェアとして正しいのです。商用のLinuxでも、LinuxカーネルはGPLのままです。Linuxカーネルをオープンソース以外のライセンスで配布することはできません。つまり、GPLにしなければ、会社に上手く使われてしまい、オープンシステムを増やすように見えて、結局はシステムの自由度や可能性を「商用という狭い器に閉じてしまう」のです。
また、ソースコードが必ずオープンであることは、とても良いことです。それは、「自らのコンピュータの動作や機能を把握し、改善し、みんなと共有できる」という「ハックする楽しさ」を与えてくれるからです。決して、オープンでないコードが「悪」であると言うわけではありません。ですが、商売という狭い器の中で、ソースコードへのアクセスという自由な権利を制限することは、本当に理想的なコンピュータの利用形態として、「一次開発者」や「構築者」としてみれば、良いことではありません。そうした「保守的なオープンソース」だけではなく、自らのコンピュータが自由に使えること、同時にそのソースコードが公開されていることは、革新的で革命的なパラダイムをもたらします。「会社が作るのではなく、ユーザー自身が作る」というオープンソースの精神は、ハックする楽しさを私たちに与えてくれます。これは教育やプログラマ入門という意味でも、優れているでしょう。
プログラムを利用するユーザーが作る、という発想は、Windows以降の「ユーザーが隷属するコンピュータ」を変えてくれます。ハッカーは、プログラムを使いながら自分でそれを改良します。DistroWatch.comが言うように、「コンピュータを使う楽しさを取り戻すには、Linux/BSDを使うしかない」ということです。ですが、その考え方があるから、Linuxは一般ユーザーにとって、いつまでも使いづらいものなのかもしれません。ですが、プログラミングを決して難しいとは思わないでください。理解するのが難しいだけで、理解してしまえばやっていることは誰にとっても必ず簡単だからです。特に、Windows APIばかり覚えていて、「プログラミングは何て難しいのだろう」と思っている方は、UNIX/LinuxのAPIを見て拍子抜けするでしょう。「こんなに簡単にプログラミングができるのだ」と知ってほしいと思います。
後日注記:そもそも、WindowsのようなクローズドソースのOSは、地球の文明に対してとてももったいないことをしている。ユーザーが自分で調べて自分の意志で改良する、という可能性を「初めから閉じている」からである。オープンにしてしまえば、それだけでさまざまな人が開発し、OS自体が発展していく可能性を、金儲けという生産手段によって閉じてしまっている。Microsoftが利益を上げてそのお金で作れるとはいうが、もしMicrosoftが作らなければ、他の人間には誰にも作れない。Microsoftがきちんとせず、不正な会社になってしまえばそこで終わりである。これは資本主義から見れば当然のことかもしれないが、人類の歴史全体を見ればつまらないことである。
また、オープンソース的に言えば、「プログラムは誰のものでもない」と言えます。オープンソースのプログラムは、みんなのものです。誰か特定の「一部の人間」のものではないのです。誰かが特権的にプログラムを変更できる権利を独占するのではなく、みんなのものにすることでみんながプログラムを変更できる権利を平等に得ることができます。
また、オープンソースをデジタル共産主義と見なすこともできます。ここで言えるのは、「コピーには良い点もある」ということです。それは、ただ単にコピーできるだけではなく、ソフトウェアには設計は必要でも製造は必要ありません。工場のようなものがなくても、一度コンパイルできるだけのソースコードを書いてしまえば、「ゼロコストでコピーして製造できる」ことが可能です。ここで、共有する、ということを思い出しましょう。共有することができるのは、ゼロコストでコピーできるからです。必要なのは最初の製造コストだけであり、コピーするたびに製造コストはかかりません。コピーはゼロコストで、どんなコンピュータでも行うことが出来ます。
後日注記:オープンソースのボランティアによる労働を、スポーツや将棋のようなものだと思えば良いだろう。誰かにお金を払ってもらわなくても、自分が趣味でするマラソンなどは、自分の実費でも行いたいものである。オープンソースもそれと同じで、設計図は書きたい人が書き、それをオープンに無料で誰にでも提供することで、そこから別の人がプログラムを改善したい人が開発する。オープンソースの「デジタル共産主義」とは、そうした「スポーツや将棋のようなプログラミング」をベースの思想としている。
オープンソースの利点は、ゼロコストと自由だけではなく、「みんなで繋がり合うことで、爆発的な人材資源の集積性を発揮する」ということです。これがオープンソースの真価です。オープンソースにするだけで、魔法のように高品質のソフトウェアが生み出されます。
ですが、これは必ずしも成り立つものではありません。リーナス・トーバルズのような天才が、上手くまとめあげたために実現したものであり、Netscapeのような失敗例もあります。ですが、オープンソースは日進月歩です。Mozilla.orgも、まだ失敗したわけではありません。
オープンソースには、維持コストがあまりかかりません。会社のようなプロジェクトチームがなくても、適当にGitHubにアップしておけば、誰かが開発するかもしれないし、しないかもしれません。
ですが、Linuxのような成功例は、そんなにたくさんはないでしょう。Linuxが特別、リーナスによる素晴らしいソフトウェアプロジェクトだった、とは言えるかもしれません。それも、本当はGNUなど他のプロジェクトがなければ成り立たなかったでしょう。たくさんの善意の貢献者が生まれた背景には、LinuxとフリーUNIXの可能性を良く分かっている善意のボランティアたちが居たからだ、とは言えるでしょう。決して、Linuxは偶然ではありませんが、必然でもありません。
GNUにはなくてLinuxにあるものといえば、「楽しさ」だろう。リーナスが書いたコードは、今見れば子供のようなものだった。その子供をみんなで育て上げ、使えるぐらいのレベルにしていった。みんな、すべきことを雰囲気から分かって行った。GNUのGCCやls,cat,cpなどを乗せて、安定版のカーネルでBashが動いた時の感動はどういいうものだったのだろうか?そして、それだけで終わらず、リーナスはたくさんの開発者と一緒に、Linuxカーネルをポータブルな移植性の高いものにし、さまざまな善意のボランティアがハードウェアを対応させていく。カーネルのメモリマネージメントなどは、分かる人間が協力して改良する。ドキュメントはネットだけが頼りで、分からないところはソースコードを読む、そんな善意のプログラマがコードを自由に書いていった。それだけで、超一流のカーネルと、「GNUによればGNU/Linuxと呼ぶべきである」OS環境が生まれていった。それは、当時革新的なパソコン用のOSだったMicrosoftのWindowsに対する、まさに「革命」だったのだ。
オープンソース革命によって、さまざまなプロジェクトが生まれた。Linuxカーネルは元より、Perl、Apache、XFree86、それからGCC、KDE、GNOME、Debianなど。だが、それらはすべてオープンソースのコミュニティプロジェクトであり、ビジネスほどの品質はあっても、コミュニティによる開発にとどまっていた。リーナスは、「100人以上の単位で仕事ができる企業が参加してからが面白かった」と言っている。Red Hat、Netscape、Sun、そして何よりIBMである。どんどんLinuxは発展し、果てはメインフレームの品質にまで達するようになった。Windowsよりも安定して動くようになっていく、その過程が創造的で面白かった。
残念ながら、僕がパソコンに関わり出したのは2000年ぐらいからであり、Linuxのことをやろうと思って調べ出したのは2002~2003年ぐらいからであって、僕はそうした初期のLinuxの熱気というものは知らない。だが、僕が参加・活動したのは特にPHPやWindows XPぐらいの時代である。当時のパソコンの文化はとても面白くて、ツイッターやFacebookは無くても2ちゃんねるとブログ(当時はトラックバックという機能で、ブログの記事に対して別のブログがトラックバックを送るような形で関係が構築されていた。今の「いいね」や「友達」よりもはるかに面白かった。)でさまざまなことが分かった。当時はLinuxは問題だらけで、AnthyやFirefoxなどが誕生して、「やっとLinuxがWindowsと同じぐらい使い物になる」というところまで達しようとしていた。あの時代が、一番Linuxのボランティアも多くて、みんな輝いていた。Windowsと競い合っていても、誰もがMicrosoftをリスペクトし、尊敬していた。今の時代、そうした「他人に対する尊敬」というものがなくなった。Googleのせいだと思う。全部Googleがネットを壊した。それは、ある種、僕の強迫観念のように、「全部自分の責任である」ということを狂ったように痛感している。だが、反省はしていないのだ。
Linuxに欠けているのは、「マネージメント」の部分だろう。特に、「みんなで同じ目的を共有する」ということが苦手だ。誰か一人がリーダーシップを持って決めるということができない。GNOME 3やMozilla.orgのような失敗を繰り返している。ただ作るソフトウェアを目標にするところまでを共有するせいで、パクリ製品なら作れるが、誰かの「賢いイメージ」をみんなで共有することができない。それは、結局、IBMのような「職場でウォーターフォールで作る」ということに戻ってしまう。だが、ピンチはチャンスに変えられる。オープンソースやインターネットで繋がることを上手く活かして、「みんなでビジョンを共有してデスクトップインターフェースを作る」ということなら、きっと誰かが始めてみんなで協力すれば出来るだろう。GNOMEに対するCinnamonやMATEなどが、そういう方向性に行くと良いだろう。必要なインフラやツールを作るのは得意な代わり、芸術的な分野をすることが出来ない。独自の個性がない。それも、きっとそのうち、賢いデザイナーが変えていくことだろう。
オープンソースに言えることとして、「烏合の衆が作っているから信頼できない」とか、「オープンだから(商売にならないから)誰も作っていない」ということが良く言われる。
だが、現実は逆で、オープンソースのソフトウェアは、とても信頼性の高いバックエンド製品が多い。
それは、ソースコードが公開されていると、「誰でも内部のコードの信頼性を検査することが出来る」ということによるものである。
要は、ソフトウェア内部の設計や仕組みを、良く理解し良く精査した上で、信頼性の高い製品だけをカスタマイズしたり最低限の構成でインストール・導入したりすることができる。
ある意味、Windowsの問題とは、OS全体、そしてそれ以上のさまざまなコンポーネントを、会社の特定の部署だけの検査で作っているからだ。そして、誰にも公開せず、誰にも変更を許していない。金は稼げるかもしれないが、この手法では自分たちの独りよがりの組織になって、その集団だけにしか分からなくなってしまう。
Linuxにも言えることとして、「初心者お断り」という閉鎖的な雰囲気が言われることがある。分かっている人間しか使ってはならないとか、分からない人間は恥であるという考え方だ。これは無くしていかなければならない古い考え方だ。Linuxはオープンであり、誰でも参加することができるし、誰でもソースコードを見てプログラムを研究・改良・開発・応用することができる。コミュニティは開かれたものであるべきだし、みんなで信頼できるようになるために、それぞれが「業界全体のオープン資産」を「品質の高い安定した状態で」維持していかなければならない。
オープンなコミュニティの特徴として、「出来るだけ既存のプロジェクトの中でやるべきだが、本当に意見が分かれた時はfork(分岐)する」と言う考え方がある。NetBSDからOpenBSDが分岐したように、これは良い結果をもたらすこともある。DebianからUbuntuが分岐したのも同様である。だが、これは間違った指導者の場合、プロジェクトを存続できなくなってしまう。リーナス・トーバルズは、今のところLinuxカーネルをあまり分岐させたりしていない。だが、それぞれのリポジトリを分離させたり、Red HatやDebianなどのディストリビュータが独自のカーネルパッチを作ったり、あるいはLinux-libreのようなGNU版の完全にフリーソフトウェアによるLinuxカーネルなどもあるし、マイクロカーネル版のようなものもある。しかしながら、全体を見ていると、Linuxの周辺プロジェクトは、それぞれが主体性を持ちながら良くまとまっている。もちろん、GNOME3からMATEやCinnamonが分離したなどの例はある。だが、UNIXのAPIを逸脱したようなプロジェクトはあまり見ないし、同じ目的でたくさんのプロジェクトが生まれる例も(Ubuntuなどを除いて)あまり見受けられない。それは、Linuxコミュニティの「奇妙な一体感」に属するものかもしれない。GNUやRed Hatなどさまざまな貢献者は居るが、中核となるコードは共有しようとする意志が働いているように思う。
それはどうでも良いとして、オープンソースだからこそ、信頼性が高い、というのは確かにある。Windowsの周辺に存在する商用あるいはフリーウェア系のソフトウェアは、RealPlayerやWinZIPなど、怪しくて胡散臭い会社とソフトウェアが多い。Linuxが必ずしも「安心できる」わけではないが、PHPやPythonなどを見ていると、オープンソース系のソフトウェアは「ITにおける確かなインフラ的役割」を維持している。ソースコードが見れるために、悪いコードを内部に仕込んだりすることは難しいだろう。セキュリティの問題やバグの問題でも、オープンソースの方が信頼できるというのは確かにあるのである。
だが、オープンソースは逆に、使いやすいものが作れていないところがある。FirefoxやGIMPなどを見ても、「プロ向けの詳細機能」には強くても、「優れた操作性」には弱い。GNOME3のような失敗例を挙げるまでもなく、Ubuntuなどは使いやすいと言われているが、実際に使ってみると全く使いやすくもないし、操作性も優れていない。そもそも、Ubuntuは分かりやすいように見えて、初心者向けにさまざまな拡張を施しているせいで、一番分かりにくい。どんなアプリケーションがあるのか(そもそも使えるアプリケーションがどれくらいあるのか)も分からないし、分かろうとするために気力をさまざまに使い果たすせいで、使おうとする気が起きなくなる。使っている際の苦労や労力も半端ないし、みんなと違うせいでネットや家庭で疎外感を感じてしまう。
そういうわけで、デスクトップ用途では必ずしも気分良く使えるものではないだろう。だが、業者向けのサーバーや開発用途から見れば、先ほど言ったように、オープンソースは信頼性がある。きちんと動くことが検証できるし、開発の際にはソースコードを参照することができる。本当にコンピュータ科学をやりたい場合や、ITについて勉強したい教育用途についても、良い効果が期待できる。だが、問題はやはり使いやすさの部分だ。デスクトップにおいては、Windowsに勝つことはまだ出来ないだろう。むしろ、本当はGNOME3はそんなに悪いものではない。GNOME3は最近、エクステンションを入れることで使いやすくなることがしだいに分かってきている。Windows 7とほとんど同じタスクバーインターフェースにすることもできる。だが、Linuxデスクトップはまだまだだ。
あとは、組み込みなどの用途、たとえば車などに組み込む用途でLinuxが使われるのは、「ネタではないか」と言われることもある(リーナスが作った自作のカーネルが人の命に係わるものにまで使われるようになっているのはありえない)が、明らかにそれはオープンソースの優位性、特に「ソースコードが見れる」という部分である。車の会社の技術力は、本当はIT企業なんかよりはるかに高い。Linuxのカーネルの仕組みを調べて、必要なところは書き換え、削除し、追記して、「絶対に動かないといけない」時にきちんと動くようにしている。それこそ、オープンソースの一番の優位性である「自由に改変・再配布ができる」ということである。自動車でLinuxは冗談だと思う人間も多いが、時代は変わりつつある。オープンソースでデジタル共産主義をしながら、自動車をグローバルに輸出して儲ける、それが今からの自動車とパソコンの協力の在り方である。
後日注記:オープンソースは確かにインフラ基盤ソフトウェアを多く輩出していますが、それでもPostgreSQLやMySQLはOracleにはかないません。やっぱり、オープンソースと商用の間には依然として隔たりがあり、さすがにデータセンターを完璧にオープン技術にすることは難しく、Amazonなども独自のDBMSを開発しています。Oracleは最近「オープンソースはもう流行っていない」ということを言っていたことがありましたが、彼らの主張も理解できます。本当に必要なところでは、商用の開発もまだまだ必要です。オープンだから品質が高い、というのは嘘になるでしょう。
オープンソースのソフトウェア開発とは、もちろん1からソフトウェアを開発することもあるが、本質的には1から開発するというよりも、「既にあるプロジェクトに参加し、協力し、ソフトウェアを改良・改善する」という開発手法に根差している。
たとえば、Wineのように、たくさんの人々の改良を待っているプロジェクトに参加して、自分が出来る限りのコードを書く、といった具合である。
これに言えることは、「本気で1からソフトウェアを開発するのではなく、出来あいのソフトウェアを使いながら、必要になった時に必要に応じて追加コードを書いていく」という、ある意味エジソンの言った「必要は発明の母」のように、「必要になった段階で機能を付け足していく」という考え方である。
特に、フリーソフトの開発は、パクリ合戦になることが多い。Sleipnirがつけた機能をLunascapeがパクったりする。オープンソースでは、ひとりの開発者が過剰に頑張ってコピー機能をつける必要はない。それぞれの作ったものを持ち寄って、みんなのソフトウェアにする。そういう風に開発していけば、おのずと善意のボランティアの参加者が、誰よりも優れたひとつの大きなソフトウェアを作ることができる。
そういうわけで、オープンソースでプログラムを作るのは、「いざ作りたい」と思ってするものではない。「こんな機能を探していたけれど、ないから作った」という風に思ってするものである。GNOMEを漠然と改善したくなっても、その改善が何を意味しているのか分からない段階では開発出来ない。それよりも、まず使ってみて、こんな機能がないようなら自分で作る、といった風に開発する。オープンソースとはそういうものなのである。
後日注記:オープンな共同開発はリーナス・トーバルズが言うようにとても「楽しい」もので、僕がOpenJaneなどで開発をしたりプロジェクトを見ていたりした時も、みんなで一緒に作り、作りたいなら派生版を作っても良い、という姿勢はとても面白いものです。今のTwitterのような「たくさんの不特定多数が参加するSNS」よりも少し前の段階である「少人数だが色んな人間が共同でプロジェクトに携わっている」というのは、やっている側だけではなく見ている側も面白いでしょう。
技術を公開し、オープンソースにする、という戦略は、会社・企業のビジネスモデルとして、最近は少しずつ影響力を与えている。たとえば、ひとつの優れた技術をオープンソースとして公開することで、業界の標準的地位を獲得し、自分がIT業界のその分野のリーダー的存在となる。この例としては、MySQL、Android、Eclipse、そしてAT&T UNIXやIBM PCまで含まれるだろう。
だが、今の例は、あくまで会社が開発するオープンソースソフトウェアであって、「爆発的なオープンソースのコミュニティ開発による可能性」までを見ていない。オープンソースは革新的な技術の開発体制であり、人々がコラボレーションすることによる可能性である。この例としては、Mozilla.orgやLinux、Red Hatが挙げられるだろう。
後日注記:IBMはそんなに優れた商用会社ではなく、新しい市場があった時に「市場を潰すためにオープンにする」ということを本気でやる。だが僕は、それはオープンソースの狭い面しか見ていないと思う。オープンにすることでとても多くの潜在的可能性がある、ということをIBMは分かっていないのではないかと思う。
GPLは、GPLという同じライセンスで派生ソフトウェアを公開しなければならないため、一見、会社経済と親和性が低いように見える。
だが、たとえばRed HatとGoogleが同じソフトウェアを開発する場合、「公開する時はGPLで公開してくださいね」という、「オープンな協力」の合意として、利便性が高い一面がある。
これは、パブリックドメインではできない。たとえば、Red HatとMicrosoftのような競合が極まっている関係にある会社にとっても、「公開する時はGPLで」という協力する前提の合意ライセンスとして利用できる。これは、たとえばAppleとGoogleのような敵対関係にあるソフトウェア会社も、競争を抜きにして同じWebKitを開発する、ということが(おそらくは)可能である。(GoogleとAppleについては、WebKitからBlinkが生まれているように、必ずしも上手く行っていないようである。)
Linuxカーネルの成功があって、現在ではさまざまな会社がオープンソースに関わるようになった。
これは、さまざまな会社を巻き込んで、オープンな共同開発を行う、「コミュニティという名の協力の場」になるか、というところが、今からのオープンソースの課題である。
たとえば、BtrfsはOracleによって開発されている。Oracleは、データベースの会社として有名で、一番信頼性のあるデータベースを高額で販売している。「データベースの会社が作ったぐらいだから、信頼性があるのだろう」と言えるだろう。また、Microsoftは.NET Coreをオープンにした。
このように、各社がたくさんのオープンソース開発を行うことで、オープンソースという製品は、「ひとつの会社のひとつの製品ではなく、さまざまな会社が作ったたくさんの製品の集合」となっていく。
これは、インターネットのホームページと良く似ている。インターネットは、テレビのように限られた会社が作ったメディアではない。さまざまな個人や会社の集合として、時にはオープンなプロジェクトから新聞社のような古い大企業もいっしょくたにした、「共同開発コンテンツ」である。オープンソースは、今からの世界を、共同開発にしていく、そうしたきっかけと発表の場になっていく。
GPLのようなフリーソフトウェアのライセンスを、ソフトウェアだけではなく文書やマルチメディアコンテンツなどにも適用することのできるライセンス。
著作者の明示や非営利や改変禁止、あるいはGPLと似たような継承条項を付けることができる。
そもそも、日本の同人誌のような、「著作権には違反しているかもしれない(グレーゾーン)ものの、犯罪が目的ではない、クリエイティブな共有」を推進するために作られたライセンスである。
クリエイティブ・コモンズはたまに継承ライセンスがついていることがありますが、著作権法上認められている「引用」の場合においては、それを超えた利用が可能です。
Wikipediaなど、CC-BY-SAのライセンスの文書の場合でも、一部の引用であればその条文を超えて利用することができます。
FAQ よくある質問と回答 - クリエイティブ・コモンズ・ジャパンより引用。
“6. CCライセンスを付けることで「著作権の制限」に関する規定の適用に影響はありますか?
いいえ。
日本では、著作権法第30条から第50条までに「著作権の制限」に関する規定が設けられており、「私的使用のための複製」「引用」等、所定の場合に限って著作権者から許諾を得ずに作品の利用ができることが規定されています。これらの著作権法上認められている利用は、ライセンスの影響は全く受けません。
例えば、「非営利」の条件があるCCライセンスのついた作品を利用する際、著作権法上規定されている「引用」に該当すれば、仮に営利を目的とする利用でも認められることとなります。この点を明確にするために、我々のライセンスには、「本ライセンスによってあなたのフェア・ユースその他の権利が影響を受けることはまったくありません」との条項が設けられています。”
Open Source Initiativeによるオープンソースの定義。
GNUによるコピーレフトなライセンス。
Mozillaによるライセンス。GPLと異なり、派生ソフトウェアのソースコードの中の自分で記述した部分はソースコードを公開しなくていい。
2023.01.21編集
その他、オープンソースのライセンスは、BSDライセンスのようなコピーレフトでないものを含めて、たくさんあります。
パーミッシブ・ライセンスも参照のこと。
オープンソース開発を参照のこと。