Assyのリベラル文学研究所もご覧ください。

GNUとオープンソース

フリー・オープンソースソフトウェアの文化

LinuxオープンソースのOS

Linuxは、オープンソースのOSです。リーナス・トーバルズによるモノリシックカーネルと、リチャード・ストールマンやその協力者によるGNUフリーソフトウェア・システムを組み合わせて作られた、オープンソースなOSです。
オープンソースとは、「ソースコードが公開されている」という意味です。通常、プログラムには、機械語で書かれた「CPUで実行される単純なプログラム」と、C言語などの高級言語で書かれた「人間が読み書きし理解する、人間らしいプログラム」の2つがあり、このうち前者だけが存在していれば、プログラムを実行させることはできますが、後者が存在しなければ、プログラムを自分で書き換えたり、開発することはできません。そして、前者のプログラムを「バイナリ」と呼び、後者のプログラムを「ソースコード」と呼びます。そして、ソースコード機械語のバイナリに変換するプログラムを「コンパイラ」や「言語処理系」と呼びます。
Linuxでは、OSのカーネルやコマンドのほか、言語処理系であるGCCPerl/Python/PHPなどもオープンソースで、またサーバー(Apache/Nginx)・データベース(MySQL/PostgreSQL)・ウィンドウシステム(X11)・デスクトップ環境(GNOME/KDE)・WebブラウザMozilla)・Officeソフトウェア(LibreOffice)・デザインソフトウェア(GIMP/Inkscape)のような、OSを使う際に必ず必要となるソフトウェアも、多くの場合全てオープンソースです。
オープンソースなOSでは、ソースコードを自由に見ることができます。自分でそのソースコードを書き換えて、自分の独自のプログラムを開発することもできます。この時、オープンソースソフトウェアにはソフトウェアによってライセンスの違いがあり、独自のプログラムを開発した際に、その自分で書いた部分をオープンソースにしなければならない「コピーレフト」のライセンスと、自分で書いた部分をオープンソースにしなくても良い「緩いオープンソース」のライセンスがあります。コピーレフトの代表がGPLで、LinuxGPLで配布されているため、Linuxを改良した場合、その改良ソフトウェアを配布する際には、GPLで配布しなければなりません。
オープンソースであることは、2つの意味を持っています。まず、多くの場合「無料」であるということ。オープンソースは、RHELなど一部の例外を除いて、無料で配布されています。もう一つの意味は、「自由」であるということ。オープンソースのソフトウェアは、ソースコードが公開されているため、自分でそのソースコードを書き換えたり、コピーしたりする自由があります。
また、オープンソースには「コミュニティ開発」という一面があります。多くのオープンソースソフトウェアは、コミュニティによって開発されており、「開発に参加することが簡単」です。このため、その会社の従業員にならなくても、自分でアップストリームのプログラムに貢献できます。そのため、「第一配布元としてのオリジナルのプログラムに、自分の書いたコードを取り入れてもらう」ことができます。これは、KDEのようにデスクトップ環境などのプロジェクトでは、とても「楽しい」ということが言えます。「みんなで自由に開発できる」からです。ただし、オープンソースのプログラムにはコミュニティ開発ではなく会社が作っているものもあります。Qtや以前のMySQLは、会社によって開発されているオープンソースソフトウェアでした。
オープンソースのデメリットとして、「儲けるのが難しい」ということが言えます。オープンソースのことを良く「設計図が公開されたソフトウェア」であると言いますが、ラーメン屋を考えてもらえば分かるように、秘伝のスープを公開してしまえば、誰でもそれを無断でコピーして使うことができます。これでは、自分だけの独自のスープで儲けることはできません。オープンソースは、そもそもが個人やボランティアによる共同プロジェクトとして成り立っており、儲けることは考えていません。Red Hatのような商用のLinux企業は、サポートサービスで儲けようとしていますが、前途は多難で、どのようなビジネスモデルを行うのか、まだ確立されていません。それでもオープンソースは日々進歩しており、WebKitのようなオープンソースのHTMLレンダリングエンジンは多くのブラウザ(商用を含む)で標準的になったりしています。これはお金をかけて独自のWebブラウザを開発しても、既製品や無料のオープンソース製品の品質が高いために、独自では勝てないからです。
また、GitHubなどの努力によって、オープンソースソフトウェアは急速に開発の参加へのハードルが低くなっています。git cloneというコマンドを使うだけで、簡単に開発に参加できます。一昔では考えられないほど簡単になりました。
オープンソースの用語で、Windowsのようにバイナリだけが有料で販売されており、ソースコードは公開されていないソフトウェアのことを「プロプライエタリソフトウェア」とか、「独占ソフトウェア」と言います。これは、Microsoftというひとつの会社だけが、プログラムを理解・変更できる権利を「独占」し、ソフトウェアを「私有」しているからです。また、以前はオープンソースのことを「シェアードソース」(共有ソース)などと言うことがあったように、そもそもオープンソースとはソフトウェアの共有の文化です。みんなで同じソフトウェアを共有して、みんなで作り、みんなで使います。

自分が自由に使わせてもらっているお返しに、相手にも自由に使わせてあげる

フリー・オープンソースソフトウェアの文化、あるいは第一の考え方として、「自分がソフトウェアをソースコードと一緒に自由に使わせてもらえているのだから、自分が作ったソフトウェアについてもソースコードを公開し、他人が自由に使えるようにしよう」というものがあります。
フリーソフトウェアオープンソースソフトウェアの文化は、すべてそうした「思いやりのお返し」がベースになっています。
これは、著作権や特許を使用し、コピーや再配布や改造を禁止して、「著作者が生活できるように代金を払う」というものとは、まったく逆の文化です。
また、こうしたフリーソフトウェアの文化は、インターネットと親和性が高く、「善意の気持ちで開発に貢献しようという片手間のエンジニアが何千人も集まって、バザール開発という全く新しい開発モデルで一流のOSが開発された」として、Linuxカーネルは革命的かつ破壊的なものとしてみなされました。
いろいろと批判する要素の多いGPLというGNUの一般公共ライセンス(パブリックドメインのような一般的なライセンスとしてみなされるためにこのような名称をつけたのだろう)でも、「ソースコードを使って作られた派生ソフトウェアは、もとのソフトウェアと同じように自由な権利を認めなければならない」という許諾書を裁定しています。
GPLがどこまで認められ、どこまでが派生ソフトウェアでどこまでが引用であるか、などといったことは良く議論されますが、裁判が起きてみなければ分からないでしょう。

ストールマンが独りで頑張っている

最近も、RMS(リチャード・M・ストールマンのこと)がGNUを率いて独りで頑張っています。
GCCEmacsを書いたストールマンですが、「たくさんの偉大な貢献者が居て、それらがGNUを作ったため、GNU/Linuxと呼ばなければならないのだ」と言っています。
ですが、実際のところ、GNUやそれを後押しするFSFは、ストールマンが独りだけでいつまでも頑張っています。
おそらく、GPL v.4を作っても、それを批判する人はたくさんいるでしょう。ですが、ストールマンには頑張ってもらわなければなりません。彼が居なければ、Linuxの今はありませんでした。未来がRed Hat/IBMに潰されないように、ストールマンだけには頑張ってほしいです。ストールマンは優れたエンジニアです。次なるソフトウェアを何か書いてほしいと思います。

OSSは昔は爆発的な可能性があるように見えたが、今からはごく一般的になる

