Linuxの歴史

OSのはじまり

今でいうコンピュータの基本ソフトウェアとしてのOSの概念は、1960年代に生まれたものだ。
それ以前は、業務用システムなら業務用専用、計算用システムなら計算専用に作られるのが一般的だった。
だが、これは、コストがかかる上に利益の少ないモデルだ。
そこで、OSと言うものが生まれた。一つの基盤ソフトウェアの下で、あらゆるシステムに対応出来るようになった。
IBM以前にもOSはあるが、OSの始まりとされているのは、IBM System/360である。

MulticsUNIX

AT&Tベル研究所やMITなどを中心とするグループは、高機能なOSとして、1960年代中ごろに、Multicsと言うOSを作った。
だが、Multicsは当時のコンピュータとしては過剰な機能を詰め込みすぎたために、まともに動かなかった。
その反省から、ベル研究所のケン・トンプソンらのグループが、シンプルなUNIXと言うOSを作った。
AT&T独占禁止法の問題から、コンピュータ・ビジネスに参入することを禁止されていたため、UNIXソースコードを公開し、自由に改良出来るものになった。
これによって、大学や研究所にUNIXは爆発的に広がる。
技術的に見ると、UNIX高級言語であるC言語で書かれていた。これにより、たくさんのプラットフォームに対応することが出来た。
だが、次第にUNIXは満足のいくものではなくなっていく。各社がUNIX互換OSを作り、その名称権を使って儲けるようになった。
そんなことをしていたこともあって、標準OSの地位は、すべてのUNIX系OSを出し抜き、MicrosoftによるパソコンOSのWindowsに奪われてしまった。
さらに、AT&T独占禁止法が解体され、ライセンス販売が出来るようになってから、UNIXは独占的なものへと変貌していく。

BSDGNU

そして、研究者は、UNIXをもう一度フリーに出来ないか、と言うことで、いくらかの試みを行う。
1977年よりビル・ジョイによってカルフォルニア大学バークレー校によるソフトウェア集として創始され、その後開発されていた「BSD」と言うUNIXの改良版があった。
このBSDUNIX著作権問題が発生しないように、AT&TによるUNIXの部分を書き直した部分をネットで配布するようになる。これが、後のFreeBSDNetBSDなどの「BSDUNIX」となる。
また、1983年にGNUプロジェクトを創始したリチャード・ストールマンは、完全にフリーなUNIXの代替品を作ろうと、GNUの開発を始める。
だが、BSDは386対応に後れを取り、GNUは、安定したカーネルを出せないままでいた。特に、GNUは、ほとんどのUNIXソフトウェアコンポーネントは作れていたのに、カーネルやデーモンなどの部分を完成させることが出来ないままでいた。
GNUは、当時先進的だとされていたマイクロカーネルHurd)によるOSを開発しようとしていた。現在でも、GNU Hurdは完成していない。
そこに現れたのが、リーナス・トーバルズによるLinuxだった。

MinixLinux

1990年代には、BSDLinuxなどのUNIX系のフリーOSがUNIX界で使われるようになった。
Linuxは、1991年に、当時大学生だったリーナス・トーバルズによって開発された。
当時、リーナス・トーバルズMinixと言う教育用の小さなUNIX互換OSを使っていた。
だが、Minixの機能に不満を感じ、自分なりにOSを作ろうと思った。
最初はターミナル・エミュレータだったが、開発していくうちに、Minixから改良したコードだけで、ほとんどのOSの機能を満たすようになった。
トーバルズの賢い点は2つ。まず、UNIXの利権問題を解決するように、完全に独自のコードでUNIX互換OSを作ったこと。そして、それをMinixのメーリング・リストで公開し、開発の参加者を募ったことだ。
MinixのMLの参加者も、トーバルズと同じようにMinixに不満を感じ、またUNIXのフリー版を欲しがっていたため、爆発的に開発者が増えていった。
Minixコンポーネントは、既にあったGNUコンポーネントに参加者たちによって置き換えられた。また、商用利用を禁止していた独自のライセンスを撤廃し、GNU GPL v.2を適用した。
その後、これを見たエリック・レイモンドは、「伽藍とバザール」と言う著の中で、オープンソース開発と言う全く新しいソフトウェアの開発方式だとした。

