ロブ パイク
ベル研究所
ルーセントテクノロジ
rob@plan9.bell-labs.com
2000/2/21
この話は,今日のシステムソフトウェア研究について私が悲観的に感じいている点についての討論である.私は楽観的な点についてこれ以上話をしたくなかった.というのは,他の人たちが私にそうできるからだ;誰もが計算機産業に熱中している.だからこそ,私は実際よりもいくぶん暗い絵を提供しようと思う.
しかし,私は,今の状況は本当に悪いし,何らかのアクションが必要だと思っているのだ.
システムソフトウェア研究は,計算機産業の中の熱狂から脇に置かれてきている.熱中するような非商業なデモを最後にみたのは,いつのことだったろう?
皮肉を言えば,コンピューティングがほとんど改良の定義と同じになっている今は,大学と多くの企業でのでのソフトウェアとハードウェアの両方の研究は,孤立して,凝り固まったものであり,そして見当違いなものになってきている.
それには多くの理由があり,いくつかは回避できるものであり,いくつかは風土病のようなものである.
このような状況を改善する複数の方法があるけど,それらはコミュニティ全体の努力を必要とするだろう.
システム
ソフトウェア
研究
は
見当違いのことをしている
<ここには,SOSPにおける新しいOSの数のグラフがある>
"ところで,誰が新しいOSなんか必要としているの?”とたずねる.
たぶん誰もいない.でも,それは私のテーマをサポートするのだ.
“でも今,ファイルシステムや,性能評価や,セキュリティや,ウェブキャッシュなどでは多くの論文があるよ”とあなたはいう.確かに.でも研究分野以外の誰が,そんな論文に注意を払うだろうか?
最上位のワークステーション:
| 1990 | 2000 |
| ハードウェア | |
| 33MHz MIPS R3000 | 600MHz Alpha or PentiumIII |
| 32MB RAM | 512MB RAM |
| 10Mbpsイーサネット | 100Mbpsイーサネット |
| ソフトウェア | |
| Unix | Unix |
| X Windows | X Windows |
| Emacs | Emacs |
| TCP/IP | TCP/IP |
| Netscape | |
| 言語 | |
| C | C |
| C++ | C++ |
| Java | |
| Perl(少しだけ) | |
ハードウェアは劇的に変わってきた;ソフトウェアはよどんでいる.
たいがいはマイクロソフト.問題:1990年のマイクロソフトのソフトウェアを,2000年のソフトウェアと比べてみよ.
もし,君が「それは革新じゃない,単なるコピーだ」と文句をいうのなら,私はこう答える.C++に対するJavaは,Macintoshに対するWindowsなのだ:興味深いが技術的には壊れたシステムソフトウェア,というのが産業界の反応なのだ.
システム研究に意味があったとすれば,我々は新しいOSと新しい言語が産業界に食い込んできたのを見てきた.それは,我々が70年代と80年代にしてきた方法である.
そのかわりに,我々はソフトウェア産業が栄えてくるのをみてきている.とっても研究を無視して,ソフトウェアよりも論文を書く研究コミュニティを無視してきた.
革新?新規?いいや,それは昔あった同じものの,もう一つのコピーでしかない.
古いモノである.Linuxのプログラム開発をマイクロソフトのVisual StudioやIBMのJava/webツールキットなんかと比較してみよ.
Linuxの成功は,確かに私の主題に対して,単一の最も強力な議論となるだろう:10年前の古いOSのクローンが作り出した熱狂が,それまでシステムソフトウェア研究が満たせずにきたむなしさを示している.
そのうえ,Linuxの賢さはソフトウェアの中にあるのではなくて,開発モデルにこそある.あらゆる評価尺度からみても,アカデミックな計算機科学(特にソフトウェア工学)の大勝利からほどとおいものである.
Webキャッシュ,Webサーバ,ファイルシステム,ネットワークパケット遅延などなど.性能,周辺機器,そしてアプリケーションであり,カーネルではなく,ユーザレベルアプリケーションである.
しかし,たいがいは,多くの測定だけである;科学的な手法の誤った解釈と間違った応用である.
多すぎる現象論:発明は観測に置き換えられてきた.今日我々はLinuxとWindowsの割込み遅延を比較する多くの論文を目にする.これらは面白いものなのだろうし,意味のあるものでさえあるのかもしれない.でも,それらは研究ではない.
一見科学的に見えるけど間違った試みによって.性能測定が多くなりすぎている:それは,性能評価のとるに足りないくらい細かい部分であり,悪い海図である.
反対に,新しい言語やOSはマシンを異なったものにするように感じさせ,興奮を与え,珍しくさえもある.しかし,今日ではそれらは,クールなwebサイトやより速いCPU,計算機であるべきなのにそうではない,キュートな小さいデバイスによってなされることが多い.
アートではなくなってしまった.
しかし,アートは科学ではない.そして,それこそが重要な点である.システム研究は,まさに科学にはなりえない;それらはエンジニアリングであり,設計であり,そしてアートなのである.
多くことがある:
PC
マイクロソフト
Web
標準
通説
スケールの変化
Unix
Linux
起業
おばあさん
ハードウェアは安くなってきた.そして,安いハードウェアはよいものである.ついには,PC上で動かなければ相手にされなくなっている.というのは,平均,期待値,中心,そしてモードとなる計算機はPCだからである.
1980年代でさえ,多くのシステムは新しいアーキテクチャの周りで動いていた(例えば,RISC,iAPX/432, Lisp Machines).いまは何もない.興味深い問題と,たぶん,興味のある解法をもたらす主要な源は,なくなってしまった.
多くののシステムはまた,アーキテクチャにかかわらず動くようになっていた:ポータビリティである.しかし,ハードウェアがすべて同じなら,それは問題にならない.
Plan9は世界でもっともポータブルなOSであろう.我々は新しいリリースをするときに,PCだけにした(昔の目的のために,他のアーキテクチャのためのソースを含めようとしたが,使う人が誰もいないだろう).
そして,ハードウェアとしてちょうどPCだけなのだ.ソフトウェアについては,同じような物語がある.
この話題について話すのはもういいだろう.(人々はさらに言いつづけるだろうけど)
マイクロソフトは簡単な標的なのである.しかし,それはスケープゴートだし,難しさの本当の源ではない.
詳細は次のとおり.
Webは1990年代のはじめに起こって,産業界と同じくらい,計算機科学コミュニティを驚かせた.
そして,その議論のほとんどの部分は支配的になってきているが,十分効果的なものではない.ビジネスがそれを制御しているのである(Webは物理学者から出てきたものであり,産業界によって推し進められた).
IBMのBruce Lindsayはいう:HDLC C HTTP/HTML; 3270端末はwebブラウザに取って代わられた(VisicalcとPCとを比較してみよ).
研究活動は,これらにほとんど貢献してこなかった.キャッシュやプロキシ,サーバアーキテクチャなんかの膨大な論文を除けば.
価値のある計算機システムにするには,巨大で,たびたび変わる標準のリストに「敬意」を払わなければならない:TCP/IP,HTTP,HTML,XML,CORBA,Unicode,POSIX,NFS,SMB,MIME,POP,IMAP,X,...
膨大な仕事量である.しかし,もしその標準を敬っておかなければ,あなたは外に追いやられてしまう.
どうみつもっても,Plan9の仕事の90-95%は,直接にせよ間接にせよ,外から押し付けられた標準に敬意を払うためのものである.
別のレベルでは,命令セットアーキテクチャや,バスなども同じ影響を受けている.
外部から押し付けられた多くの標準があるので,新規性を生み出すような残りかすはほとんど残っていない.
加えて,標準を‘持っている’商業的な会社,例えばマイクロソフトやシスコは,慎重深く,標準が競合他社にフラストレーションを起こすように仕向けている.学界は被害者なのである.
今日の博士課程の卒業生は,Unix,X,EmacsとTeXを使っている.それらが,彼らの世界なのである.しばしば,技術的な作業のためにそれまで使ってきた,唯一の計算世界になってしまう.
12年前,学生はいろいろなOSにさらされていた.それらはよい点もあれば,悪い点も備えていた.
我々の研究所の新入りは,彼らともに彼らの世界を持ち込んできた.もしくは,彼らが来たときに,そうであるように着たいしていた.それらは,合理的なことであるが,新しい研究所が新しい仕事の方法にさらされる機会とともに,昔のこととなっていった.
経験の狭さは,想像力の狭さにつながる.
言語の状況は,それより少しだけよい.関数型言語の経験を含む多くのカリキュラムがあるからである.しかし,言語の信仰もまたあるのである:C++とJava.
科学では,我々は,自分らを間違っていることを証明する人々のために,最高の敬意をとっておけといわれている.しかし,計算機科学では...
多くの外部的な制約と,とても多くのことがすでになされていることから,面白いしごとの多くは大規模な努力を必要としている.多くの人間が,現代的で現実的なシステムを作成するのに必要となる.
また,時間のスケールも長くなっている:設計から最終版まで5年かけることもできる.またもや,ほとんどの卒業生の知見の及ばないところとなる.
これは,産業界が大きく,限定したOSや基盤などのプロジェクトをやりたがるということを意味している.また,小さな研究グループは,働きつづけるためにより小さなものを見つけ出さないといけない.
結果として三つの傾向が見受けられる:
1.作るな,測定せよ.(現象論であって,新しいモノではない)
2.広くやるな,深くやれ.(微小で特殊なものであって,システムにしない)
3.あるものを取り上げて,それをひねってみよ.
私は,これがSOSP曲線についての主な説明であると信じている.
今日の新しいOSは,Unixの再実装で一つでしかないようだ.もし,彼らが新しいアーキテクチャを持ち,何かをするときには,まずやることといえばUnixのエミュレーション層を作ることである.
結果のOSがすべて区別のつかないようなものにしかならないのなら,どうやって,OS研究は意味があるものになるのだろうか?
1970年代の後半と,1980年代の前半には,UnixはOS研究を殺してしまったという批判があった.なぜなら,誰も他のものをやろうとしなかったから,というものである.そのときは,私はそれを信じなかった.今日,私は,恨みつつも,その批判が正しいことを認めている(マイクロソフトは同意しないだろうけど).
自分自身の成功の犠牲になってしまう:移植性は,どこにでもあるということに結びついている.それは,アーキテクチャの問題ではなくなってしまい,現在ではたった一つしかなくなっている.
Linuxは,ホットで新しいものである...でも,それはもう一つのUnixでしかない.
聖なる三つの矢:Linux,gccそしてNetscape
もちろん,それはほんとに別の通説である.
それらは象徴になってきている.というのは,彼らがそうであるからというだけではなくて,彼らがそうでないから,というものである.つまりマイクロソフト.
しかし,技術的には,それほどホットなものではない.そして,マイクロソフトは一生懸命働いてきているし,多くの(すべてではないけど)次元で,彼らの相当品というのは技術的に優れいていると,私は思っている.そして,彼らは改良しつづけている.
Linuxはマッキントッシュのわなに落ちているようである:(近づいてきている)老朽化への自己満足な孤立.
加えて,システム研究は,その三本の矢を発展させるのにほんの少ししかしてこなかったのである.
起業は,学問に対する優位な競争相手である.アイディア,基金,人員,そして,学生にとって.(別のものは,マイクロソフトや,大企業,タダで働くおびただしい数のハッカー,そして,IETFである)
また,政府の研究費や,特に企業の研究では,とても速い‘投資に対する見返り’を求められる.
これは,次の優先度へとゆがめる結果となる.
研究は,一年で巨額のお金を得る(IPOなんかで)ことができるようなものに曲げられる.
地平線は,長期の作業のためには短すぎる(基盤と問題の規模に行く).
研究費の出元(政府,企業)は,同じ圧力に気づく.そして,不正の輪が出来上がる.
利点を計ることは間違っているのである.
スタンフォード大は,現在,学生が企業することを後押ししている.というのは,成功したCEOたちは大学に多額のお金を払うからである.現在の,新しいスタンフォードの学長は,成功した計算機の起業家である.
おばあさんのためのオンライン.これは,産業がシステムとサービスを,普通の人たちに向けて設計しているということを意味している.
焦点は,アプリケーションとデバイスにあって,基盤やアーキテクチャなどの,システム研究の領域には,あたらなくなってくる.
原因は,主にマーケティングにあり,不完全なデバイスのproliferationという結果になる.あなたは,ソフトウェアでお金をかせぐことはできなくなる.ハードウェアだけである.それで,ニッチ市場へのギミックを設計してしまい,すぐれて新しいアイディアを設計できない.
プログラムできることは,計算機における一度大きなアイディアを,道端へ落とすことである.
ふたたび,システム研究は見失ってしまうのである.
企業は,短期間で,新しいものを試すための実際的な結果に焦点を合わせすぎである.大企業は,新しい物を試すには,今の優先度に焦点を合わせすぎている.起業は,研究からエネルギーを吸い取ってしまう.そして,ゴールドラッシュは,ゴーストタウンを招いてしまう;移動するために,準備をしよう.
フィオナの物語:”なぜ,あなたはPlan9を使うの?”
システムについて考え,作ることに戻ろう.狭いことは無意味である;広いことに意味がある:それは,システムの本質である.
勇気をもとう.異なったことに挑戦して,経験しよう.クールなでもをやるようにしよう.
Funding bodies:さらに勇気をもって投資しよう,特に,長期のプロジェクトに.反対に,順番に,大学は学生が長期プロジェクトに貢献する方法を探索すべきである.
アイディアによって成功を測ろう.論文や予算だけではなく.起業にきみらの仕事をほしがらせよう.
価値のある,使える,興味深いすべきものがたくさんある.私は,証拠として小さな例を示そう.その分野が消滅寸前なら,それは可能性が欠けているからではない.
一つのGUIだけが,これまでまじめに試されてきた.そして,一番のアイディアは,1970年代からある.(いくつかの方法で,それは悪くなってきてしまった;今日では,スクリーンは,小さな絵でぐちゃぐちゃと覆われている.)確かに,他の可能性もある.(Linuxのインタフェースは,Windowsにくらべてさえよくない).
コンポーネントアーキテクチャについて多くが語られているけど,真に成功したものは一つだけである:Unix Pipe,それだけ.対話的に構築することもできるべきだし,部品からなる分散化したアプリケーションでも可能であるべきだ.
将来は,分散コンピューティングになるだろうけど,言語コミュニティでその可能性を指し示すものはほとんどない.
Webは,どのようにシステムが存在し,情報を利用するかという点で優勢である:そのモデルは,対話を強制する;ユーザはそれをとりに行かなければならない.かわりに,ユーザにデータを来るような形に戻ろう.
システム管理は,とても難しい問題を残している.つまらなく,確実ではあるけど,大きくて,商業的な貢献をする多くの場所がある.
世界は,それを計算機がどうであってほしいのかを決めている.システムソフトウェア研究のコミュニティは,幾分(でも少しだけ),その決定に影響を与えた.そして,現在,その議論から蚊帳の外にいる.
それは,私がすばらしいシステムプロジェクトにさえ,予算が付けられるということを疑っているという点に到達する.そして,もし予算がつけば,その仕事をするための実体を見つけることはないだろう.成功の掛け金は常に低いのであり,今は現実に0である.
大学や,学生,産業界,予算担当などのコミュニティはその優先度を変える必要がある.
コミュニティは,オーソドックスでないアイディアを受け入れ,試すべきである.
コミュニティは,研究を,市場の投資から分けるべきである.