オープンソースは、バザール開発のように、昔のソフトウェア開発手法を否定して現れた「IT業界の新星」でした。
みんなでよってたかって開発し、しょっちゅうリリースしながらみんなでバグを直すその手法は、潜在的かつ爆発的な可能性があるように見え、またIBMのような金儲けのビジネス主義ではない、新しいデジタル共産主義の成立のような可能性と希望がそこにありました。
ですが、そうした発想から10~20年経って、むしろ、オープンソースソフトウェア(OSS)はごく普通に使われるようになり、爆発的発展や進歩のような考え方よりも、「きちんと動く共有インフラ・基盤」のような側面が強くなりました。
また、Linuxのように、オープンソースでは個人のプログラマがボランティアで作った金儲けとは縁の遠い純粋なソフトウェアである、というのは嘘です。実際には、PHPMySQLのようなオープンソースサーバー製品は、Yahoo!Googleそしてベンチャーのネットサービス企業などのプログラマが大きく貢献して開発されています。彼らはLinuxを使ったインターネットサービスで儲けながら、PHPのようなコミュニティで影響力を得るためにコードを寄贈しています。彼らは金儲けの集団であり、LinuxOSSが金儲けとは縁が遠い綺麗なソフトウェアであるというのは大嘘です。また、最近はオープンソースの可能性を目につけて、Mozilla.orgのようにオープンソース化を頑張っている会社も増えてきましたが、逆にOracleのようにOSSが嫌いな会社も増えてきました。
また、オープンソースが下火になってきた要素のひとつとして、IT業界で強者が堅固になって確立されてきたというのが言えます。MicrosoftOracleAdobe、そしてGoogleFacebookのようなGAFAが強くなり、それらが安定して新しいサービスを提供するようになりました。オープンソースは、彼らの格好の餌食であると同時に、彼らのシステム開発に大きく貢献していますが、彼らを覆すほどの強力さは無く、逆に彼らをもっと強くするだけのものになってきていると思います。
ですが、オープンソースが終わったわけではなく、僕は今でもオープンソースが進歩すると思っています。これからは、一部の先進企業が知っているだけの専門的知識を、日本のみんな、大企業から中小企業、あるいは別の業界の会社や一般の個人に向けて、Linuxオープンソースの知識を共有することで、Linuxは庶民にとって優しい良いシステムになります。ただ、一部のハッカーが初心者を「タコ」とは呼ぶでしょう。そうであったとしても、僕はLinuxは今から、普遍的IT業界の知識として、「より一般的・普遍的になっていく」と思います。少しずつ、日本の業界もオープンに融和的になり、著作権知的財産権を「守る自由だけではなく誰しもに与える自由」の時代になっていくと思います。
また、オープンソースがごく一般的になっていくことに、不安を覚える方は居ると思います。「著作権の全く守られない世界になるのではないか」という不安です。ですが、僕はこれは、「別の形で儲けられるビジネスモデルが自然に確立されていく」と思います。たとえばYouTubeはコピーし放題ですが、広告で儲けながら著作権団体と協調し(一部の利益を還元している)、また動画の作成者には再生回数でお金を払うことで新しいビジネス市場を作り、歌手にお金を還元しています。そうした既得権への確執は、必ず別のエコシステムを生む新しいものへと自然に変わっていくでしょう。たとえば、昔のRed Hat Linuxをforkして、「セキュリティを守りながら互換性を保つ」ような形で、新しいサポート企業がでてくる可能性などが、それに当たるでしょう。
後日注記:Linuxオープンソースが金儲けとは縁の遠い綺麗なソフトウェアではない、というのは確かに正しいが、彼らはそもそも個人プロジェクトを今でも続けているだけであり、また、「ボランティアが働いてみんなのコードをGPLで作る」というやり方はとても共産主義に近い「善意のOS」である、ということは注意しておくべきである。彼らはとても公正で透明性のある集団であり、今後も簡単に会社のものにはならないだろう。

GPLは買ったものを自由に手渡しする感覚に近い

GPLは、自由を守るためにソースコードを公開し、コピーレフトという継承ライセンスによってもしGPLで書かれたプログラムから派生したプログラムがあれば必ずGPLで配布する必要があり、ソースコードを渡すように求められたら渡さなければいけません。
GPLはそのように、「守らなければいけない約束事」があります。ですが、その精神と理想はシンプルで、僕は「ものを手渡しする感覚に近い」と思います。
たとえば、自動車を買ったとしましょう。その自動車の色をペンキで塗って別の色にしても自由です。
また、木の板を買ったとしましょう。その板を使って何をどのように作っても自由です。
また、本を買ってその中に印や書き込みを入れても自由ですし、その本を他人に貸しても自由です。
ですが、著作権で守られたコンテンツ業界では、このようなことはできません。勝手にWindowsのコードを書き換えて売ってはいけません。人に貸してもいけませんし、CDを不特定多数の間でコピーして共有してもいけません。
著作権のある世界では、たとえばOSであるWindowsは、一次配布者であるMicrosoftだけに著作物を開発・進歩させるための権利があります。これを二次配布者が行うことはできません。そのため、ヤマダ電器やエディオンは、ライセンスを販売することはできても、自らが著作者となってプログラムを改造し、「改造版Windows」を作ることはできないのです。
GNUをはじめたストールマンは、これを問題と考えました。「自由にソフトウェアを改造し、実行もコピーも再配布もできるソフトウェアの形態」を彼は求めました。
そして、ストールマンが考えた結果、「自分でソフトウェアを作って、そのソフトウェアに自由なライセンスを適用して、それを配布するしかない」という結論に至りました。
彼はEmacs向けのライセンスを改めて新しいライセンス(GPL)を作り、そこでは「自由にソフトウェアを利用する権利」を定めました。その上で、GCCなどOSに必要なコンポーネントを自ら書き、また協力者を募ってそのソフトウェアの著作権を委譲させてもらい、そのソフトウェアのコレクションに対してGPLを適用して配布しました。そうしたソフトウェアを、「フリーソフトウェア」という名前で呼びました。
もし、著作権のある世界でフリーソフトウェアと同じことをしようとしたら、プログラムを売るたびに著作権を譲渡しなければなりません。プログラムを売るたびに著作権をその買った人に与えれば、そのプログラムを使用する人は「ものを手渡しする感覚」でプログラムを改造し、自らの自由に利用・応用できるでしょう。ですが、Microsoftがヤマダ電器やエディオン著作権を委譲するのは現実的ではありません。GNUは、ソフトウェアをGPLでリリースすることで、GNUソフトウェアを使う人々に、そうした自由を与えることにしました。
重要なこととして、GPLもまた著作権で守られたライセンスであり、GPLの許諾内容を守らなければいけません。ですが、GPLでは、「著作権を縛るために同意する」のではなく、「著作権を他者に与えるために同意する」というところが違います。ソースコードへのアクセスを求められたら、どんなGPLプログラムであれソースコードを提供しなければなりません。また、派生ソフトウェアを作った時は、その派生ソフトウェアに同じGPLライセンスを継承して適用させなければなりません(コピーレフトと呼ばれる)。
単にパブリックドメインにすれば良いのではないか、と思われる方もいるかもしれません。ですが、パブリックドメインは二次的な利用者に自由を認めても、それが三次・四次利用者のためにも継承されていくとは限りません。GPLなら、一次開発者が「僕のソフトウェアはGPLにする」と決めたら、それが絶対に途切れることはなく、二次・三次・四次利用者の全てに同じライセンスが継承されます。これは、「最初にGPLと決められたソフトウェアは、どれだけ変更が加わってもGPLのままである」ということです。
こうしたGPLライセンスオープンソース開発と親和性が高く、「絶対にコミュニティのメンバーがソースコードにアクセスできることを保障する」という意味で良いライセンスです。
また、GPLフリーソフトウェアの思想は、漫画やイラストなどのコンテンツ産業にも波及していこうとしています。コミックマーケットなどでは、同人誌が多く販売されています。同人誌とは、「ある漫画と同じキャラクターを、二次利用した漫画やイラスト雑誌」のことで、たとえばエヴァンゲリオン綾波レイなどのキャラクターを利用しながら、「自分なりに別のシナリオと個性で漫画雑誌を作る」という特徴があります。これは法的にはグレーゾーンで、「一次著作者の権利を侵害している」と言う人も居ます。たとえばネットには綾波レイの画像があふれていますが、エログロなど中にはいかがわしい利用もされています。これらの多くは、エヴァンゲリオンの作者に許可を取らず、勝手にやっています。ですが、そもそも、一次利用者が「勝手に自由に使って良い」としたキャラクターだったとしたら、こうした問題は起りません。この「コンテンツの二次利用で問題が起きないようにした自由なライセンス」が、Wikipediaでも使われているクリエイティブ・コモンズ(CC)というライセンスです。クリエイティブ・コモンズでライセンスされたコンテンツは自由に使えます。そのため、Wikipediaの内容を勝手に販売することはできます。
ストールマンGNUプロジェクトをはじめた理由には、MIT人工知能研究所での経験がありました。彼は何年も前からのソフトウェア共有コミュニティの一員となり、そこで使われていたITSというOSはソースコードへのアクセスが許され、自由にコンピュータを使う人々の間で共有されていましたが、1980年代の初めにDECのPDP-10を使うようになり、それはフリーソフトウェアではなかったのです。彼は「周りのものへ手助けをしない自由」を嫌いました。彼は1984年にMITを辞め、GNUソフトウェアを書くようになったのです。
GNUなどはソフトウェアの「自由」な側面をそのように強調しますが、Linuxなどでは必ずしもそうではなく、むしろ「みんなのもの」として「誰も権利を行使しない」という一面が強調されることが多いです。Debianなどでも、ドキュメントの中でフリーソフトウェアを「みんなのソフトウェア」として、「誰も著作権を主張しない」ということを記述しています。
後日注記:Windowsのような独占的ソフトウェアをGNU風に喩えるなら、「ドラえもんしか描けない絵の具」のようなものである。自らの所有するコンピュータは、自由に使うことができるべきなのに、WindowsではWindowsを使うことしかできない。だが、Microsoftのような独占企業も、自ら新しいOSを開発することまで制限することはできない。よって、ストールマンはそうした「自由を与えなければならないOS」を作ろうと決めたのである。

