2012-03-22

汚いものは隠して解決?

Linuxについて調べていると、どうも引っかかることがある。それは、Linuxがどうも、汚いものは隠して解決するという文化を持っていることだ。

たとえばXだ。聞きかじったところによると、X11は相当に汚いらしい。使いづらいし、今となっては不必要な古びた機能が多数存在する。これは、ほとんどの文章にそう書いてあるし、また実際に人にたずねても、誰一人としてX11の醜悪を否定したりしない。XFree86からフォークしたX.Orgなどは、Xを直接使うなと公式に宣言している。GTK+とかQtなどの、汚いものを隠した上のレイヤーを使えと推奨している。

X.Org Wiki - Documentation

では、何故未だにX11が使い続けられているのか。もし、ある標準のAPIの設計が悪いとしたら、より優れた標準のAPIを設計すべきではないのか。なぜ悪い標準のAPIをラップした非標準のAPIを多数生み出すのか。これが理解できない。

IMEもそうだ。聞きかじった知識によると、XIMは非常に汚いそうである。しかし、なぜか明白で根本的な解決方法である、XIMの後継APIの再設計は行われない。XIMをラップした上でさらに機能を付け加えた、iBusとかSCIMとかuimが、雨後の筍のようにぽこぽこ登場している。

X11は非常に複雑なシステムだから、一から設計して実装するリソースがない、などという理由は信じない。GTK+やQtでは、結局ほとんどの機能は自前で実装している。開発リソースは十分にあるはずだ。互換性の問題とも思われない。今やほとんどのソフトウェアは、Xを直接使わずに、その上のレイヤーのライブラリを使っているのだから、バックエンドを変更するのは、比較的軽い変更と、ソフトウェアの再コンパイルで済むはずである。ソースコードを公開するという文化のあるLinuxでは、そのような破壊的な変更も、他のプラットフォームに比べて、比較的敷居が低いはずである。(もちろん、楽ではないだろうが)

なぜこうなってしまうのだろうか。どうもLinuxの歴史をみていると、ひとつの優れた標準のライブラリを開発するより、多数の互換性のないライブラリが独自に立ち上がっていることが多い。しかも、最終的に一つの優れたライブラリに統一されるのではなく、複数の主要なライブラリが生き残っている。

と、こう身の程知らずに偉そうなことを書くと、「じゃあお前が書けよ」と言われるかもしれない。しかし、仮に書いたところで、もう一つ規格が増えるだけだ。

状況:競合する規格が14個ある。
甲:なんやて14個? アホくさ。ワシらで誰でも使えるめっちゃえー規格作って、他の奴らなんか蹴散らしてやろうやないか
乙:そうや、そうや
状況:競合する規格が15個ある。

xkcd: Standards

といいつつも、Waylandには少し期待している。

3 comments:

Anonymous said...

X固有の話をLinux文化の問題として論じるのは、Firefox固有の話をWindows文化の問題として論じるくらい滅茶苦茶なのでは。

江添亮 said...

LinuxというよりUNIX文化というべきでしたね。

Anonymous said...

Win32 APIがいまだに使われていて、.NETやらWinRTやらで(MS公式の説明ではWinRTはWin32のラッパではないことになってるけど)ラップしているのと同じことでしょう。