MINIXに関する世界観です。
AT&Tによってパブリックドメインで公開されたUNIXは、OSの全ソースコードを自由に閲覧することができた。
だが、AT&Tに対する独占禁止法の措置が解除されるとUNIXはパブリックドメインでなくなり、自由にソースコードを見ることができなくなった。
これはOSの技術や実装を学ぶ学生や、OSの仕組みを教える教授にとって望ましいことではない。
そのため、タネンバウム教授によって学生にOSの仕組みを教えるために作られた、IBM PC/AT互換機で動くUNIXのクローンが、MINIXである。
MINIXは当時正式にはオープンソースではなかったが、タネンバウム教授の書籍オペレーティングシステム―設計と理論およびMINIXによる実装からソースコードを見ることができ、学生は自らMINIXを自分のパソコンで動かしながら、ソースコードと解説を書籍で読むことで、OSを自分で作るための学習をすることができる。
しかしながら、MINIXはあくまで教育用を目的としており、OSの機能として目新しい点はないが、マイクロカーネル構造を採用している。しかしながら、i386の仮想記憶に対応していないなど、実用として満足のいくものではなかった。
当時、MINIXを使っていたLinuxカーネル開発者のリーナス・トーバルズは、著作権の問題から提供されていなかったIntel CPU用のBSDカーネルを入手することもできず、GNU Hurdカーネルも完成していなかったため、独自のLinuxというカーネルを作った。最初はターミナルエミュレータのようなものだったが、改良されるにしたがってMINIXに対して付け加えたコードだけで一人前のカーネルとして動作するようになった。このLinuxカーネルを、リーナスは「あくまでホビー的なもので、GNUのような大規模なプロジェクトではない」とした上で、MINIXのメーリングリストに公開した。
Linuxカーネルは、同様にフリーなUNIXのクローンを求めていた人々に大人気となり、「自分も使いたい機能を作る」などといってインターネット上のみんなで改良された。独自の商用利用を禁じたライセンスはGPLに置き換えられ、MINIXのコンポーネントはGNUソフトウェアに置き換えられた。ここに、GNUが「GNU/Linux」と呼ぶような、「完全に無料かつ自由なOS」は完成した。
さまざまな人間が片手間でパッチを作って、それをなんでも取り入れオープンに開発するモデルは「バザール開発」と呼ばれた。また、アラン・コックスのような善意のボランティアによって大幅なバグの修正などがなされ、当時のWindows 9x系OSと比べてもバグが少なく、一部では「Windows陣営に対する革命」であるかのように扱われた。
しかしながら、Linuxカーネルは先進的なマイクロカーネル構造を採用しておらず、旧来のUNIXカーネルが採用していたようなモノリシックカーネルだったため、タネンバウム教授からは「Linuxは時代遅れだ」と言われた。現在でもLinuxカーネルはモノリシックカーネルのままだが、Linuxではモジュール機構を取り入れ、個別の機能をモジュールで実行中に動的に追加・削除できるため、マイクロカーネルの長所だけを取り入れていると言える。また、GNU Hurdがいつまでも完成されなかった理由として、GNU創始者のストールマンは「マイクロカーネルのデバッグが予想以上に難しかったため」としている。一般にコマンドで対話的に実行されるソフトウェアよりも、サービスやデーモンと呼ばれる非対話型のソフトウェアはデバッグが難しく、それらがポートやメッセージを通じて複雑に関係し合うGNU Hurdのモデルは開発が難しかった。そのため、MachのようなマイクロカーネルのOSカーネルはパフォーマンスの問題があり、Linuxカーネルが「とても高いパフォーマンス」を誇るのはタネンバウム教授の発言に反してモノリシックカーネル構造を採用したためであると言えるかもしれない。
昔はオープンソースでなかったMINIXだが、現在は過去のバージョンにさかのぼってオープンソースのライセンスとなっている。
オペレーティングシステム―設計と理論およびMINIXによる実装を参考に執筆しました。
AT&TのUNIXは、ソースコードを自由に見ることができ、多くの大学でOSの理論と実装を教える上で、UNIXのコードは必要不可欠だった。
しかしながら、AT&Tの方針転換によって、UNIXのコードは自由に見ることができなくなり、大学で教えるためにも使えなくなった。
そのため、大学ではOSの実装を教えることをやめ、理論だけを中心に教えることになった。
しかしながら、理論だけでは、OSの本当に大切なことをきちんと教えることはできない(入出力やファイルシステムなどのOSにとって大切な部分は、理論性が低いため十分に教えられないこともある)と、MINIXの作者タネンバウムは考えた。
そこでタネンバウムが作ったOSがMINIX。MINIXはUNIXと互換性があるように構築されながら、設計にモジュール性を取り入れ、ファイルシステムなどはカーネルの一部ではなく、ユーザープログラムとして実装された。
何より、OSの学習者に分かりやすいように、全体の実装を小さく保ち、ソースコードも読みやすいように書かれ、説明となるコメントも豊富に取り入れられた。
MINIXがリリースされて、USENETニューズグループが結成されると、毎日たくさんの参加者が「MINIXに取り入れてほしい機能」の提案を送ってくるようになった。
しかしながら、MINIXの制作者は、MINIXを学習者のために小さく保ちたいと考えており、このようなニューズグループの機能追加の提案に抵抗を続ける。
そして、フィンランド人のリーナス・トーバルズは、このMINIXのニューズグループに、自作のカーネルを作ったことを投稿した。ここから、Linuxの歴史は始まった。
Linuxの開発が行われる前にリーナス・トーバルズが使っていたとされる、アンドリュー・タネンバウム教授のMinixは、教育用のOSとして著名で、Minix本(オペレーティングシステム 設計と理論およびMINIXによる実装)と一緒に今でもOSカーネルを作りたい人に愛読・利用されている。
アンドリュー・タネンバウム教授はLinuxのことを「時代遅れ」だとし、リーナス・トーバルズと議論を巻き起こしたことで有名。
タネンバウム教授は残念なことにLinuxユーザーから批判されることが多く、Linuxの成功に対して「先見の明が無かった」とされることが多い。たとえばLinuxにおけるファイルシステムの並列処理を「芸当」と言ったなどのコメントばかりが取りだたされるが、Minix本の著者と知られるようにLinuxに対しても多くの(知的・教育的な)貢献をしている。
以下の書籍が参考になります。
教育用のUNIX互換OS。
Wikipedia
ソースコード
マイクロカーネルOSについては、Machも参照のこと。
Linux 歴史を参照のこと。
タネンバウム教授による分散OSであるAmoebaについては、分散OSも参照のこと。
書籍