3 ms·
It's interesting that you mention X11. The Wayland developers recognised that X11 had not only become fat, which isn't inherently problematic, but that almost
by nly 12y ago
It's interesting that you mention X11. The Wayland developers recognised that X11 had not only become fat, which isn't inherently problematic, but that almost all of the old fat had become dead weight. X11 essentially became a horrific over-engineered, vaguely graphics related, IPC mechanism... just like DBus. Wayland is an RPC protocol.
I'm kind of hoping IPC mechanisms similar to those used by Wayland, which fell out of all the work on XCB (a clean X11 equivalent binary protocol for Xorg that, iirc libX11 is now built on top of), will ultimately be adopted by other projects. Interestingly they implemented RPC dispatch using libffi, which is pretty elegant.
The Wayland FAQ, in fact, has a rationale for avoiding DBus[0]. The core Wayland framework certainly hasn't suffered in terms of bloat or complexity by avoiding it. Go look at the code[1], and compare it to DBus[2]. Admittedly the topologies are different, but as far as I'm aware nothing prevents Wayland clients from establishing their own P2P communications.
[0] http://wayland.freedesktop.org/faq.html#heading_toc_j_10 http://wayland.freedesktop.org/faq.html#heading_toc_j_10
[1] http://cgit.freedesktop.org/wayland/wayland/tree/src http://cgit.freedesktop.org/wayland/wayland/tree/src
[2] http://cgit.freedesktop.org/dbus/dbus/tree/dbus http://cgit.freedesktop.org/dbus/dbus/tree/dbus
- digi_owl 12y agoIn large part because programmers started to assume they could talk directly to the hardware, rather than the hardware being at the other end of some random network connection. This then makes a large part of X11 redundant, as it is there to make things network transparent.
- panzi 12y ago> XCB (a clean X11 equivalent binary protocol for Xorg that, iirc libX11 is now built on top of) I thought XCB implements the same protocol but provides another (more modern) API. Am I mistaken? I never wrote code using libx11 or libxcb. Well, not 100% true, I forked and improved a tiny project that touches X11 at two small points. Doesn't really count. I don't get any understanding of X11/XCB from that: https://github.com/panzi/qjoypad/blob/88ee6c1ed82999febc64b965d4bcf27432f221e0/src/event.cpp#L5 https://github.com/panzi/qjoypad/blob/88ee6c1ed82999febc64b9... https://github.com/panzi/qjoypad/blob/88ee6c1ed82999febc64b965d4bcf27432f221e0/src/getkey.cpp#L47 https://github.com/panzi/qjoypad/blob/88ee6c1ed82999febc64b9...
- dllthomas 12y agoThis is basically true. It's the same packets on the wire - the biggest difference is that for most packets libx11 waits for a response while xcb returns a token representing a promise.