Reiser4を取り巻くLinuxカーネルの政治力学

どうしてReiser4ファイルシステムはLinuxカーネルに取り込まれていないのか? ここ最近カーネルメーリングリスト上でこうした疑問に関する討論が展開されていたが、それは歯切れの悪い議論でしかなく、カーネル開発とは理性的な意見交換に基づいて実行されると思いこんでいた人々を幻滅させるのに充分なものであった。というのも、いずれの陣営も自分たちは技術的なメリットについて述べているのだと主張はしているのだが、いつしか議論の流れは、既存の慣例や方針を遵守すべきかという問題にすり替わってしまうのである。そして、感情的な対立が露わになるのも常であった。

Reiser4はReiserFS(別名Reiser3)の後継者として位置づけられており、後者はバージョン2.4.1以降のカーネルに搭載されたジャーナルファイルシステムを装備したものだが、これについても採用までには紆余曲折をたどったという経緯がある。いずれも開発を行ったのはNamesysというHans Reiser氏を代表とする企業であり、LinspireおよびDefense Advance Research Projects Agencyがそのスポンサーを務めていた。Namesysの説明によると、Reiser4の処理速度は他のファイルシステムの2倍に達し、ファイルアロケーションの高効率化と、軍用レベルのセキュリティが提供されるという。このファイルシステムについては熱烈なユーザによる支援者団体が形成されており、また正式なカーネルではないものの、Andrew Morton氏による実験的な-mmカーネルソースにはすでに組み込まれている。

Reiser4を取り巻く状況に関しては、ここ数カ月において定期的に論争が巻き起こっている。今回の論争は、Diego Calleja氏が「Why Reiser4 is not in the Linux Kernel」(Linuxカーネルに何故Reiser4は採用されていないのか)というタイトルの文献をKernel Newbies Wikiに投稿したことに端を発している。この文献にはLinus Torvalds氏やAndrew Morton氏は関与しておらず、公式なステートメントではない。Calleja氏自身もこれを「Linuxカーネルのメーリングリストにおける意見のようなもの」としており、つまりは現状における一般的な見解をまとめたものとして、同氏が書き下し他数名が編集に携わったものだということになる。

これに対するReiser氏の反論は、カーネルメーリングリスト上で公開された。そして本来検討すべき課題を脇に追いやった別スレッドが林立し、カーネル開発者によるext4の受け入れ状態はどうなのか、カーネル組み込み前に新機能をディストリビューションで検証しておくべきではないのか、小さいパッチの方が大きなものより速やかに統合されるのか、Reiser氏はReiser4に集中するためReiserFSのバグを無視しているのではないのか、といった横道的な問題に話が移っていったのである。こうした論争では、いずれの陣営も努めて平静な議論を保とうとしたものの、悪意に基づいたコメントや、相手を見下した発言を完全に抑制することはできず、技術的な問題を解決するよりも、意見の食い違いの存在を確認するだけで始終した感がある。

標準的とされる手法と、不文律的な慣習と、既存勢力の身びいき

Calleja氏の見解によると、Reiser4の不採用状態が続いている主たる理由は、テストが不十分であることに起因するという。そしてReiser氏によると、この批判意見は真実を反映していないだけでなく、板挟み状況の論理矛盾を示しているということになる。それというのも、正式採用前の試験段階にある機能は複数存在しており、公式にカーネルに組み込まれるには入念なテストによる検証を受けることが1つの要件となっているからだ。この点、Calleja氏の提案する、適当なディストリビューションにReiser4を試験的に組み込むという試みに対して、Reiser氏は、ディストリビューションを使用する平均的なユーザよりカーネル開発者の方が検証作業には遥かに適していると反論している。

技術的な問題に話を戻すと、Reiser4に関する中心的な論点は、プラグイン用の独自構造を採用しており、カーネルのVirtual File System(VFS)レイヤにすでに存在しているものを採用していないという点だ。Calleja氏は、おそらくは多数派を占めているであろう様々なカーネル開発者を代弁する形で、「作成者側が同意しなくとも、マージされるコードはLinuxの流儀を採用する必要があるはずだ。Linuxカーネル開発はコミュニティ中心の活動であり、最終的な決断を下すのは他ならぬコミュニティなのである。他のカーネル開発者の意見を押さえつける形で、自分の流儀をごり押しすることはできない」と語っている。

事態を複雑にしているのは、Reiser4方式によるファイルシステムが、カーネルのプラグイン化を避けてきた長年の不文律と真っ向からぶつかる形で提唱されたことであって、後者は主としてアーキテクチャの複雑化を抑制すると同時に、GNU General Public License下でのカーネルリリースを回避したプロプライエタリ系ドライバの導入を断念させることも目的としていた。 Torvalds氏の意見によると「ファイルシステムに新機軸を組み込もうとすれば、プラグイン用アーキテクチャの一部だけではなく、Virtual File System(VFS)レイヤそのものも変更をする必要があります。プラグイン用インタフェースについてはすでに必要なものが揃っていますが、それはVFSインタフェースに他ならないのです」ということになる。