手助けと共有をする自由

このように書くと、ストールマンは過激なロビイストのように思われるかもしれませんが、実際は良い人間です。
彼は、「共有する手助け」が好きだっただけです。昔のMITのAIラボでやっていたように、「人々を手助けする共有の自由」が欲しかったから、彼はGNUを作り始めたのです。人々に手助けすることができない不自由が嫌いだったのです。
ストールマンは一見狂った人間に見えますが、実際は心の優しい良い人間です。

GPLにはたとえビジネスであってもソースコードの強制的な公開義務がある

GPLとビジネスについて良く言われることとして、「GPLにはソースコードの公開の強制力がある」ということが言えます。
このことの意味を少し考えてみましょう。
LinuxカーネルにはGPL v.2が適用されており、GPLに基づく自由な権利が与えられる一方で、そのコードベースを利用してforkしたソフトウェアは、ソースコードを公開する義務が発生します。この時、派生ソフトウェアの開発者は、GPLで認められる権利を同じように認めなければいけません。
たとえば、もしGNU/LinuxGPLではなくパブリックドメインでライセンスされていたとしたら、商用のLinuxディストリビューターはどのような行動をとるでしょうか。
彼らは、Linuxカーネルのコードベースを利用して、独自の改良を施してforkした独自の製品を作ります。Linuxカーネルパブリックドメインであった場合、そのコードは公開する必要がありません。彼らは独自のLinuxカーネルを作り、その製品から利益を取って、新しいお金でさらにその独自のカーネルを開発し、販売します。
ここには、3つの問題があります。
1.もともとのLinuxカーネルソースコードが公開されており、自由に改造・コピー・再配布を行うことのできる権利があったのに、forkしたカーネルではその権利がなくなっている。
2.独自のカーネルのコードは公開されず、forkされたままである。メインストリームのLinuxカーネルにそのパッチはコミットされない。
3.利益を生み出す独自のカーネルのほとんどのコードはもともとのLinuxカーネルコミュニティが開発しており、本来利益を得るはずのコミュニティの開発者にはお金が支払われず、「フリーライダー」のforkされた会社の従業員だけに給与が払われている。
ここで、GNUならば「1」の問題を取り上げるでしょうが、Linuxカーネルの開発者から見て、問題は「2」です。独自のforkしたカーネルのコードがアップストリームに共有されず、「オープン版」と「プロプライエタリ版」の2つに分裂してしまうのです。
もちろん、GPLでもLinuxカーネルのコードを使って作った派生ソフトウェアを(必ずしも意味があるかは分かりませんが)誰かに代金を取って渡すことはできます。ですが、この時、GPLで認められている権利をその渡した相手に認めなければいけません。これにはソースコードへのアクセスとコピー・改造・再配布の権利が含まれています。
そう、GPLでライセンスすることで、たとえRed Hatのような商用のLinuxディストリビューターであっても、コードを公開して自由な権利を与えなければならないのです。
このことは、Linuxカーネルの開発体制に恩恵をもたらします。Red Hatは、GPLの影響を受けて、自分たちだけでコードを独自にforkさせるだけではなく、アップストリームにパッチを貢献して、メインストリームでコミュニティの開発者と一緒に開発をするようになったのです。
もしLinuxGPLでなければ、Red Hatはいわゆる商用UNIXベンダーのように、「パブリックドメインのコードを自分たちのものにする」ことで、ソースコードは公開されず、結果としてその開発成果はメインストリームに共有されません。
つまり、「ビジネスでやっている連中とも、同じコードベースを共有して、協力して開発することができる」というのが、LinuxカーネルにおけるGPLの利点なのです。
これは、コミュニティとRed Hatだけでは、少し意味が見えづらいかもしれません。たとえば、Oracleが開発したコードを、IBMも自由に(自社が開発したのと同じように)使うことができます。GoogleのコードをRed Hatが独自に改良することもできるため、KubernetesのようなLinux上での基盤ソフトウェアは、みんなで使うコードであるため、Googleが開発したものをRed Hatなどが改良し、共有しています。
そう、GPLはビジネスでは、「企業同士、あるいは企業とコミュニティがシェアしながらひとつのソフトウェアを開発する」ということができるのです。
ですが、GPLはビジネスで使うことは少なく、もっぱら、コミュニティで開発する際の、「みんなのソフトウェア」として開発されます。Mozilla.orgが言うように、「営利企業のものではないブラウザ」と言えますし、Debianのドキュメントでは「誰も権利を主張しないみんなのソフトウェア」であると言います。他の会社も、「業界全体で共有される資産」という言い方をするだけで、オープンソースを商売でやっているRed HatなどのLinuxディストリビューターに当てはまるくらいです。
Linuxはそもそも善意のボランティアによって成り立つコミュニティのソフトウェアです。ボランティアには基本的に代償となるお金は支払われません。GoogleRed Hatなどは、そうしたLinuxコミュニティで、何とか商売をする方法は無いものかと、ビジネスモデルを探っています。そのため、たとえばサポートで儲ける、というモデルを作っています。無保証のフリー・オープンソースソフトウェアに対して、商用ソフトウェア並みのサポート、つまりバグがあったら直すとか、そういうサポートをして儲けています。Linuxは儲かりません。ですが、唯一、「共産主義が成功した例」であると言えるでしょう。
後日注記:企業について言えば、GPLがIT業界を変えた例として、「コミュニティへの参加を企業に促すことに繋がった」ということがある。IBMなどの大企業に対して、GPLは「オープンソースとしてコードの成果を共有しながらコミュニティに参加するきっかけ」を与えた。彼らはオープンソースという新しい用語を使うことで、企業をフリー陣営に取り込むことに成功したのである。

誰も所有しないソフトウェア

GPLは、「誰も所有しないソフトウェア」であると言えます。これは、誰もソフトウェア自体に私有権を主張できないからです。
GNU Projectをはじめたストールマンは、自分と協力者だけでフリーソフトウェアのみからなるOSを書くことを決意し、それらをEmacsのライセンスだったGPLで提供しました。
GNUは優れた開発ツールを作ったことから、「フリーなコンパイラ」として知られましたが、カーネルのみを書くことができませんでした。
そこで、Linuxというモノリシックカーネルを作ったリーナス・トーバルズによって、GNUのツールとLinuxカーネルを合わせた「GNU/Linuxシステム」が誕生しました。
このOSは、完全にフリーソフトウェアからなっていましたが、Linuxのユーザーはフリーソフトウェアという用語よりも、「オープンソース」という用語を好みました。
ストールマンは、後になってGNU Hurdカーネルがなかなか完成しなかった理由を、「マイクロカーネルデバッグが予想以上に難しかったため」であるとしました。
オープンソースという言葉を世に広めたOSIのエリック・レイモンドは、Linuxカーネルが多くの貢献者によって開発され成功した理由を、「伽藍方式ではなくバザール方式で開発されたため」としました。

バザール開発とは

バザール開発とは、Linuxカーネルの開発方式をエリック・レイモンドが言い表した開発スタイル。
以下は、伽藍とバザールより引用。

