平々毎々(アーカイブ)

はてなダイアリーのアーカイブです。

Miguel de Icaza、Microsoftと.NETについて語る

https://tirania.org/blog/archive/2010/Mar-25.html をてきとうに翻訳。"The best C# and .NET days are ahead of us." とか、かっこえーなー。

Microsoftと.NET

Davidの記事「.NETに関するWindows戦略税」でなされている私の引用には前後関係が足りていないように思える。

Davidが私と連絡をとったとき、彼は.NETの進化について書いていた。そして彼はMicrosoftに意見を述べていたので、Microsoftは正しいと考える人とMicrosoftは間違っていると考える人からのフィードバックを得たかったのだ。これは、私がDavidへ送った電子メールの書き出しだ。

まず、私は.NETの大部分についてはちょっとしたファンなので、完全に客観的とはいえないだろうと前置きさせてください。あなたはMicrosoftの宿敵からのフィードバックも得たいのかもしれませんが、少なくとも.NETを試したことがある宿敵からコメントを得ないといけないでしょう。大部分の人々はそれとは対照的に、断固たる意見を持っているけれど、これまで.NETを使ったこともないのです。


David said:
> あなたは.NET Frameworkを熟知なさっていますが、なにか変だと気づいたり、説明が必要だと感じるような、じわじわとした変化があったりしますか?


.NETについては、私がぜんぜん好きではない領域というのが確かにあります。それらは(ある程度は)回避したり無視したりできるので、大きな問題ではありません。それでもいくらかは存在するのです。

そしてここからが、Microsoftが.NETの生態系を撃っているという引用の元ネタだ。完全性のために私の電子メールからコピーしよう。別に秘密のことではないし。

その中で最も重大だと思う部分は、特許侵害という断ち切れない糸を生態系に投げかけることで、Microsoft自身が.NET生態系の足元を撃ったということです。活気に満ちたJava仮想マシン実装が何十も開花しているJava界とは異なり、.NET界はBallmerによって広められた、特許を認可されていない人々を追いかけてやるぞというミームによって傷つけられました。

いっぽうSun は最初からこう述べていました。独自にJavaを実装する人を特許侵害で告訴しませんと。Googleは、Google APIGoogle Waveについて同じようなことをしています。彼らは、自分たちの所有物へのアクセスを誰にでも与えています。

Microsoftの外にいる、ECMA標準のただ一人の開発者として、私は彼らが.NETFrameworkを実装する権利を誰にでも与えることを確かに望んでいました。もしそうだったならば、一番人気の実装は.NET Frameworkで変わらなかったかもしれないですが、生態系を活性化させ、.NETプラットフォームのまわりの広い範囲で革新が起きていただろうにと思います。

その代わりに、人々は去り、Javaや他のプラットフォームで革新を起こしました。それらのプラットフォームは.NETほど先進的ではなかったかもしれませんが、少なくともそこにはMicrosoftの脅威はありませんでした。

Google は.NETを使ったかもしれませんでした。Railsは.NETの上に築き上げられたかもしれませんでした。WikipediaFacebookASP.NET.を使って造らたかもしれませんでした。

これらすべての機会は失敗したのです。 たとえ言語横断環境の物語が非常に良かったとしても、Webとの統合が素晴らしかったとしても、あなたが望むどんなプラットフォームにも適合する最適なアーキテクチャだったとしても、人々はよそに集ったのです。

これはMicrosoftの最大の間違いです。そしておそらく、それについて何かをするにはあまりに遅いのです。

これらの間違いを少しでも変えるための新しい管理体制と新しい人々に、Microsoftは8年を必要とした。2001年にランタイムに存在した脅威のベールはCommunity Promiseの発表で取り去られたが、それには8年かかった。そして、この8年間は失われた機会の8年間であり、すべての物事についてMicrosoftFUDが向けられる8年間だった。

.NETがインターネットの一般的な実行環境になる大きな機会をMicrosoftは逃してしまったと私はまだ思っている。そして、彼らは今なお最高の実装を持つことができたはずだとも。 彼らが.NETの残りをCommunity PromiseまたはOSPの下に置かなければならないと私はまだ信じている。そうすれば、オープンソース実装のMonoが存在していたとしても、彼らは彼らの強みを保持するだろうと。