同様に、Reiser氏によるReiser4のカーネルへの採用に関する正式な要請が2005年9月に提出された時点で、カーネル用ファイルシステムのメインメンテナの1人であるChristoph Hellwig氏は、これらのソースコードが従来のカーネルにおけるコーディングスタイルを踏襲していない点に言及していた。これが本当であれば、幾人かの開発者が指摘しているように、一般のプログラマに対してコードの開発やメンテナンス時の困難を強いることになり、それを避けるには、Reiser氏およびNamesysは将来的に積極的な開発から手を引かざるを得なくなるはずである。

これらの技術的な批判意見に対するReiser氏側の当初の反応では、同氏率いる開発チームの採用した手法およびその成果に関する全面的な優越性を主張し、同氏のコードに対する批判者側の能力について疑問視する、という態度がしばしば見られた。たとえば、同氏のコーディングスタイルに対する批判意見への反論として、Reiser氏は「私どものカスタマの大部分は、Namesysのコードは他のカーネルコードを遥かに凌駕していると認めております」とする一方で、Reiser4を他のカーネル開発者が評価する問題に関しては、「経験値の低い人間にコードを評価してもらっても実質的な意味はなく、検査対象のコードが現状以上のレベルに向上することはありません」と主張している。何人かの開発者は、このような主張は他の開発者からの協力を得にくくしてReiser4の採用を遅らせる可能性がある点を指摘している。

これがReiser氏側からの唯一の反応であったとすれば、今回の論争は小さな規模で収まっていたかもしれない。Calleja氏も言及しているように、過去においても何人かの開発者はカーネル開発に関する既存の方針や慣例に疑問を抱いていたが、「そうした意見はすべて無駄に終わったか無視された」ということになるからだ。一方でReiser氏は、同氏の経験によると、そこにはより一般的な問題の存在が見て取れると主張している。同氏が示唆するのは、異なる手法を身につけた人間を新規に招き入れることはLinuxのカーネル開発にメリットをもたらすだろうという点だ。「狭い世界に閉じこもっている研究者は、別種の発想により啓発されることはありません」と同氏は語る。さらにReiser氏および同氏の支持者たちは、従来の慣例に固執してきたことが、ファイルシステムの優秀なプログラマをカーネル開発から遠ざけてきたのだ、と主張している。そうした人々の中には、Donald Becker氏、Andre Hedrick氏、David Mazières氏、Jim Mostek氏、Steve Lord氏などが含まれている(カーネル開発から遠ざかる心理的要因や、そうした事態が本当に発生しているかという点に関して、その他の人々は疑問を呈している。たとえばJim Lord氏は、自分が手を引いたことを公式に否定しており、将来的には自身の活動のステップアップを検討しているとしている)。

Reiser氏の主張するその他の問題としては、こうした基準の適用に一貫性がない点である。ここで引き合いに出されているのは、Reiser4に対する抵抗運動と同氏が見なしているものと、ext2およびext3ファイルシステムの後継用として最近アナウンスされたext4を取り巻く状況の迅速な進展との比較だ。「(ext4は)コードの記述、ベンチマーク、テストも何もされていません」とReiser氏は語り、「それなのにカーネルへの取り込みはすでに決定事項とされており、ツリー外にあるパッチのメンテナンスに開発者が労力を割く必要がないようになっています」としている。こうした点に対する反論としては、ext4はカーネルに取り込み済みの技術の後継者にすぎず、携わる開発陣が既存の慣例に従った作業が行えることも実証されている、というものがある。もっともReiser氏にとっては、新規導入に関しては十二分なテストが必要だと唱える人間がいる以上、こうした行為は単なる既存勢力の身びいきに過ぎない、ということになるらしい。

Reiser氏が不快感を露わにしているのは、Reiser4のカーネルへの採用の基準が、そのパフォーマンスの高さではなく、従来の慣行に遵守しているかで判断されている点だ。「他に比べて2倍のパフォーマンスを発揮できるものを提示されたとしましょう」と同氏は語り、「そうすれば、誰でもその有用性を認め、ファイルシステムとしての採用もスムースに運ぶはずです。 私が思うに、ここで問題となっているのは文化的な障害であって、評価の結果の如何にかかわらず、感情的に受け付けないものには賛成票を投じようとはしない、という態度です。 具体的な検証をしなくても何が正しいコードであるかは自分には分かる、という姿勢は反科学的であり、私たちはそうした文化を育成しているのです」としている。

