Plan 9 from Bell Labs
Plan 9はベル研究所内の主な研究用プラットフォームとしてUNIXを代替し、システムの使用とプログラミングについての本来のUNIXのモデル、特に分散マルチユーザー環境にいくつかの変更を加えることの研究対象ともなった。1980年代中ごろに始まった当初、Plan 9はベル研究所内部のプロジェクトだった。
Plan 9はベル研究所の Computing Science Research Center のメンバーが開発した。そのグループはUNIXやC言語を開発したグループと同一である。当初チームはロブ・パイクやケン・トンプソンらが率い、Computing Techniques Research Department のリーダーとしてデニス・リッチーが支援した。開発には、ブライアン・カーニハン、ビャーネ・ストロヴストルップらも貢献している。
1992年、大学向けに初めてリリースした。1995年、一般向けの商用OSとしてリリースした。1990年代末、ベル研究所を引き継いだルーセント・テクノロジーは、このプロジェクトの商業化を断念。2000年、オープンソースライセンスで非商用リリースを行った。2002年、新たにフリーソフトウェアライセンスで非商用リリースを行った。
ベル研究所の研究員やマサチューセッツ工科大学などの Plan 9ユーザーコミュニティが、ISOイメージの形で頻繁なマイナーリリースを継続している。その開発はいまだにベル研究所がホスティングしている。開発ソースツリーは9PプロトコルかHTTPプロトコルでアクセスでき、インストールしたものを最新に保つのに使われている。OS本体をISOイメージとしている以外に、アプリケーションやツールのリポジトリもベル研究所がホスティングしている。
UNIX以前、多くのオペレーティングシステムはそれぞれのデバイスにアクセスするのに、それぞれ異なる機構を用意していた。例えば、ディスクドライブにアクセスするAPIは、シリアルポートでデータ送受信をするためのAPIとは全く異なるし、プリンターにデータを送信するAPIとも全く異なっていた。
UNIXはそのような差異をなくそうとし、全ての入出力をファイル操作でモデル化しようとした。そのため、全デバイスドライバが制御手段として read および write 操作に対応する必要に迫られた。こうすることで、mvやcpなどのユーティリティで、実装の詳細を気にすることなくデバイスからデバイスにデータを転送することができるようになった。しかし、UNIXでは多くの重要な概念(例えば、プロセス状態の制御など)はファイルにきれいにマッピングされなかった。ソケットや X Window System といった新たな機能が追加されたとき、それらはファイルシステムの外に存在するようになった。新たなハードウェア機能(ソフトウェアがCDのイジェクトを制御するなど)も、ioctlシステムコールなどのハードウェア固有制御機構を使うようになった。
Plan 9研究プロジェクトは、ファイル中心の見方への回帰を目標とし、それ以外の手法を排除した(その一部は、外のUnixへ与えた影響が限定的であった、ベル研版UNIXのバージョン8, 9, 10から引き継がれたものである)。Plan 9のプログラムから見れば、ネットワークやユーザインタフェースのリソース(ウィンドウなど)も含めたあらゆるリソースが階層型ファイルシステムの一部となっており、それ以外の特別なインタフェースは使わない。
↑ UNIX との違い
↑ Raymond, Eric. “The Art of UNIX Programming”. 2007年5月7日閲覧。
↑ McIlroy, Doug (1995年). “Preface to the Second (1995) Edition”. Lucent Technologies. 2006年4月2日閲覧。
1 2 “Plan 9 from Bell Labs”. Lucent Technologies (2006年). 2006年4月27日閲覧。
↑ “Staying up to date”. Plan 9 community (2006年). 2006年4月27日閲覧。
↑ Portals in 4.4BSD
↑ Pike, Rob (2003年). “UTF-8 History”. 2006年4月27日閲覧。
↑ Plan9 BG Presentation
1 2 Raymond, Eric S.. “Plan 9: The Way the Future Was”. 2006年3月28日閲覧。
↑ “9grid (Plan 9 wiki)”. Plan 9 wiki (2006年). 2006年3月28日閲覧。