Linux Daily Topics

Asahi Linuxのリードデベロッパがアップストリームメンテナーを辞任⁠背景に“C vs. Rust”対立に端を発したブリゲーディング

僕はもう、カーネル開発プロセスやコミュニティ管理アプローチになんの信頼も置いていない(I no longer have any faith left in the kernel development process or community management approach.)―2020年のプロジェクトローンチ以来、Asahi Linuxのリードデベロッパを務めてきたHector Martinは2月7日、Appleシリコン(ARM)コードのアップストリームカーネルメンテナーを辞任する意向をLinux開発者メーリングリストで表明した。突然の辞任の背景には、Cベースの古参メンテナーとRustコード推進派の対立とMartin自身によるソーシャルメディアを使った炎上狙いがある。

MartinはすでにLinus Torvaldsからメンテナーを外されており、今後、メインラインにおけるAppleシリコンコードのメンテナンスはMartinと共同メンテナーを務めてきたSteve Peterと、Asahi LinuxプロジェクトのメンバーであるJanne Grunauがともに担当することになる。なおMartinはメインラインのメンテナーは辞めたものの、Ashahi Linuxでの貢献は続けるようだ。

Martinが行った「ブリゲーディング」とは?

Linuxカーネル開発コミュニティに禍根を残すようなメッセージを残し、メンテナーとしての責任を放り出す格好で突然辞任したMartinだが、その直接の原因はAshahi LinuxやAppleシリコンコードではなく、メインラインカーネルへのRustコード統合の進捗に関する自身のいらだち(MartinはRustコード推進派)をMastodonなどのソーシャルメディア上でぶつけたことによる。それも感情的で突発的な行為というよりも、コミュニティ内での古参メンテナーとRust推進派(Rust for Linux / R4L)の議論をMastodonやReddit上で大げさに書きたて、内情に詳しくない一般人に「古参メンテナーはR4Lの活動を妨害している」というイメージを植え付けようとしていたようだ。

