Linked by Thom Holwerda on Sat 15th Aug 2009 17:55 UTC
X11, Window Managers Over the past couple of months, and especially over the past couple of weeks, I've been working very hard to write and complete my thesis. I performed all the work on Windows 7, but now that the thesis is finally done, submitted, and accepted, I installed Ubuntu - and immediately I was reminded of why I do not do any serious work on Linux: the train wreck that is X.org.
Permalink for comment 378948
To read all comments associated with this story, please click here.
RE[4]: The best thing
by ba1l on Mon 17th Aug 2009 02:20 UTC in reply to "RE[3]: The best thing"
ba1l
Member since:
2007-09-08

Today, that model is still at the heart of X and in my personal opinion is one hundred percent useless in a desktop OS.

Windows' and OS X's UI stacks have never, ever had that ability, because they never needed it.


Wrong on both counts.

First of all, the client / server model used by X is almost (but not quite) entirely invisible when you're using a local server. No networking is involved. Communications between the client and server are handled through unix sockets and shared memory. Furthermore, when using OpenGL on a local machine, the X server is used only to set up the OpenGL context - the application communicates directly with the video drivers.

There's only one problem with X, as it stands, for local connections. Oddly enough, it's a problem that's even worse for remote connections - latency. Specifically, there are a lot of operations (thanks largely to xlib) that are synchronous. An application has to send a message to the server, and then wait for a response. XCB (a replacement for xlib) pretty much fixes that, but it isn't supported by any UI toolkit just yet, and proprietary video drivers (nVidia and AMD) don't support OpenGL using XCB.

So that's not a fundamental design flaw - it's an implementation problem. And one that can be fixed. The latency problem actually has been fixed for remote connections - NX acts as a proxy, and handles some of the messages directly, rather than waiting for the remote server to respond.

The architecture used by Windows' windowing system is very similar to X. In Vista, the windowing system is just another process, like any other. Applications communicate with that process using local IPC and shared memory. Direct3D and OpenGL are handled the same way they are in X, except there's no support at all for accelerated rendering over a network link. RDP is implemented by having a different windowing server, which acts like NX - it sends some of the messages over the network link, and handles some others itself. Windows XP works the same way, except the window server resides in the kernel instead of a user process.

RDP is a fundamental, inseparable part of the Windows windowing system, so you can't really argue that X is inherently worse than Windows because network transparency is a fundamental part of X.

As for OS X... It's windowing system is implemented much like a local-only X server. It's still a separate process, and applications use sockets and shared memory to talk to it. It doesn't have a separate network protocol, so it doesn't have a fallback for when shared memory isn't available, but otherwise it's very similar to X.

The only real difference between Windows / OS X and X11 is that, in X11, the window manager is a client process that talks to the server, while the window manager equivalent in Windows and OS X is built directly into the windowing system.

Other than that, it's all a matter of implementation.

Now, the implementation of X on Linux may suck, but that doesn't mean it needs to be thrown away. Especially considering that, for any replacement to be a success, it would have to implement most of the X protocol anyway. If it didn't, there wouldn't be any applications that could run on it, so nobody would use it.

Reply Parent Bookmark Score: 6