再録:Moshe Barに聞く、プログラミング、社会、そして宗教

DevChannelでは、過去にOSDNに掲載された開発関連の優れたトピックを折に触れて再掲している。今回は、昨年夏Slashdot.orgに掲載された、OpenMosixのリーダーであるMoshe Barへのインタビューを取り上げる。初出時に見逃した方はぜひお読みいただきたい。


では始めよう。今週はじめに 読者から募集した質問への、Moshe Barの回答だ。

1)デバイス・ドライバの開発者として
Marx_Mrvelousからの質問

Linuxのディストリビューションはそれぞれ別のカーネルを使っているので、全部のディストリビューションで動くドライバを書くのは大変な作業です。Windowsなら、4〜6年もの間、何も修正しなくても、同じドライバをすべてのWindowsマシンで使い続けられます。Windowsに比べてLinuxでは、ドライバの開発が遅れているように思えます。そこで質問したいのですが、Linuxのデバイス・ドライバを開発した経験から、カーネル・バージョンの標準化と、主要なハードウェア・ベンダに対する互換性の保証を目的としたクロス・ディストリビューションの試みは、Linuxのドライバ開発を推進することにつながると思いますか?

Moshe:

ディストリビューション間でのカーネル・バージョンの標準化は、ビジネス上適切でもなく、必要でもなく、ドライバ開発を楽にするものでもないと思います。難しいからできないと言っているわけではありません。それに、Windowsの方がドライバ開発者の人数が多い(それが本当なら、の話ですが)のが、ディストリビューション間でカーネルのバージョンが異なるのが原因だとは思いません。実際には、カーネルのバージョンが違っても、ほとんどのドライバは問題なく使えます。ほとんどの場合、ヘッダを変更してカーネル・モジュールを再コンパイルするだけです。

それ以前に、Windowsの各バージョンで使えるドライバを書く方がよっぽど難しいのではないかと思います。Windowsの各バージョン(95、98、ME、2000、XP、そして今後のバージョン)は、それぞれまったく違うOSなのですから。

2)1つだけ質問
Baldric Dominusからの質問

「foo」という名前のお子さんがいるのですか?

Moshe:

子供はまだいません。いずれは何人かfork()するつもりですが、まだ名前のことまでは考えていません。:-)

3)社会グループ
CAIMLASからの質問

人はさまざまな側面を持っていますが、自分はどの社会グループに属していると思いますか?たとえば、あなたのバイク仲間の中に、Linuxを開発したり、使ったりしている人はいますか?あなたはとても活動的な人のようなので、社会的な立場が何なのか、興味があります。

Moshe:

私が属している社会グループは広範囲にわたっています。その理由としては、私たち夫婦が、家を事実上2つ(イスラエルに1つ、ヨーロッパに1つ)持っている、ということが言えます。ヨーロッパと中東(もしくはアジア)は、文化的にも民族的にも大きく異なります。一番大きな差異はそこから生まれていると考えています。その他のいろいろなグループ(バイカー、弁護士、仕事仲間など)は、たとえ同じ大陸上にあっても、何らかの違いがあります。その違いこそが、私を惹きつけてやまないのです。一般的に言えば、バイカーが同時にカーネルのハッカーでもある、ということは少ないでしょうし、弁護士が同時にタルムードの研究者でもあるということも少ないでしょう(いずれも法とその実践を扱うことに変わりはないのですが)。しかし、私はこれらのステレオタイプのいずれにも当てはまりません(実際に当てはまる人がいるかどうかも疑問です)。これらのグループすべてに共通しているのは、自分が得意とすることを、情熱を持って行う、という点です。

4)BitKeeper
AirLaceからの質問

一部の開発者からの強い反対にもかかわらず、Linus氏は最近、カーネルの保守に、フリーでないSCM(BitKeeper)を使い始めました。BitKeeperはプロプライエタリであるだけでなく、ドキュメント化されていないファイルフォーマットを使用しており、相互運用を困難、もしくは不可能にしています。フリー・ソフトウェアに忠実な開発者を、プロプライエタリのソリューションやシェアウェアに乗り換えるようそそのかすような行為は、正当だと思いますか?