Linuxは、ぼくがわかっているつもりでいたものを、大幅にひっくりかえしてくれた。それまでだって、小さなツールや高速プロトタイプ作成、進化的プログラミングといったUnixの福音は説き続けてはいた。でももっと上のレベルでは何かどうしようもない複雑な部分がでてきて、もっと中央集権的で、アプリオリなアプローチが必要になってくるものだとも思っていた。一番だいじなソフト(OSや、Emacsみたいな本当に大規模なツール)は伽藍のように組み立てられなきゃダメで、一人のウィザードか魔術師の小集団が、まったく孤立して慎重に組み立てあげるべきもので、完成するまでベータ版も出さないようでなくちゃダメだと思っていた。
だからリーヌス・トーヴァルズの開発スタイル――はやめにしょっちゅうリリース、任せられるものはなんでも任して、乱交まがいになんでもオープンにする――にはまったく驚かされた。静かで荘厳な伽藍づくりなんかない――Linuxコミュニティはむしろ、いろんな作業やアプローチが渦を巻く、でかい騒がしいバザールに似ているみたいだった(これをまさに象徴しているのがLinuxアーカイブサイトで、ここはどこのだれからでもソフトを受け入れてしまう)。そしてそこから一貫した安定なシステムが出てくるなんて、奇跡がいくつも続かなければ不可能に思えた。
このバザール方式がどういうわけかまともに機能するらしく、しかもみごとな結果を生むなんて、衝撃以外の何物でもなかった。この世界の様子を学ぶにあたって、ぼくは個別のプロジェクトだけでなく、なぜLinux界が混乱のうちに崩壊しないのか、それどころかなぜ、伽藍建設者たちの想像を絶するスピードで、続々と強みを発揮し続けられるのかを理解しようとしてきた。

GNU

リチャード・ストールマンと協力者による、フリーなOS

GNU創設者のリチャード・ストールマンは、UNIXの反省からGNU Projectを始めた。それは、GPLという独自のコピーレフトなライセンスによる、ソフトウェア開発者と利用者全員のためのフリーソフトウェアオープンソースと今では呼ばれている)のUNIX互換OSだった。
リチャード・ストールマンGCCGNU Emacsなどを書き、協力者にコンポーネントを開発してもらうことで、長い間フリーソフトウェアの開発に携わった。
UNIXの基本的なコンポーネントのほとんどは出来上がったが、カーネルであるGNU Hurdマイクロカーネルであることやデバッグが難しいことから、開発が進まなかった。
そこで、リーナス・トーバルズによるLinuxカーネルが開発された。LinuxGNUの開発の両貢献者がさまざまなたくさんの改良をして、GNU/Linuxシステムは完成した。

GNUの未来

GNUは本気である。本気でフリーソフトウェアだけを使用したオペレーティングシステムを作り、世界をGNUの自由に変えようとしている。
BashGCCから、EmacsGIMPまで、全てをフリーにし、世界をフリー化する。GNUの主張する未来とは、そうした「多少過激だが本当に自由な社会」の未来だ。
本当は、GNUの元になったUNIXという「自由な懐古的パブリックドメインのOS」がいつまでも続けば良かった。GNUは、今のこの世界なんか考えていない。今のこの世界を本気で新しい世界に変えようとしているからだ。

コピーレフトについて

ストールマンが考えるコピーレフトの思想とは、本当は単純で、「誰でも自由に改造・再配布してほしいし、誰かが改造・再配布を禁じたりしないでほしい」という、黄金律のような考え方である。
上のGNUの歴史にあるように、X Windows Systemはそれ自体は自由なコピーが許されていたが、多くのUNIXではバイナリだけを配布するプロプライエタリな製品となっていて、多くのUNIXユーザーはプロプライエタリなXのバージョンを使っていた。ここでは、既にXはフリーではない。コピーレフトはこのXのような例を防ぐ。コピーはしても良いし、再配布も自由にして良い。だが、それをする際に、提供されるコードやソフトウェアは、フリーのままにしてほしい。フリーのまま使えるように、ソースコードをきちんと提供してほしい。
そういうライセンスだから、決してみんなを騙したり、汚染させたりしたいわけではない。GNUがどのコンピュータでも、どのユーザーでも、自由に使えるようなソフトウェアとして、GPLコピーレフトのライセンス)の下にリリースし、みんなはそれを自由に使える、そういう自由な社会と環境を作りたい、それがGNUの目標である。

GNU/Linuxの考え方は必ずしもUNIXと合致しない

僕が言えることとして、「GNUの考え方は必ずしもUNIXと合致しない」というのが言える。
UNIXには独自の哲学があり、その中でも大切なのは「シンプルにしなければならない」ということである。UNIXでは、他のどんな要素よりも、シンプルさと単純さを重視する。
GNUは、必ずしもシンプルではない。GNUはコマンドを作るのであっても、どんどん機能をつけて、何でもできるようにする。Red Hatのようなオープンソース企業は、これでもかというぐらい信頼性、機能性、性能などを高めるが、その結果重くなり、プロのためのOSではなく初心者に優しいだけの重くて使い辛いものになろうとしている。その最たる例が、GNOMEやsystemdである。
そう、Xfceのようなシンプルなデスクトップ環境は、UNIXの哲学に戻ろうとしている。ごてごてと機能をつけるGNU/Linuxのやり方は、必ずしもUNIXと合致するものではない。これはLinuxの大きな反省点である。

GPLにしなければ、会社に上手く使われる

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/LinuxAPIを見て拍子抜けするでしょう。「こんなに簡単にプログラミングができるのだ」と知ってほしいと思います。
後日注記:そもそも、WindowsのようなクローズドソースのOSは、地球の文明に対してとてももったいないことをしている。ユーザーが自分で調べて自分の意志で改良する、という可能性を「初めから閉じている」からである。オープンにしてしまえば、それだけでさまざまな人が開発し、OS自体が発展していく可能性を、金儲けという生産手段によって閉じてしまっている。Microsoftが利益を上げてそのお金で作れるとはいうが、もしMicrosoftが作らなければ、他の人間には誰にも作れない。Microsoftがきちんとせず、不正な会社になってしまえばそこで終わりである。これは資本主義から見れば当然のことかもしれないが、人類の歴史全体を見ればつまらないことである。

UNIX古代復興の精神と永遠のGPL

そもそも、UNIXAT&T独占禁止法に当たるため、パブリックドメインで公開されたOSでした。ユーザーは自由にソースコードを見ることができ、改良し、コピー・再配布し、成果を共有できました。
当時のそうした「原始フリーソフトウェア」世界では、たくさんのプログラムがフリーで公開されました。
ですが、AT&T UNIXAT&T独占禁止法に当たらなくなったため、非フリー(プロプライエタリと呼ぶ)に戻りました。
GNUは、そうしたプロプライエタリに戻ったUNIXについて、「もう一度フリーソフトウェアの世界を作る」として立ち上がった、言ってしまえば「古代復興」あるいは「フリーソフトウェアルネサンス」のような存在なのです。
リチャード・ストールマンは、GNU創始者として、たくさんのコードをひとりで書きました。GCCEmacsなどは彼が書きました。また、Bashなどの必要なコンポーネントを協力者が書きました。
たくさんのコードを作った後で、「選ばれた少人数が開発する」という、エリック・レイモンドの言う「伽藍」方式では、カーネルは完成しませんでした。
最後のコンポーネントだったカーネルを、リーナス・トーバルズが完成させました。この時のさまざまな人々が好き勝手に開発・貢献する方式を、エリック・レイモンドは「バザール」と呼びました。
とにかく、全てフリーソフトウェアのOSであるGNU/Linuxはここに完成したのです。全てのコードにアクセスでき、GPLの下で再配布や改造が可能です。ソースコードを参照して派生ソフトウェアを作ることもできますが、プロプライエタリなバージョンの派生ソフトウェアを作ることはできません。派生ソフトウェアにはGPLを継承させる(コピーレフト)必要があります。これにより、「派生ソフトウェアも自由に使うことができる」という「自由の許可の継承」が行われます。「GPL汚染」と言って嫌われるのは、ソースコードを使って作ったソフトウェアをGPLにしなければならない、という点ですが、UNIXがフリーで無くなったことを防ぎ、会社が勝手にプロプライエタリな配布手段を行使しないようにしています。このため、「誰が作っても絶対にフリーが存続する」という、ある意味「永遠にコミュニティ開発が行われることを保証する」かのようなライセンスになっており、Linuxカーネルはおそらく永遠にいつまでもコミュニティが開発するでしょう。