こうした特定の個人やグループに対してソーシャルメディア上で攻撃する行為は「ブリゲーディング(brigading⁠⁠」と呼ばれるが、LKMLでオープンな議論を重ねてきたLinuxカーネル開発コミュニティにとっては当然ながらあまり好ましいアプローチではない。LKMLの複数のメンバーからブリゲーディングを咎められたMartinは2月6日、⁠もううんざりだ(I'm tired.⁠⁠」としてCコード守旧派の古参メンテナーの⁠妨害⁠行為やパッチレビューシステムの煩雑さに対する不満を書き連ね、最後に「ソーシャルメディアで非難しても効果がないというなら、何をやれば効果があるのか教えてほしい。こっちにはもうアイデアがない」挑戦的な内容を投稿している

このMartinの投稿に対し、冷静に反応したのがLinusである。以下、Linuxの返答の全文を載せておく。

How about you accept the fact that maybe the problem is you. You think you know better. But the current process works. It has problems, but problems are a fact of life. There is no perfect. However, I will say that the social media brigading just makes me not want to have anything at all to do with your approach. Because if we have issues in the kernel development model, then social media sure as hell isn't the solution. The same way it sure as hell wasn't the solution to politics. Technical patches and discussions matter. Social media brigading - no than\k you.

まずは問題は自分にあるかもしれないという事実を受け入れてみてはどうかな。きみはきっと、自分のほうがよくわかっている!と思っているだろうけど、いまの(カーネル開発コミュニティの)プロセスはうまくいっている。もちろん問題はあるが、問題が起こることは人生の現実だ。完璧なものなど存在しない。しかしきみが行ったソーシャルメディアのブリゲーディングは「そのアプローチにはまったくもって関わりたくない」と僕に思わせるものだ。カーネル開発に問題があるとしても、ソーシャルメディアは絶対に解決策ではない。⁠ソーシャルメディアが)政治の解決策ではなかったのと同じことだ。技術的なパッチと議論はもちろん重要だ。だがソーシャルメディアによるブリゲーディングは…ノーサンキューだ。

Martinはこの後、メンテナーを辞任することになるのだが、⁠僕はもう、カーネル開発プロセスやコミュニティ管理アプローチになんの信頼も置いていない」という文面を見る限り、Linusの比較的穏やかな叱責はあまりMartinには刺さらなかったのかもしれない。

「クロスランゲージは“ガン”」発言も

Martinのブリゲーディングはコミュニティメンバーの多くが「褒められる行為ではない」としているが、その原因となったRustコード推進派とCコード守旧派による議論はなかなか終着点が見えない状況にある。

今回、Martinがブリゲーディングに至った最初のきっかけは、1月8日、カーネルメンテナーのひとりであるChristoph Hellwigがあるパッチの提案を拒否したことにある。提案されたパッチはRustで書かれたデバイスドライバがカーネルのコアDMA API(Cベース)を呼び出せるようにするもので、DMAコヒーレントメモリの割り当てを簡素化し、安全かつ効率的にRustドライバを開発できるようにするための抽象化レイヤの提供を目的としている。

しかしHellwigは「Rustコードをkernel/dmaに入れるのはやめてくれ(No rust code in kernel/dma, please.⁠⁠」とこのパッチの受け入れを拒否、これに対しDanilo Krummrich(Red Hat所属)などRust for LinuxプロジェクトのメンバーはHellwigに代替案を迫るが、HellwigはDMA APIへのインタフェースはgrep可能で保守しやすいように、奇妙なバインディングではなく読み取り可能なCコードのままにしておいてきみたちにとってのイマドキのキラキラ言語(Rust)を私に押し付けないでほしい。複数言語でプロジェクトを進めるのは面倒な作業だけど、私はそれをやる気はない。アセンブリやRustなどC以外の言語を使いたいなら、Cインタフェースを書いてインピーダンスの不一致を自分で処理するべきと応酬し、DMA Rust抽象化に関わるつもりがない意思を明確にしている。

Krummrichらは「誰もあなた(Hellwig)にRustコードのメンテナンスを頼んだりしない。別のメンテナーがDMA Rust抽象化を担当すればいいだけ」と主張したが、Hellwigは「別のメンテナーなど必要ない」としたうえで、こう続けている

(CのほかにRustでも保守するという)クロスランゲージコードベースをゴリ押ししてLinuxをメンテ不可能な状態にしたいのだったら、きみたちのドライバでそれ(クロスコード化)を実行してくれ。そうすればそのガン(cancer)をコアサブシステムに蔓延させないようにできるだろう

Linuxで"ガン(cancer)"と聞けば、かのスティーブ・バルマーが2001年に言い放った「Linuxはガン(Linux is a cancer⁠⁠」発言を思い出す向きも多いだろう。はたしてHellwigがわざとその言葉を選んだのかどうかはわからないが、これまで一連のやり取りに加わっていなかったMartinはこの発言に触発されてか議論に参戦、2月4日の投稿ではRust関係者に向かって「あとはLinusが気に入るか気に入らないかだけだから、Christoph(Hellwig)の妨害なんか無視しよう。やつらはこちらがあきらめるまで士気をくじこうと妨害してくるけど、たとえ老害メンテナー(old entrenched maintainers)がどんなに邪魔してこようとも、世界はメモリセーフ言語に向かって進んでいる」と主張、さらにHellwigの"ガン"発言について「⁠⁠Linuxカーネル開発の)CoC(Code of Conduct)の措置の対象となるに十分と思っている。まあ、実際には処罰なんてされないだろうけど」と強く非難している。

Martinの言動は明らかに行き過ぎではあるが、Rustコード推進派からみれば統合のスピードは「氷河のように遅く」⁠Martin⁠⁠、一方で長年にわたってCコードベースで保守してきたメンテナーの中には、Rustが入り込んでくることを好まない人がいるのも当然だろう。Linusもその両者が対立している事実を認めており、Rust統合がすべてのカーネル開発者から歓迎されているわけではない事実をカンファレンスなどで語っている。3月末にリリースが予定されているLinux 6.14ではRustコードの統合が大幅に進むとされているが、カーネル全体から見ればまだ始まりに過ぎない。RustとCの統合に関する議論に結論が出るまでにはまだ時間がかかりそうだ。

おすすめ記事

記事・ニュース一覧