ひところ Linuxカーネルの開発で使用されていた BitKeeper というプロプライエタリなバージョン管理システムの諸問題でネットニュースをにぎわせていたのは記憶に新しいが、現在は Linuxカーネル開発のために新しく開発された git というバージョン管理システムが使われているそうだ。
OSC2005-Fall の「YLUG出張カーネル読書会」で git の現状というのを聞いたがいろいろ感想を持ったので少し書いてみることにする。
– 大いなるアマチュアイズム、あるいはカーネルハッカーの憂鬱
よく言えばハッカー魂ということなのだろうけど、git は日々進化していてやたらと仕様が変更されいるらしい。仕様が変更されれば古いバージョンが動かなくなったり、サポートツールの互換性も問題になってくる。
「YLUG出張カーネル読書会」で発表した人が使っているツールもそれで新しいバージョンには対応できていないらしい。しかも作者がバケーションで現在1ヶ月ぐらいはそのツールの開発はとまるそうだ(なんとも欧米人らしい話だ)。今後作者がむやみやたらと変わる git の仕様に対して継続してサポートしていくモチベーションを維持できるのか。。。という状態らしい。
Linuxカーネルぐらい大きなシステムの開発でそれはないよな。よっぽどモチベーションがないとつきあいきれない。商用プログラミングではまず考えられない話(*1)だけど、IBM など Linux にコミットしている大企業のエンジニアはどう思っているのか聞いてみたいところである。
*1) 企業の大プロジェクトだったらデスマーチが鳴り響いているよな(^^;
– 分散・集権体制、あるいは Linux帝国
ネットニュースを読んでいたときはなんで既存のバージョン管理システム(CVS や Subversion)ではだめなのだろうと思っていたのだけど git の仕組みや Linuxカーネルでの使い方を聞いてなんとなくわかったような気がする。
ようは Linuxカーネルの開発体制は Linus を頂点とするピラミッド構造の分散・集権体制だということである。逆に CVS や Subversion は同じような権限の複数人が管理する比較的フラットな管理体制である。
仮に CVS や Subversion を古代ローマの元老院を中心とする寡頭体制(共和制)だとするなら、git(Linuxカーネル開発)は Linus を第一人者(プリンチエプス)とする分散・集権体制(帝政)といったところか。古代ローマにみるように小さなプロジェクトでは寡頭体制でもなんとかなるが、Linuxカーネルぐらいの大きなプロジェクトでは強いリーダーシップが必要だということだろう。
塩野七生の「ローマ人の物語」を読んでいることもありふとそんなことを考えてみた。
Tags: Computer