オープンソースフリーソフトウェア

GPLについて

基本的に、GPLは、
0. プログラムの実行
1. プログラムの研究と改造(この前提として、ソースコードを公開すること)
2. プログラムのコピーの再配布
3. プログラムの改良とその公開(この前提として、ソースコードを公開すること)
を保障するが、この時、「コピーレフト」と呼ばれる考え方を導入する。
それは、「プログラムが改良されたバージョンにおいても、自由が保たれる」というもので、早い話、「(改良版やソースコードを利用した版を含め)プログラムを公開する時は、必ずGPLで公開しなければならない」というもので、「ウイルス的」だと言って嫌われることもある。
GPLには批判が多く、「オープンソースソースコードを使ったら、自分のソフトウェアのソースコードも公開しなければならない」という一面がある。(GPLではソースコードを公開する代わり、そのソースコードを使った改良版をオープンソースにしなければならない。)このため、BSDライセンスのような、オープンソースの継承条件のないライセンスを好む開発者が多い。
GPの影響で、クリエイティブコモンズのような、プログラム以外の二次創作物で自由を保障する(継承条件を課すことも選べる)ライセンスも生まれている。

所有するコンピュータの自由

GNUの言う自由は、本来社会主義でも民主主義でも考えられる、両方のことを言っています。
民主主義的に言えば、それは「自分のコンピュータを自由に使える自由」です。自分の持っているコンピュータの権利について、Microsoftなどに独占されるのは良いことではありません。自分のコンピュータを自分で使う自由、そこにプログラマブルな「自分でプログラムの内容を変えられる」という権利を求めることは、コンピュータの特性から言って当然です。コンピュータはプログラムを実行する機械であり、プログラムを自分で書き変えられるということはコンピュータを「自分で使う」ということです。他人が書いたプログラムを、その通りにしか実行できない時点で、自由はありません。

デジタル共産主義

また、オープンソース的に言えば、「プログラムは誰のものでもない」と言えます。オープンソースのプログラムは、みんなのものです。誰か特定の「一部の人間」のものではないのです。誰かが特権的にプログラムを変更できる権利を独占するのではなく、みんなのものにすることでみんながプログラムを変更できる権利を平等に得ることができます。
また、オープンソースをデジタル共産主義と見なすこともできます。ここで言えるのは、「コピーには良い点もある」ということです。それは、ただ単にコピーできるだけではなく、ソフトウェアには設計は必要でも製造は必要ありません。工場のようなものがなくても、一度コンパイルできるだけのソースコードを書いてしまえば、「ゼロコストでコピーして製造できる」ことが可能です。ここで、共有する、ということを思い出しましょう。共有することができるのは、ゼロコストでコピーできるからです。必要なのは最初の製造コストだけであり、コピーするたびに製造コストはかかりません。コピーはゼロコストで、どんなコンピュータでも行うことが出来ます。
後日注記:オープンソースのボランティアによる労働を、スポーツや将棋のようなものだと思えば良いだろう。誰かにお金を払ってもらわなくても、自分が趣味でするマラソンなどは、自分の実費でも行いたいものである。オープンソースもそれと同じで、設計図は書きたい人が書き、それをオープンに無料で誰にでも提供することで、そこから別の人がプログラムを改善したい人が開発する。オープンソースの「デジタル共産主義」とは、そうした「スポーツや将棋のようなプログラミング」をベースの思想としている。

オープンソース革命

オープンソースの利点は、ゼロコストと自由だけではなく、「みんなで繋がり合うことで、爆発的な人材資源の集積性を発揮する」ということです。これがオープンソースの真価です。オープンソースにするだけで、魔法のように高品質のソフトウェアが生み出されます。
ですが、これは必ずしも成り立つものではありません。リーナス・トーバルズのような天才が、上手くまとめあげたために実現したものであり、Netscapeのような失敗例もあります。ですが、オープンソースは日進月歩です。Mozilla.orgも、まだ失敗したわけではありません。
オープンソースには、維持コストがあまりかかりません。会社のようなプロジェクトチームがなくても、適当にGitHubにアップしておけば、誰かが開発するかもしれないし、しないかもしれません。
ですが、Linuxのような成功例は、そんなにたくさんはないでしょう。Linuxが特別、リーナスによる素晴らしいソフトウェアプロジェクトだった、とは言えるかもしれません。それも、本当はGNUなど他のプロジェクトがなければ成り立たなかったでしょう。たくさんの善意の貢献者が生まれた背景には、LinuxとフリーUNIXの可能性を良く分かっている善意のボランティアたちが居たからだ、とは言えるでしょう。決して、Linuxは偶然ではありませんが、必然でもありません。

誰も著作権を行使するな、という著作権の行使

ある意味、GPLとは「誰も著作権を行使してはならない」という意味での、最初の著作者による著作権の行使であると考えられる。
ただ、パブリックドメインにするだけでは、全員の自由にはならない。誰かが著作権を行使して、自分のものにすることが考えられる。それを許すライセンスがBSDライセンスで、それを許さないライセンスがGPLだ。許す、許さない、というとGPLの方が自由が少ないように感じられるかもしれないが、実際は全員が著作権を行使しないことで、誰もが自由にコピーや再配布を行うことが出来る。
GPLは、改良版も含めて、プログラム全体をオープンソースにし、自由を許さなければならない、言い換えれば著作権を行使してはならない、というライセンスである、と言えるかもしれない。これには、別の考え方も存在する。MozillaのMPLのようなライセンスでは、改良した別の著作者が追加したコードはオープンソースにしなくても良いことになっている。だが、これを許してしまうと、コミュニティの意見や方針が変わったりした時に、誰かが別のライセンスに変えることが出来てしまう。GPLは永遠であり、永遠に同じGPLというライセンスが適用され続けることで、そうした「危険な独占リスク」を出来るだけ少なくしている。
ある意味、みんなのもの(みんなのコード)であるとか、著作権者を自由にするのではなく、コードを自由にするライセンスであるなどと説明されることもある。だが、GPLは「誰も著作権を行使してはならない」という、コミュニティの「自由宣言」であると考えると良いだろう。まさに、オープンソース(フリー・自由ソフトウェア)は革命である。そうした革命的な全員の自由のことを、GNUは「ソフトウェアユーザー全員のための自由」とした。最初はUNIX文化から始まり、GNUが生まれ、そしてGNU/LinuxMozillaとして受け継がれた、革命的な「ハッカー文化」である。

インターネットで高品質なものをみんなで作るという楽しさ