Reiser氏の指摘した心情的な問題は一面の真実を突いているのかもしれないが、同氏が最終的な目標を達成したいのであれば、残されている選択肢は、やはり現状を受け入れる以外にはないだろう。Reiser氏は、今回のような政策面での論争にかかわる一方で、Reiser4のアーキテクチャおよびコーディングスタイルに関する批判意見に対しては、真摯な態度でできるだけ多くの回答をするべく努めており、実際、同氏を批判する側の人間ですら、Reiser4のカーネルへの導入は時間の問題であろうとしている。

プライドと感情

今のところ最終的な導入決定は、感情的な対立により遅延しているよう見受けられる。Calleja氏はこうした見解を同氏のFAQで否定しており、そのような見方は“ショッキング”であり、純粋に技術的なメリットの観点から遅延しているだけだとしている。不幸なことに、同氏は衝動的発言を抑えることが不得手のようで、「Hans Reiser氏の態度は礼を失している」とか「カーネルコミュニティの人々と対処するにあたってHansは適任者ではない」という発言は、対立意見を反駁するよりも裏付ける方向にむしろ寄与しているのではなかろうか。

1つ確実に言えることは、過去の経緯を知る人間にとって、カーネル開発に感情的な判断が介入する、というのは別段驚くべきことではないということだ。たとえば、すでに6年前の時点でJeff Garzik氏によるカーネル開発ガイドには、パッチの採用が見送られる理由の1つとして、「他の開発者から嫌われている」というものが挙げられている。おそらくこれはジョークとしての成分も含んでいるのだろうが、アーカイブを覗いてみれば、多量の真実も含んでいることが分かるだろう。

Reiser氏自身も、清廉潔白だとは言い難い。何かのポスターに書かれていたように、Reiser氏には、外向的配慮に欠けた行動や攻撃的発言に訴える傾向が見受けられる。たとえば同氏は、Al Viro氏とChristoph Hellwig氏とを指して「問題の90%」と発言したことがある。この点に関するLinus Torvalds氏のコメントでは、ViroおよびHellwigの両氏は「取っつきにくい行動に出ることもある」人間だとしており、こうした対立が生じる責任をReiser氏の一身に負わせるのは無理があるが、自分自身は彼らを忌避する気はない、ともしている。

カーネル開発とは大きな責任が付随する作業であり、そうした性質上、関係者の感情的な要因が介在する事態は避けられない。たとえばReiser氏その人をとってみても、同氏は試行錯誤も交えながら、長年を費やしてファイルシステムの開発を進めてきたはずだ。当然、同氏はその成果に巨大な自負を抱いているだろう。実際に同氏は「Reiser4のデザインには、幸運によるところが多々あります」と発言している。「私のプログラムデザイン人生においてこれだけの幸運を授かることは、おそらく二度とは訪れないでしょう」。それと同時に同氏が感じている不安は、自分が達成した技術的な優越性は永続するものではないという点で、「15分でいいから、私の技術的な成果を世の中で活用してもらいたいですね」と訴えている。そうした不安を抱いているのであれば、同氏が強引とも取れる主張に出る理由も、許されるという訳ではないが、理解できないこともない。

そもそもの議論に話を戻すと、現状でいずれの陣営も冷静な態度を保つ方向に進んでいるよう見受けられる。おそらくは、論争に疲れたのであろう。問題は、こうした活動に一貫性が無いことと、すでに時機を逸している可能性が非常に高いことである。

まとめ

Reiser4を取り巻く状況に関する疑問は、どうがんばっても簡単に回答できる代物ではない。だが、可能な限り簡潔性と中立性を保った説明を試みるならば、現行のLinuxカーネルにReiser4が採用されていない理由としては、より入念なテストが求められていることおよび、既存カーネルの構造にReiser4を統合することが本質的に困難であることが挙げられ、そこに伝統性と感情的な対立が介在することで一層の複雑化を遂げていると言えるだろう。こうした問題点は今回の論争に特有なものかもしれないが、あるいはカーネル開発で使われてきた慣行に内在する根元的な欠陥を露呈しているのかもしれない。いずれにせよ、それは無視し得ない要因となっている。

はっきり言えることは、Reiser4の採用をめぐる論争によって、カーネル開発者が至福の時間を感じているはずがないということである。またこうした話題に疎い人々が何の予備知識も無しにこの論争に出くわした場合、自分は本当にLinuxカーネルメーリングリストにアクセスしているのか、あるいはSlashdotを見つけたばかりで騒いでいる幼稚なクラッカーの団体に遭遇したのだろうか、という疑いを抱いたとしても、それは無理からぬことだろう。

Bruce Byfieldは、コースデザイナ兼インストラクタ。またコンピュータジャーナリストとしても活躍しており、NewsForge、Linux.com、IT Manager’s Journalに定期的に寄稿している。

NewsForge.com 原文