他の実行環境でのイノベーションについて

Davidは、Ted Neward(.NETとJavaに関する話者だが、どう想像をたくましくしてもオープンソースの人ではない)の言葉を引用している。TedはJavaと革新についての私の論点を論破しようとしたが、要点をとらえそこなったようだ。

記事には、Tedの発言としてこう書かれていた:「Microsoftは『Rotor』というコードネームのオープンソースCLI実装を自由に利用できるようにしましたが、それにはほとんど取り込みがありませんでした」。

これには非常に単純な理由がある。 Rotorはオープンソースではなかったので、出た瞬間から失敗する運命だったのだ。Microsoftが2002か2003年にRotorをリリースしたとき、彼らは自分たちが何をしているか全くわかっていなかった。そして、Rotorにプロプライエタリなライセンスを与えてしまい、すべての努力は基本的に失敗したのだ。

Rotorのライセンスは「見てもいいが触るな」であり、商用利用は禁止されていた。これは、自分のソフトウェアをオープンソースと呼びたいときにやってはいけない第一歩だ。もしRotorがオープンソースだったなら、我々はMonoを開発する代わりにそれを使い、そこに投資していただろう。

記事は、Java仮想マシンへの関心についての事実も間違っている。確かに、大きなサーバーに配備されるのはひと握りだけだが、有名でないJava VMだってもう何年もJava文化の一部だった。Java VMのカスタマイズ版はいろんな組み込みシナリオに使われているし、研究でも広範囲に使われている。

Jikes RVM Java実装は今でも研究者には重要な遊び場であり、新しいGCやコードジェネレータ技術や大きなメモリ問題や最適化などのプロトタイプが作られテストされている。オープンソースKaffeは最初のオープンソースJITエンジンであり、これによって多くの開発者がクロスプラットフォームJITコンパイルの問題を調査する道が拓かれた。Japharは完全なオープンソースクラスライブラリスタックの先鞭をきった(最終的にはGNU class pathとなった)。Cacao オープンソースVMは新しいコード生成最適化技術を調査し、その後、この技術は他のJITエンジンにも使われるようになった。

産業界では、さまざまなJavaが組み込みシステムで使われた。今最も人気のあるものはDalvikだ。これはGoogleによるJavaに似たランタイムだ。

ここまでのリストは別にすべてを取り上げたものではなく、単にJava VMで起きた革新だけを取り上げたものだ。.NET/ECMA CLIも、Javaの設計ミスの多くを修復し、さまざまな面で改良され、Javaから得られた知見を基に作られたということは言うまでもない。

しかし、生態系についての私の論点はJVMにとどまるものではなく、一般的なJava生態系と.NET生態系を比較したものだ。JavaLinuxUnix上に実装があることを利用することができた。そしてそのことが、今のWebの半分以上を説明している。Apache財団は Javaベース開発の大きなハブであり、有機的に成長した。

もしも2001年のMicrosoftが開かれた会社で、多様性を受け入れていたならば、現在の我々は異なる世界に住んでいたことだろう。たぶん我らがMonoチームはもっと大きかっただろうし、既存のチームメンバーはもっと長く休暇をとれていただろう。

しかし、要点をとらえそこなった人たちにとっては幸運なことに、Microsoftには新しい管理体制があり、オープンソースをわかっている新しい社員がおり、新鮮で新しい発想があり、会社はよりオープンになり、サードパーティとの相互運用性に活発に取り組んでいる。CodePlex財団を発足すらした。

インタビューでDavidに言った通り、私はまだ.NETのファンだし、開発者の経験を改善できたと信じるMonoを至る所に持って行くために、我々は働き続けるつもりだ。我々は活発に改善に取り組んでいる。Mono on Linux、Mono for MeeGo、Mono for OSX、Mono for PlayStation、Mono for Xbox360、Mono for Wii、Mono for iPhone、Mono for Android、その他あらゆるもののために。

Java開発プロセスに関するSunの厳しい統制について不満を言う人たちと同様、私は.NETに関するMicrosoft開発プロセスについて自分の意見がある。だが、それはいつも通りのことでしかない。

C#と.NETの最高の日々が、我々の行く先にある。