GNUにはなくてLinuxにあるものといえば、「楽しさ」だろう。リーナスが書いたコードは、今見れば子供のようなものだった。その子供をみんなで育て上げ、使えるぐらいのレベルにしていった。みんな、すべきことを雰囲気から分かって行った。GNUGCCやls,cat,cpなどを乗せて、安定版のカーネルBashが動いた時の感動はどういいうものだったのだろうか?そして、それだけで終わらず、リーナスはたくさんの開発者と一緒に、Linuxカーネルをポータブルな移植性の高いものにし、さまざまな善意のボランティアがハードウェアを対応させていく。カーネルのメモリマネージメントなどは、分かる人間が協力して改良する。ドキュメントはネットだけが頼りで、分からないところはソースコードを読む、そんな善意のプログラマがコードを自由に書いていった。それだけで、超一流のカーネルと、「GNUによればGNU/Linuxと呼ぶべきである」OS環境が生まれていった。それは、当時革新的なパソコン用のOSだったMicrosoftWindowsに対する、まさに「革命」だったのだ。
オープンソース革命によって、さまざまなプロジェクトが生まれた。Linuxカーネルは元より、PerlApacheXFree86、それからGCCKDEGNOMEDebianなど。だが、それらはすべてオープンソースのコミュニティプロジェクトであり、ビジネスほどの品質はあっても、コミュニティによる開発にとどまっていた。リーナスは、「100人以上の単位で仕事ができる企業が参加してからが面白かった」と言っている。Red HatNetscape、Sun、そして何よりIBMである。どんどんLinuxは発展し、果てはメインフレームの品質にまで達するようになった。Windowsよりも安定して動くようになっていく、その過程が創造的で面白かった。
残念ながら、僕がパソコンに関わり出したのは2000年ぐらいからであり、Linuxのことをやろうと思って調べ出したのは2002~2003年ぐらいからであって、僕はそうした初期のLinuxの熱気というものは知らない。だが、僕が参加・活動したのは特にPHPWindows XPぐらいの時代である。当時のパソコンの文化はとても面白くて、ツイッターFacebookは無くても2ちゃんねるとブログ(当時はトラックバックという機能で、ブログの記事に対して別のブログがトラックバックを送るような形で関係が構築されていた。今の「いいね」や「友達」よりもはるかに面白かった。)でさまざまなことが分かった。当時はLinuxは問題だらけで、AnthyFirefoxなどが誕生して、「やっとLinuxWindowsと同じぐらい使い物になる」というところまで達しようとしていた。あの時代が、一番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 HatDebianなどのディストリビュータが独自のカーネルパッチを作ったり、あるいはLinux-libreのようなGNU版の完全にフリーソフトウェアによるLinuxカーネルなどもあるし、マイクロカーネル版のようなものもある。しかしながら、全体を見ていると、Linuxの周辺プロジェクトは、それぞれが主体性を持ちながら良くまとまっている。もちろん、GNOME3からMATEやCinnamonが分離したなどの例はある。だが、UNIXAPIを逸脱したようなプロジェクトはあまり見ないし、同じ目的でたくさんのプロジェクトが生まれる例も(Ubuntuなどを除いて)あまり見受けられない。それは、Linuxコミュニティの「奇妙な一体感」に属するものかもしれない。GNURed Hatなどさまざまな貢献者は居るが、中核となるコードは共有しようとする意志が働いているように思う。
それはどうでも良いとして、オープンソースだからこそ、信頼性が高い、というのは確かにある。Windowsの周辺に存在する商用あるいはフリーウェア系のソフトウェアは、RealPlayerやWinZIPなど、怪しくて胡散臭い会社とソフトウェアが多い。Linuxが必ずしも「安心できる」わけではないが、PHPPythonなどを見ていると、オープンソース系のソフトウェアは「ITにおける確かなインフラ的役割」を維持している。ソースコードが見れるために、悪いコードを内部に仕込んだりすることは難しいだろう。セキュリティの問題やバグの問題でも、オープンソースの方が信頼できるというのは確かにあるのである。
だが、オープンソースは逆に、使いやすいものが作れていないところがある。FirefoxGIMPなどを見ても、「プロ向けの詳細機能」には強くても、「優れた操作性」には弱い。GNOME3のような失敗例を挙げるまでもなく、Ubuntuなどは使いやすいと言われているが、実際に使ってみると全く使いやすくもないし、操作性も優れていない。そもそも、Ubuntuは分かりやすいように見えて、初心者向けにさまざまな拡張を施しているせいで、一番分かりにくい。どんなアプリケーションがあるのか(そもそも使えるアプリケーションがどれくらいあるのか)も分からないし、分かろうとするために気力をさまざまに使い果たすせいで、使おうとする気が起きなくなる。使っている際の苦労や労力も半端ないし、みんなと違うせいでネットや家庭で疎外感を感じてしまう。
そういうわけで、デスクトップ用途では必ずしも気分良く使えるものではないだろう。だが、業者向けのサーバーや開発用途から見れば、先ほど言ったように、オープンソースは信頼性がある。きちんと動くことが検証できるし、開発の際にはソースコードを参照することができる。本当にコンピュータ科学をやりたい場合や、ITについて勉強したい教育用途についても、良い効果が期待できる。だが、問題はやはり使いやすさの部分だ。デスクトップにおいては、Windowsに勝つことはまだ出来ないだろう。むしろ、本当はGNOME3はそんなに悪いものではない。GNOME3は最近、エクステンションを入れることで使いやすくなることがしだいに分かってきている。Windows 7とほとんど同じタスクバーインターフェースにすることもできる。だが、Linuxデスクトップはまだまだだ。
あとは、組み込みなどの用途、たとえば車などに組み込む用途でLinuxが使われるのは、「ネタではないか」と言われることもある(リーナスが作った自作のカーネルが人の命に係わるものにまで使われるようになっているのはありえない)が、明らかにそれはオープンソースの優位性、特に「ソースコードが見れる」という部分である。車の会社の技術力は、本当はIT企業なんかよりはるかに高い。Linuxカーネルの仕組みを調べて、必要なところは書き換え、削除し、追記して、「絶対に動かないといけない」時にきちんと動くようにしている。それこそ、オープンソースの一番の優位性である「自由に改変・再配布ができる」ということである。自動車でLinuxは冗談だと思う人間も多いが、時代は変わりつつある。オープンソースでデジタル共産主義をしながら、自動車をグローバルに輸出して儲ける、それが今からの自動車とパソコンの協力の在り方である。
後日注記:オープンソースは確かにインフラ基盤ソフトウェアを多く輩出していますが、それでもPostgreSQLMySQLOracleにはかないません。やっぱり、オープンソースと商用の間には依然として隔たりがあり、さすがにデータセンターを完璧にオープン技術にすることは難しく、Amazonなども独自のDBMSを開発しています。Oracleは最近「オープンソースはもう流行っていない」ということを言っていたことがありましたが、彼らの主張も理解できます。本当に必要なところでは、商用の開発もまだまだ必要です。オープンだから品質が高い、というのは嘘になるでしょう。

「1から作る」よりも「あるものに協力する」

オープンソースのソフトウェア開発とは、もちろん1からソフトウェアを開発することもあるが、本質的には1から開発するというよりも、「既にあるプロジェクトに参加し、協力し、ソフトウェアを改良・改善する」という開発手法に根差している。
たとえば、Wineのように、たくさんの人々の改良を待っているプロジェクトに参加して、自分が出来る限りのコードを書く、といった具合である。
これに言えることは、「本気で1からソフトウェアを開発するのではなく、出来あいのソフトウェアを使いながら、必要になった時に必要に応じて追加コードを書いていく」という、ある意味エジソンの言った「必要は発明の母」のように、「必要になった段階で機能を付け足していく」という考え方である。
特に、フリーソフトの開発は、パクリ合戦になることが多い。Sleipnirがつけた機能をLunascapeがパクったりする。オープンソースでは、ひとりの開発者が過剰に頑張ってコピー機能をつける必要はない。それぞれの作ったものを持ち寄って、みんなのソフトウェアにする。そういう風に開発していけば、おのずと善意のボランティアの参加者が、誰よりも優れたひとつの大きなソフトウェアを作ることができる。
そういうわけで、オープンソースでプログラムを作るのは、「いざ作りたい」と思ってするものではない。「こんな機能を探していたけれど、ないから作った」という風に思ってするものである。GNOMEを漠然と改善したくなっても、その改善が何を意味しているのか分からない段階では開発出来ない。それよりも、まず使ってみて、こんな機能がないようなら自分で作る、といった風に開発する。オープンソースとはそういうものなのである。
後日注記:オープンな共同開発はリーナス・トーバルズが言うようにとても「楽しい」もので、僕がOpenJaneなどで開発をしたりプロジェクトを見ていたりした時も、みんなで一緒に作り、作りたいなら派生版を作っても良い、という姿勢はとても面白いものです。今のTwitterのような「たくさんの不特定多数が参加するSNS」よりも少し前の段階である「少人数だが色んな人間が共同でプロジェクトに携わっている」というのは、やっている側だけではなく見ている側も面白いでしょう。

オープンソースというビジネス戦略

技術を公開し、オープンソースにする、という戦略は、会社・企業のビジネスモデルとして、最近は少しずつ影響力を与えている。たとえば、ひとつの優れた技術をオープンソースとして公開することで、業界の標準的地位を獲得し、自分がIT業界のその分野のリーダー的存在となる。この例としては、MySQLAndroidEclipse、そしてAT&T UNIXIBM PCまで含まれるだろう。
だが、今の例は、あくまで会社が開発するオープンソースソフトウェアであって、「爆発的なオープンソースのコミュニティ開発による可能性」までを見ていない。オープンソースは革新的な技術の開発体制であり、人々がコラボレーションすることによる可能性である。この例としては、Mozilla.orgLinuxRed Hatが挙げられるだろう。
後日注記:IBMはそんなに優れた商用会社ではなく、新しい市場があった時に「市場を潰すためにオープンにする」ということを本気でやる。だが僕は、それはオープンソースの狭い面しか見ていないと思う。オープンにすることでとても多くの潜在的可能性がある、ということをIBMは分かっていないのではないかと思う。

