標準Cライブラリがフォーク!?

Debianがglibcの派生版「eglibc」を採用へ

Debian GNU/Linuxで、C言語の標準ライブラリである「GNU C Library」（glibc）が、その派生版である「Embedded GLIBC」（eglibc）に置き換わる可能性が出てきた。現在はまだDebianの開発版に入る前という段階だが、もし実現すれば、Debian系のディストリビューションであるUbuntuやKnoppix、Xandrosでも置き換わる可能性が高い。本家ともいえるFree Software FoundationのGNU版のライブラリをさしおいて、派生版がDebianに入る可能性が高まったことで、ちょっとした波紋が広がっている。eglibcプロジェクトではglibcとの高い互換性を目標に掲げているものの、glibcは、Linux上のサーバソフトウェアを含む多くのアプリケーションが依存しているライブラリだけに、今後の影響範囲が見えづらい。

Debianプロジェクトの開発メンバーで、Debian Franceのボードメンバーでもあるオレリアン・ジャルノ（Aurelien JARNO）氏が5月5日のブログエントリで明らかにした。

eglibcはglibcを置き換える意図で始められたプロジェクトではなく、公式サイトのFAQでも「フォークするつもりはないと」述べられている。eglibcはglibcと最大限のAPI、ABI互換性を保ちながらリリースされる補完的なソフトウェアパッケージで、glibcの対応が後手に回りがちな組み込み向けのニーズに対応したライブラリだという。ジャルノ氏は、eglibcの特徴として、

ARMなど組み込み向けのサポート強化

bash以外のシェルのサポート。glibcはbashしかサポートせず、組み込みで使われるBusyBoxで問題が起こっても対応してくれない

バイナリサイズを小さくすることを優先した「-Os」オプションを使ったビルドをサポート

ビルド時に不要なコンポーネントを指定可能

などを挙げている。ARM向けに最適なアセンブリコードを生成したり、ARMプラットフォーム固有のバグを修正するといったことをglibcでは熱心に進めてこなかったことから、そうしたパッチをニーズに応じて適用したのがeglibcと言えそうだ。

なぜ、パッチを本家のglibcに適用しないのか？ これは、特定のglibc開発メンバーのコミュニケーション作法を巡る問題のようだ。

ジャルノ氏は、glibcプロジェクトの開発コミュニティに対して批判的で、ブログエントリの中で実例として過去にリジェクトされたバグ修正要求をいくつかリンクしている。例えば、ARM9上で発現したバグ報告に対して、glibc開発者の1人で米レッドハットに勤務するウルリッヒ・ドレッパー（Ulrich Drepper）氏は、「このクソなアーキテクチャ以外ではちゃんと動いてるよ。ARMのためだけにパフォーマンスを犠牲にするなんてことはしない」と、組み込み系の開発者にとっては信じられないような、にべもない反応をしている。ドレッパー氏は口さがないことでは知られた人のようで、文字列の中身をランダムに入れ替えるというマイナーな関数に関するバグ報告に対しては、「この関数はジョークなんだよ。何かほかにマシなことやれば？」と、これもまた信じられないような冷たい切り返しで切り捨てている。

最も議論を呼んだホストネームとIPアドレスの名前解決をする関数についてのバグ報告では、2007年の夏から現在にいたるまで延々と2年近くにわたってコメントツリーが伸びている。この間、同じバグ報告が繰り返され、そのたびにドレッパー氏は「バグなんてない」、「このバグ報告を再オープンするのはやめろ」と反論。説明を求めた人に対しては、自分に給料を払ってるわけでもないのに命令するなと言い放っている。

こうしたドレッパー氏の不遜な応対に対して賛否両論が聞こえてくる（Slashdotのスレッド、OSNewsのコメントスレッド、LWN.netのコメントスレッド）。目を引くのは、ドレッパー氏は口は悪いが技術力はきわめて高いとする意見が多いこと。また、glibcがサポートする多くのプラットフォームのバランスを考えると、ドレッパー氏が技術的に正論を述べていることが多いとする意見などだ。

また、パッチの受け入れ方として、文句を言いながらもとにかく適用だけはすることがあるという指摘もある。jordanbを名乗るユーザーは、LWN.netのコメント欄で、GNU/Emacsの開発者だったリチャード・M・ストールマン氏との過去のやり取りを披露。Emacsで動くテトリスにあった、ズルができるバグのパッチを送ったところ、ストールマン氏は「ソリティアでズルをするって、いったい誰に対してのズルなんだ？」と返信しつつ、ともかくパッチは適用したという。ドレッパー氏も悪態をつきながらもパッチ適用や修正は必要ならやることがあるという。

結局のところ、プロジェクト名の違いが示すようにglibcからeglibcが派生して今後フォークしていく可能性すら出てきているのは、ARMプラットフォーム対応への取り組みに不満を持っていた人々の活動が認められ、より広く使われるDebian GNU/Linuxでの採用という話が持ち上がってきたということだろう。また、glibcのコア開発メンバーのコミュニケーション作法には問題があったのだという意見は強く、eglibcは技術的な派生物であるばかりでなく、プロジェクト運営という面からも、glibc開発コミュニティに対するアンチテーゼという側面も含んでいるといえそうだ。eglibcのミッション定義には、開発者の間で協力やコミュニケーション、礼儀正しさ、敬意といったものを促すようにと書かれている。これは、当てこすりとまでは言わないまでも、glibc開発コミュニティに対するメッセージでもあるかもしれない。

（＠IT 西村賢） 情報をお寄せください：