Moshe:

パッチを作成したり、それをLinusに送ったりするのに、BKを使えと強制された人はいません。確かに、BK経由で送られたパッチをLinusが配布物に含める可能性は高くなるかもしれませんが、全員がBKを受け入れたわけではありません(代表的なのがAlan Coxです)。私は個人的なファイル用にBKに切り替えましたが、BKのビジネス・モデルはいまだにあまり評価していません。まず問題なのは、もしBKを完全にオープンにしていたら、Larryが何らかの形で損をしたかどうかですが、私はそうは思いません。もう1つの問題は、BKと互換性のあるopenBKを作るのが難しいかどうかですが、こちらも、私はそうは思いません。コミュニティが現在の勢いでBKを受け入れていくとすれば、いずれopenBKを完成させる人が必ず現れるでしょう。オープンソースの世界へようこそ!ですね。

5)デバイス・ドライバの開発者として
dalutongからの質問

LinuxカーネルはMozillaプロジェクトのような方法論を採用するべきだと思いますか?Mozillaでは、バージョン1.0がリリースされるとAPIが凍結され、すべてのプラグインや、geckoを使うアプリケーションなどは、バージョン1.2が発表されるまで互換性を保つことができます。Linuxカーネルも同じように、2.4.0で動作するドライバが2.4.20でも動作するよう、ドライバ用の標準化されたAPIを作るべきでしょうか?

Moshe:

そうは思いません。MozillaのAPIモデルは、「ソフトウェア開発にはお金がかかる」という、時代遅れの仮定を基に作られたものです。オープンソースの世界で、カーネルに変更があるとドライバも変更しなくてはならないということは、金銭的にも技術的にも、メリットでこそあれ、決してデメリットではありません。プロプライエタリ・ソフトウェアでは、デバッグ済みのコード1行あたり、50ドルから200ドルもの値が付いています。オープンソースのソフトウェアではこのような金額はあり得ません。APIは、変更するに足りる理由があるから変更されるのです。あなたのドライバがその恩恵を受けない手はないでしょう。

6)データベースのクラスタ
emilからの質問

私はクラスタが専門なのですが、商用とオープンソースの両方で、あなたがデータベース・サーバのクラスタリングにどのような選択をするか、興味があります。

1つ目の質問です。IBMのDB2は、最近のTPCベンチマークでOracleを完全に打ちのめしたようです。OracleのRACは失敗でした。しかし、IBMは自社のプロプライエタリ・サーバのシリーズのハードウェアを一切使わず、その代わりに、LinuxまたはWindowsが動作している32台のPCで実行する、連合データベースのクラスタを利用しました。Oracleは、単一のシステムの「生の」パフォーマンスでは依然としてIBMを上回っています(私の知る限りでは、IBMは非クラスタ化のベンチマークの提供を一切拒否しています)。

これらのベンダのクラスタ・パッケージの売り文句のうち、注目に値するものはありますか?また、TPC(-C)にはもはや実用に耐える妥当性はないというSunの主張は正しいと思いますか?いずれも馬鹿げているように思うのですが。

2つ目の質問です。PostgreSQLやSAP-DBなど、ACID-leaningなオープン・データベースのいずれかを、(Mosixを使って)フォールトトレラントにする予定はありますか?これを実現するためには、PostgreSQLが生のパーティションにアクセスできるよう変更する必要があると考えています。PostgreSQLのクラスタ変更について、Red Hat Databaseの関係者と打ち合わせたことはありますか?(単なる好奇心です)

Moshe:

DB2、PostgreSQL、SAP DB、その他さまざまなDB技術の関係者とすでに話し合いを持っていますが、これらのうち、プロプライエタリのクラスタリング技術(特にDB2とOracle RACの技術)は、スケーラビリティとTCOにかなり問題があります。openMosixモデルでは、1台のマシンに、1つのDB2と1つのOracle 9iをインストールします。分散共有メモリの実装(現在計画中です)が実現されれば、インスタンスを生成するプロセスを他のノードに移動することで、DBのブロックキャッシュ領域をより多く確保できます。このような操作は、openMosix上でRDBMSに対しては透過的に行われます。カーネル内にクラスタリング・レイヤが実装されており、すべてのアプリケーションがそれを利用できるからです。

たとえばOracle RACでは、RACクラスタに含まれるすべてのノード上にRDBMSをインストールしなければなりません。パッチを当てる作業が2時間かかる場合、パッチを当てる際のDBのダウンタイムは、(2時間×ノードの数)になってしまいます。さらにopenMosixでは、間もなくDolphinサポートを実装する予定です。これによって、4KBのページを、14.4マイクロ秒でノードからノードへコピーできます。Oracleのようなシステムは、クラスタ全体にわたる、非常に低いレイテンシの恩恵を受けることができます。ドライバがカーネル空間内になければ、すべてのアプリケーションベンダがそれぞれドライバを書かなければならないことになります。その場合、同じマシンで同じことをしようとする別のアプリケーションと衝突してしまう可能性が出てきます。つまり、DBアプリケーションのレベルでクラスタリングを行うという考え自体に問題があるのです。

なお、openMosixは高可用性を扱わないので、その点に関する質問にはお答えできません。

7)Linuxとはまったく関係ありませんが…
Dimwitからの質問

どんな質問でも構わないということだったので。Slashdotには哲学者がかなりの数いるようなので質問します(また、私がユダヤ人だからという理由もあります。私はこの問題をずっと考え続けていて、この機会を逃したら次にいつ質問できるか分からないので)。

科学とトーラー(訳注:旧約聖書内の「モーセ五書」のこと)の神は相容れると思いますか?また、科学と創造説はどうでしょうか?天地創造に科学が迫っていく中で、科学が宗教とより調和していくことはあり得ると思いますか?私が伺いたいのはつまり、科学に神の居場所、あるいは神の存在はあると思うか、ということです。

Moshe:

私は敬虔な神の信者ですが、科学と神が相容れるとは決して考えません。世界は(ユダヤ暦の)5762年前ではなく、何十億年か前にできたということは、だれでも知っていることです。人間という、説明が付かないほど破壊的で矛盾した存在を作ったのは、神ではなく、進化だということも分かっています。しかし、宗教の教えにすべての人が同じように従えば、世界はより平和に、豊かになるのです。私の考えでは、信仰と科学は、文字通りに受け取れば打ち消しあってしまいますが、哲学的なレベルではそのようなことはありません。神を否定しようとすればするほど、その代わりとなる何かを信じざるを得なくなるのです。キルケゴールは神を反証しようと試みましたが、それは結局神の存在というものに帰っています。カミュも神の不在を証明しようとしましたが、神がいなくなった空白がいかに神聖であるかということを示したに過ぎません。無神論とは、最終的には「絶対の存在が神でないのなら、では何なのか」という質問を無視する試みでしかないのです。

8)どの分野の法律を研究しているのですか?
gosandからの質問

あなたのWebサイトのFAQによれば、現在学位を目指して法律の研究をしているそうですが、それほどの技術的なバックグラウンド(特にコンピュータ・サイエンス)を持ちながら、法律のどの分野を今後研究していかれるのか興味があります。やはり技術関連の分野でしょうか?法律の世界に、技術に精通した人がいるのはよいことだと思います。Linuxを指示する人ならなおさらです。それとも、早く現役を引退するためのお金儲けの手段として、法律を学んでいるのですか?

Moshe:

私が法律の勉強を始めたのは、この歳になって、若いプログラマたちのように早くプログラムを書くことができなくなったからです。まだ20代前半だったときには、プログラミングではだれにも負けなかったのですが、いま、Andrea Arcangeliのような人と並んでいると、(たとえ経験を考慮しても)プログラミングにおいても、若者にはかなわないと感じざるを得ません。高品質の、速いプログラミングは、科学やスキルなどではなく、スポーツです。60歳(まだまだ先の話ですが)になった自分がプログラマを続けているとは思えないので、今のうちに新しい仕事の準備をしておこうと思ったのです。法律は、歳をとってからも続けることのできる仕事です。私が専門にしている法律は、企業の合併・買収に関するもので、これは、法律の深い知識や才能よりも、社会における広いネットワークを問われる分野です。私は、腕利きの法律家ではなくても、普通の法律家になれればいいと思っています。

9)openMosixの単一メモリ空間
Bytenikからの質問

マニュアルでも言及されていますが、現在、データベースや共有メモリにアクセスするプログラムは、openMosixを使うことに何のメリットもありません。

openMosixで今後、すべてのノードに共通のメモリ空間、または、暗黙的なメモリ共有をサポートする予定はありますか?「ネットワークRAM」というのがこれに当たるのでしょうか?

このような技術が効果的に実装されれば、openMosixを使って、ずっと多くの問題に対処できるようになります。

たとえば、データベースのトランザクションを何百ものパーツに分解し、組み合わせてテラバイト単位にしたRAMを使って何百ものopenMosixノードで並列実行させたり、同じデータを共有するプロセスを、自動的に同じノードへ移動させたりすることができたら、すばらしいのですが。

Moshe:

まず、ネットワークRAMというのは、ディスク上の物理スワップ領域ではなく、近くのクラスタ・ノードのRAMにメモリ割り当てやスワップアウトを行えるようにするものです。openMosixでデータベースを実行できるようにするには、分散共有メモリを実装しなければなりません。分散共有メモリは非常に複雑なプロジェクトであるため、正式に実装されるのは、2004年末よりも先の話になりそうです。

10)IBMとHercules
Jay Maynardからの質問

(私は、LinuxとWindowsで実行できるオープンソースのIBMメインフレームのエミュレータ、Herculesの保守に携わっています。)

コラムで2度ほどHerculesを取り上げていただき、どちらも好意的な内容だったので、感謝しています。

さて、ドイツ人のある業界アナリストが繰り返し主張しているところによれば、IBMは、知的財産権(明示されていません)の侵害を理由に、法律面からHerculesを握りつぶそうとしているそうです。単なる著作権の侵害ではないとのことですが、具体的に何なのかは明らかにされていません。

これがオープンソース・コミュニティの耳に入ってしまった今、このような行動を起こすことでIBMにはどのような影響があると思いますか?

Moshe:

Jay、久しぶりですね!さて、私も同じような噂を耳にしたことがあります。IBM関係者がもしこれを読んでいたら、Herculesに敵対すると非常に損をする(Adobeの無知な顧問弁護士が、Sklyarov氏に対して行ったことと大差ありません)ということを伝えたいと思います。Herculesはメインフレームの売り上げにむしろ貢献しているのです。なぜなら、S/390アーキテクチャのLinuxに親しんだユーザは、製品のワークロードを実行するために、最終的にメインフレームを購入するはずだからです。特定のプラットフォームを成功させたいと考えたら、ベンダはそのプラットフォームにまつわるよい噂を広めようとするはずで、それに協力してくれている伝道者の邪魔をするなんてもってのほかです。私はHerculesをよく使っています。事実、約3ヶ月もの間、VM/ESAで実行されているLinux S/390のLinux下でHerculsが動作し続けているという実例があります。openMosixが、自宅の5つのノード・クラスタ間で問題なくロード・バランシングを行ってくれているので、かなりのスピードが得られています。

IBMが、オープンソース・ファミリーの一員として本当にLinuxを認めている(彼らがプロプライエタリなOSの開発に費していた何十億ドルを節約したのですからなおさらです)なら、Herculesと敵対する必要はないはずです。もしHerculesを攻撃するようなことがあれば、IBMはオープンソースのメンバとして取るべき態度を取らず、オープンソースをいいように利用したと判断してよいでしょう。