GNUという理想のみんなのOS

GPLは、みんなのコードである。これは、リチャード・ストールマンストールマン自身や開発者、貢献者、協力者が書いたコードに対して、ひとつひとつ自由に使わせてもらっても良いかを許諾を確認して、集まった自由なコードを使って作られた、GNUというみんなのOSのライセンスだからである。
よって、このライセンスの範疇を越えて使うことはできない。それが、このOSを理想のOSたらしめている理由だからである。
ある意味、本当の自由をなくすことで、実質的な自由を与えるライセンスであると言える。これは、伝統的な日本人の精神性に近い。
ストールマンは、パブリックドメインUNIXの文化を、コンピュータユーザーの普遍的な権利にしようとした。
Linuxで金儲けをしようとするのは、好ましいことではない。Linuxは自発的で無償なコードの寄贈で成り立っているからである。だが、Linuxの開発で儲けられなくても、サポートで儲けることはできる。サポートはサービス業だからである。
ある意味、ストールマンGNUという「理想のみんなのOS」を信じている。だから、Linuxに対しても「GNU/Linuxと呼んでほしい」のである。
後日注記:僕は、昔からオープンソースは日本と相性が良いと思っている。日本的な「何も主張しない開放性」がオープンソースにも日本文化にも見られる。オープンソースがもしかすると一番定着しやすいのは、アメリカやロシアやヨーロッパではなく、日本ではないかと僕は思っている。

無料ではなく自由

良く、「オープンソースで、無料で使えます」ということを言うが、ストールマンが言うように、フリーソフトウェアの「フリー」が意味していることは、無料ではなく、自由である。
これは、たとえば、X線を発見したレントゲンが、それをパテントフリー(特許を取らない)で公開した、ということを考えれば分かる。
要するに、「特許料を払わなくて良い無料」と、「みんながそれを好きなように利用できる自由」の「2種類のフリー」が、ここに存在するのである。
フリーソフトウェアについても同じで、「ライセンス料を支払わなくて良い無料」と、「ソースコードを研究したり、コピーや改造ができる自由」とは、全く別のことであり、フリーソフトウェアは後者の方を大切にしている、ということをストールマンは言いたいのである。

一見、会社経済と親和性が低いように見えて、オープンな合意としての利用も

GPLは、GPLという同じライセンスで派生ソフトウェアを公開しなければならないため、一見、会社経済と親和性が低いように見える。
だが、たとえばRed HatGoogleが同じソフトウェアを開発する場合、「公開する時はGPLで公開してくださいね」という、「オープンな協力」の合意として、利便性が高い一面がある。
これは、パブリックドメインではできない。たとえば、Red HatMicrosoftのような競合が極まっている関係にある会社にとっても、「公開する時はGPLで」という協力する前提の合意ライセンスとして利用できる。これは、たとえばAppleGoogleのような敵対関係にあるソフトウェア会社も、競争を抜きにして同じWebKitを開発する、ということが(おそらくは)可能である。(GoogleAppleについては、WebKitからBlinkが生まれているように、必ずしも上手く行っていないようである。)

さまざまな会社を巻き込んで、オープン共同開発となるか

Linuxカーネルの成功があって、現在ではさまざまな会社がオープンソースに関わるようになった。
これは、さまざまな会社を巻き込んで、オープンな共同開発を行う、「コミュニティという名の協力の場」になるか、というところが、今からのオープンソースの課題である。
たとえば、BtrfsはOracleによって開発されている。Oracleは、データベースの会社として有名で、一番信頼性のあるデータベースを高額で販売している。「データベースの会社が作ったぐらいだから、信頼性があるのだろう」と言えるだろう。また、Microsoftは.NET Coreをオープンにした。
このように、各社がたくさんのオープンソース開発を行うことで、オープンソースという製品は、「ひとつの会社のひとつの製品ではなく、さまざまな会社が作ったたくさんの製品の集合」となっていく。
これは、インターネットのホームページと良く似ている。インターネットは、テレビのように限られた会社が作ったメディアではない。さまざまな個人や会社の集合として、時にはオープンなプロジェクトから新聞社のような古い大企業もいっしょくたにした、「共同開発コンテンツ」である。オープンソースは、今からの世界を、共同開発にしていく、そうしたきっかけと発表の場になっていく。

具体的なライセンス

コピーレフトに近いライセンス

まず、コピーレフトなライセンスとしてGPLが挙げられる。誰にでも再配布やコピー、改変を許諾しているが、その代りそのコードを使ったプログラム全体を同じGPLライセンスにし、誰にでも同じように再配布やコピー、改変をGPLの下で許諾しなければならない。
GPLは、「ウイルス的なライセンス」とか「GPL汚染」といって嫌われることがある。
プログラムがライブラリとして別のプログラムにリンクされることを考えて、LGPLという「劣等」なライセンスが生まれた。LGPLのライブラリをリンクして使うプログラムは、LGPLにしなくても良い。
また、文書やマニュアル向けのGDFLや、サーバーサイドにあるプログラムをも公開させなければならないとするアフェロGPL(AGPL)が生まれている。
クリエイティブコモンズ(CC)のライセンスには、文書や画像などのクリエイティブコンテンツのライセンスをコピーレフトのように「継承(SA: Shared-Alike)」条件を付けるライセンスを選択することもできる。Wikipediaなどでは、百科事典の文章をCC-BY-SAで公開しているため、自由に使うことはできるが、改変した内容はCC-BY-SAのライセンスでしか公開できない(フェアユースとしての引用は可能である)。

パブリックドメインに近い著作者情報などを明記させるライセンス

まず、パブリックドメインにしたコンテンツでは、特許をフリーにする場合と同じように、著作権者の権利を一切行使しない。どんな形態にも自由に利用でき、それを商用にしたり利用したプログラムの二次的著作者が「勝手に」著作権を主張しても構わない。
パブリックドメインに近いライセンスとして、BSDライセンス、MITライセンス、あるいはApacheライセンスなどの「緩い」ライセンスが挙げられる。これらのライセンスはコピーレフトではなく、自由にコードを使って自分のプログラムにソースコードを「組み込む」ことができる。また、macOSPlayStationBSD系のOSを使っているように、改良したプログラムを公開する義務もない。商用利用にはこうした緩い自由のライセンスが好まれている。
だが、これらの緩いライセンスであっても、著作者情報の表示やライセンス文書の表示・明確化は必要であることがある。Apacheライセンスなどでは、著作者を特許侵害で起訴した場合にはユーザーではなくなることとみなす、といった条項がつけられている。

MPL

その他のライセンスとして、MozillaのMPLなどが挙げられる。Mozillaは、プログラムをMPL/GPL/LGPLのデュアルライセンスで公開している。MPLでは、MPLでライセンスされたソースコードはMPLで公開しなければならないが、改良された「付け加えた」コードまではMPLで公開しなくても良い。

GPL互換とGPL非互換

BSDライセンスのようなフリーソフトウェアのライセンスは、GPLとして第二次著作者がそのコードを再許諾しても元のライセンスとは矛盾しておらず、「GPLプログラムに組み込む」ことができる。これを「GPL互換」と言う。
これ以外に、フリーソフトウェアであると認められるライセンスであっても、GPL互換ではないことがある。これは、許諾の方法から「GPLとしてライセンスしてはならないライセンス」である。これを、「GPL非互換」と言う。
また、これ以外に、「一見フリーソフトウェアに見えて、本当はフリーソフトウェアではない」ライセンスなどがある。たとえば、軍事利用を禁止していたり、商用利用については料金を取ったりするライセンスなどがこれに当たる。ただ、これは一概に悪であるとは言えない。クリエイティブコモンズのようなライセンスでも、改変禁止や商用利用の禁止を選択するオプションを設けている。
QtやMySQLなどがやっているように、GPLと商用ライセンスのデュアルライセンスにすることは可能である。この場合、GPLとしてコードを利用したくない人間は、商用ライセンスを購入する、といったやり方での商売が考えられる。この場合、GPLなコードを利用して商用利用をすることは決して制限されない。MySQLの商用ライセンスを買わなくても、MySQLGPLの許す限りにおいて商用用途で利用することはできる。よってこれはフリーソフトウェアである。また、これはGPLで再許諾することができるため、GPL互換である。