企業による開発

そして、Microsoftにブラウザ戦争で敗北したNetscapeMozilla.orgとして、バザール開発をもくろんで、Mozillaソースコードオープンソースにした。
その後、開発はボランティア主導ではなく、企業主導へと移っていく。Red Hatなどの会社がRPMと言う「専門技術のあるオタクではなくても、誰でも使えるディストリビューション」を作成した。だが、完全にボランティア主導のDebianなどのコミュニティも存続し、たくさんのオープンソース・プロジェクトが生まれている。
だが、いまだにMicrosoftの牙城を倒すまでには至っていない。Microsoftの開発したCOMと呼ばれる次世代のコンポーネント・システムは、KDEの使用するツールキットQtがオープンソースでなかったことから生まれた、GNOMEと呼ばれるデスクトップ環境によって、逆にWindowsからUNIX/Linuxへと、技術の移転が生まれている。

Linuxの開発が面白かった理由

Linuxの開発が面白かった理由は、僕は2つあると思います。
第一に、リーナス・トーバルズに対して、多くの貢献者が手助けをした、ということ。先陣を切って開発するトーバルズに対し、多くの有能プログラマが手助けをする、そのことが「インターネットの革新性」となって面白かった、というのが第一の理由です。
第二に、Linuxカーネルが使い物になるぐらい高品質だった、ということ。GNUのツールをカーネルに乗せたことで、Linuxカーネルはすぐに実用的なものになりました。作るべきは、カーネルだけで良かったのです。リーナスだけでは作れなかった部分を、多くのLinuxカーネルGNUの貢献者がコードやソフトウェアを寄贈し、そのことによってLinuxは実用的な品質を手に入れ、「まるで片手間のプログラマたちの献身的な手間の貢献だけで、超一流のOSが生まれた」という、エリック・レイモンドの言う「Linuxは破壊的存在なり」という側面がクローズアップされました。
開発体制がオープンだったことは、当時はネットでの共同開発ということ自体が珍しかったというだけで、僕は大きな理由ではないと思います。ツイッターFacebookが同じことを「まるで猿のように」やっているからです。彼らは、頭を全く使わないソーシャル・コミュニケーションを楽しんでいます。そう、Linuxはその前衛的な存在でした。

さまざまな人々の集まる場所

2018-01-05より。
オープンソースは、標準技術を公開する、という意味で正しい。一度作ったコードを再利用出来るようにするなら、外部から利用しやすいコンポーネントにするか、あるいはオープンソースにすべきだ。
Linuxを意味がないとは言うが、逆に意味がないのが優れている。オタク、ハッカー、自分勝手な人間、小さなコードの貢献者、何でもかんでも作る人間、オープンソース企業、エンタープライズ企業、サーバーやサービスの会社、研究施設の研究者など、色んな人間が作っている。プロジェクトは沢山ある。
プロジェクトも、Linuxカーネルのようにさまざまな人間がやっているのをリーナスがまとめているものから、GNUのように理想のために作っているもの、Red Hatのように会社が作るもの、KDEGNOMEのように競争しているものなど、色んなプロジェクトがある。
GNU原理主義的なところがあるが、何故かGNUに共感する人間は多い。オープンソースフリーソフトウェアは仲良くやりながら対立している。
オープンソースというと、機能の発展や開発体制に目が行きがちだが、フリーソフトウェアはそんなものは目指していない。ライセンスを厳密に守り、みんなのものにすることを目指している。だが、誰のものでもない素晴らしいものを作るという点で、両者は協力している。
本当は、Linuxの開発者とGNUの開発者は会社のように分かれているわけではなく、重なる部分も多い。
Linux的なオープンソースの良い点は、自発的な協力者によってどんどん発展すること。これはとても楽しい。だから、会社の協力者も節操なく受け入れる。オープンにすることで、どんどんコードが改良される。だが、Netscapeのような失敗例もある。
さまざまな人々が集まっているのは今でも同じで、企業の開発するRed Hatとある意味でアフリカの慈善団体のような集団であるUbuntuが、それぞれ違ったやり方でオープンソースソフトウェアをどんどん作ってLinuxを改良している。これはとても面白い、そして稀な現象である。