・IPCがらみのメモ
もともとUNIXの世界では、それぞれのプロセスは独立していて他のプロセスのことなど知らずに、 与えられた入力を標準出力に書き出し、それをパイプでつなぐことでプロセス間の通信を行なっていた。
その次の、サーバ・クライアントモデルの場合、サーバとクライアントはそれぞれ独立した世界で動作しながら、 相互に情報をやりとりしないといけないので、名前付きパイプを使ったり、ソケットを使ったりしていた。
さらに時代が進み、GUI環境の世界になってくると、1対1のサーバ・クライアントモデルではやっていけなくなったので、 それぞれのデスクトップ環境ごとに、多対多のプロセス間でデータをやりとりする仕組みを考えることになった。
GNOMEは、CORBA(Common Object Request Broker Architecture)というOMG(Object Manegement Group)という 標準化団体が定めた汎用的なオブジェクト間通信モデルを採用し、ORbit2とBonoboというソフトウェアで実装していた。
一方、KDEはX11上のICE(Inter Client-communication)モデルの上に、DCOP(Desktop COmmunication Protocol)という仕組みを作って、 それをアプリケーション間の通信に利用していた。
こういうフリーソフトウェア間のデザインの齟齬を調整するために, freedesktop.org が、Unix系のOS上で汎用的に使える機能をあれこれ提案、実装していて、 そこで提唱されたのがD-Busというメカニズム。
D-BusはDCOPのデザインを参考に設計されているそうだけど、システムバスとセッションバスという2種類のバスを用意して、 システム全体に影響する情報と、特定のアプリ間の連携に関する情報を分離できるようになっている。
もともとDCOPを用いていたKDEは、D-Busの考え方と親和性が高いので、KDE4では全面的にD-Busを採用するようになっている。 GNOME3はまだ調べていないのだけど、かってのORbit2/BonoboからD-Busを使った実装に移行しているのだろうか?