FSF(GNU)やOSIDebianのポリシー

オープンソースなライセンスをどのように認定するか、はさまざまなプロジェクトがさまざまなやり方をしている。GPLを裁定するFSFによる認定もあれば、OSIオープンソースの定義や、Debianフリーソフトウェアガイドラインなどもある。時に、FSFが一概に一般的であるかというと、そうではない場合もある。Linuxカーネルには非公開のバイナリブロブが含まれていたりするし、Debianはnon-freeやcontribなソフトウェアも再配布している。Mintのようなプロジェクトではフリーではないコーデックのインストールを簡略化することで、自由よりも使いやすさを取っている。
GNUはそうしたさまざまなプロジェクトによる非フリーなソフトウェアを排除するために、「独自の認定ディストリビューション」を開発し、認定している。Linuxカーネルについては、バイナリブロブを除去した「Linux-libre」と呼ばれる派生カーネルを開発している。以下のリンク先に「完全に自由なGNU/Linuxディストリビューション」の一覧がある。使っている人間は少ないが、GNUは真面目に開発している。

継承条項は果たして必要か

ライセンスを論じる上で重要なテーマとして、「コピーレフトの継承ライセンスは果たして必要なのか」ということが言える。
たとえば、FreeBSDのようなプロジェクトでは、BSDライセンスでもきちんとしたオープンソースプロジェクトの維持が出来ている。また、OpenBSDのテオなどは「BSDライセンスが正しい自由のライセンスである」と主張している。
これは、プロジェクトの健全性と、他人によるforkの可能性が言えるかもしれない。プロジェクトが健全なうちはBSDライセンスでも許諾は可能だが、いつそのプロジェクトが健全でなくなり、狂ったものになるかは分からない。そうした時に、他人がプロジェクトをforkして再配布・改良することもあるかもしれない。
GPLでは、そもそも、一度GPLとして許諾されたソフトウェアが、GPLでなくなることがない。永遠にフリーソフトウェアのままである。これは企業の利用についても言える。Linuxカーネルは、企業が商用利用をする場合であっても、必ずGPLで許諾される「信頼性」がある。Red Hatがいくら優れた技術でLinuxカーネルを改良しても、それがGPLでなくなることがない。
こうした特徴は、GNUUNIXの教訓から考えられているところがある。UNIXパブリックドメインで公開されたが、AT&T独占禁止法による制限が緩和された時点で、パブリックドメインではないコードになった。GNUが見ると、この時点でUNIXは終わりである。
また、リーナス・トーバルズが言っていたように、「GPL ver.2ではリリースするが、ver.3以降のGPLでも無条件に許諾する、と決めてしまうのはおかしい」という考え方もある。そこで、FSFの将来のバージョンのGPLを簡単に信頼することはできない。たとえば、GPL ver.4では、今とは違うありえない条項が追加されるかもしれない。Linuxカーネルは、GPL ver.2での権利の許諾だけを許し、それ以降のバージョンも無条件に受け入れる他のGNU関係のプロジェクトのライセンスとは一線を画している。

BSDライセンスの良さ

BSDライセンスの良さというのは、僕は「作った自分が決めるのではなく、使う相手が決める」というところにあると思う。
Windowsのような商用のOSでも、GPLのようなコピーレフトなソフトウェアでも、アメリカ人やその他の外国人は、作った自分が決め、みんなを自分の意見に従えようとする。
だが、本当に自由にコードを再利用できるのであれば、その利用形態は再利用させる側が決めるのではなく、再利用する側が決められるべきである。
コピーレフトは、確かにコードはいつまでも自由なままで、誰でも利用できるようにはなるかもしれない。だが、その考え方それ自体を、相手に押し付けているのである。
それをフリーなコードにするか、それともしないかは、使う相手が決めるようにする。それが、BSDライセンスの良さではないかと思う。
ストールマンの考え方に反して、特にBSDライセンスだからオープンソースのプロジェクトが破綻するかというと、そうでもない。BSD系のOSはBSDライセンスで上手くプロジェクトをまとめている。だから、BSDライセンスの方がはるかに使いやすいところがある。特に、商用のOSでは、GPLを採用することはとても馬鹿馬鹿しいことである。

クリエイティブ・コモンズ

クリエイティブ・コモンズとは

GPLのようなフリーソフトウェアのライセンスを、ソフトウェアだけではなく文書やマルチメディアコンテンツなどにも適用することのできるライセンス。
著作者の明示や非営利や改変禁止、あるいはGPLと似たような継承条項を付けることができる。
そもそも、日本の同人誌のような、「著作権には違反しているかもしれない(グレーゾーン)ものの、犯罪が目的ではない、クリエイティブな共有」を推進するために作られたライセンスである。

クリエイティブ・コモンズの文書を引用することは可能

クリエイティブ・コモンズはたまに継承ライセンスがついていることがありますが、著作権法上認められている「引用」の場合においては、それを超えた利用が可能です。
WikipediaやGenoo Wikiなど、CC-BY-SAのライセンスの文書の場合でも、一部の引用であればその条文を超えて利用することができます。
FAQ よくある質問と回答 - クリエイティブ・コモンズ・ジャパンより引用。

“6. CCライセンスを付けることで「著作権の制限」に関する規定の適用に影響はありますか?
いいえ。
日本では、著作権法第30条から第50条までに「著作権の制限」に関する規定が設けられており、「私的使用のための複製」「引用」等、所定の場合に限って著作権者から許諾を得ずに作品の利用ができることが規定されています。これらの著作権法上認められている利用は、ライセンスの影響は全く受けません。
例えば、「非営利」の条件があるCCライセンスのついた作品を利用する際、著作権法上規定されている「引用」に該当すれば、仮に営利を目的とする利用でも認められることとなります。この点を明確にするために、我々のライセンスには、「本ライセンスによってあなたのフェア・ユースその他の権利が影響を受けることはまったくありません」との条項が設けられています。”

GNUの独自プロジェクト

Linux-libre

GNULinux-libreは、オープンソースと謳っているにもかかわらず、一部のプロプライエタリなバイナリブロブを含んでいるLinuxカーネルに対して、「完全なフリーなコード以外、全て排除する」という、完全に自由なLinuxカーネル
GNULinux-libreを使い、後述する「GNU認定ディストリビューション」を開発することで、「完全にフリーなGNU/Linux」を提供したいと考えている。

GNU認定ディストリビューション

GNU認定ディストリビューションは、完全にフリーなソフトウェアだけをパッケージリポジトリとして有効化したGNU/Linuxディストリビューション
フリーでないソフトウェアは一切含まれていない。
ベースとなるディストリビューションに応じていくらか存在するので以下のリンクを参照のこと。

GNUの言いたいことは分からないでもないが、実際はDebian GNU/Linuxなどを使っているユーザが多い。GNU認定ディストリビューションはほとんど使われていない。

GNU Hurd

GNUマイクロカーネルGNU Hurdは今でも完成していない。だが、有意義なプロジェクト(そもそもモノリシックカーネルは明らかに遅れている設計である)であるため、ボランティアによって開発が続いている。
最近では、MachではなくL4などの別のカーネルを使ってはどうかと言った意見がでているようである。

簡単な説明

ライセンス

GPL, LGPL

GPLでは、ソフトウェアの自由なコピーや再配布が許され、ソースコードも公開されているが、第三者が同じようにコピーを渡したり再配布したりする場合にはGPLでライセンスしなければならず、少しでもGPLコードを用いて作られた派生物はGPLで再許諾しなければならない
すなわち、元のコードがオープンソースな代わり、自分で書いた部分もオープンソースにする必要がある
Linuxカーネルや、GCCなどGNUのソフトウェアはGPL

BSDライセンス

BSDライセンスGPLと異なり、コードを同じライセンスで再許諾する必要がなく自分で独自のライセンスにできる
自分で書いた部分を公開する必要がないため、商用の組み込みシステムなどでは使いやすい
その代わりもともとはBSDライセンスで記述されたコードがどんな場合でもソースコードが公開されているとは限らず、GNUなどでは「X11はもともとは自由なソフトウェアだったが、多くの商用UNIXではプロプライエタリだった」と主張している
BSDライセンスFreeBSDなどの*BSDで使われているほか、GPLの厳しいライセンスを嫌う多くのオープンソースプロジェクトで採用されている