[clue-talk] Why X? [long, with provocative questions]

Matt Gushee mgushee at havenrock.com
Mon Apr 18 21:31:03 MDT 2005


Okay, I've been sitting on this for a long time ... just can't hold back 
any longer. BTW, the overarching theme here is "Linux on the desktop." 
And I'm probably beating a dead horse. So if neither of those things 
interest you, feel free to skip the rest of this message.

Just for a little bit of background ... My interest in computers has 
always revolved around end-user apps and environments. I started using 
Linux back in about '96 for what I suppose were pretty unusual reasons 
in those days: partly because I had come to hate Microsoft products, but 
also because I wanted to be able to work with Japanese text without 
using a Japanese OS, which was very hard to do with Windows then (turned 
out it was pretty damn hard with Linux, too, but at least most of what I 
wanted to do was feasible). I liked the freedom of choice and the Free 
Software ideology, but never cared all that much about the deep 
technical stuff.

But anyway: back in those days, one of the major advantages of Linux was 
performance. Even with (what was then considered) a full-blown GUI, a 
Linux box could run rings around Windows, OS/2, or a Mac. True, you'd 
have a butt-ugly desktop, but among all the little daily struggles of an 
early Linux adopter, that was no big deal. Oh, and you could stick Linux 
on an old machine and have it run very nicely. No more having to buy new 
hardware whenever Microsoft decided you needed new software.

Fast-forward to late 2004. Got my wife a new computer for her birthday. 
Or, well, actually the monitor was a nice new one, the computer was 
used--but still newer and faster than what I use every day. And I had 
this crazy idea that maybe I could finally get her to switch to Linux. 
After all, GNOME coming along nicely, good tech support available right 
in the house, set the default language to Japanese, even install some 
very nice Japanese fonts that I have, yes, yes, she'll like 
that--whereupon I got my rude awakening: today's beautiful, 
state-of-the-art Linux desktop is ... not just slow, but appallingly slow.

Obviously this is a problem for Linux on the desktop. Sure, you can buy 
the very latest hardware, but there goes one of the major arguments for 
using Linux in the first place.

So why is the desktop so slow? Perhaps part of the reason is poor code 
in GNOME itself; maybe part of it is video card vendors not cooperating 
with open source developers--though I gather that is much less of a 
problem than it used to be. But, based on various things I've seen and 
heard over the years, I can't help thinking that a significant part of 
the problem is the venerable X Window System--in particular, the fact 
that it is a client-server system.

Now, my take on X (noting that I have only superficial knowledge of the 
technical issues it addresses) is that the architecture made a lot of 
sense at the time it was developed. In those days, CPUs, memory, and 
software licenses were all expensive. And I guess, too, the price 
structure of licenses encouraged multi-user, server-based installations.

Nowadays, of course, things are completely different. The average 
desktop PC is 10 times (or more?) as powerful as a Unix server of the 
80s. Mainstream software applications are relatively cheap, or even 
free. So we install the apps right on everybody's desktop, and now 
people can word-process or data-enter a half-second delay for every 
character they type.

But, on X, you still have client-server overhead. Apps don't run as fast 
as they could, and if you have a "modern" desktop, they can be downright 
sluggish. And then there are annoying little side-effects like not being 
able to run GUI configuration utilities as root without "xhost+ localhost."

I'm sure I'm not the first person to notice this. I can recall reading 
newsgroup threads back in the 90s where most people seemed to agree that 
"X sucks, and we need to create something better." But it hasn't happened.

Now, it's not too surprising that few people have tried to replace X, 
and so far they've all failed--obviously the technical challenges are 
huge. But what I'm really wondering about, and this is the question I 
want to put to you all, is why everyone thinks that a client-server 
windowing system is a good idea. At least that's how it seems, given 
that when a group of open source people did put together a serious 
effort to replace X (Berlin/Fresco), it was also client-server-based.

Maybe I'm ignorant, but I don't get it. Of course, I've heard of all 
kinds of cool ways you can use X's networking capabilities. But most of 
those cool uses, as far as I can see, are utterly irrelevant to typical 
computer users in typical environments. Apparently, too, the fact that 
you access X through a well-defined protocol is seen as an advantage. 
Makes it easier to develop X clients in different languages, I suppose. 
But in practice, every GUI toolkit or X application of any importance is 
built on top of C or C++ libraries anyway. Given that reality, from a 
developer's perspective, why is a client-server protocol any better than 
a library API?

So why not build a windowing system that accesses the hardware directly? 
Or maybe through a hardware abstraction layer--anyway, get rid of the 
networking part. It would make for a more manageable project, and 
probably provide much better performance. It seems obvious to me, yet I 
can't recall ever hearing of developers being interested in such an 
approach.

So, opinions, please (without flames, I hope). Why does X continue to be 
the only game in town? Has the community decided that it's really a 
pretty good system after all? Or is it just too much work to build 
something different? If so, weren't projects like GNOME, KDE, and ALSA 
too much work too?

   [*] I mean that, of course, in the traditional sense: someone who
       likes to play around with code, *not* a breaker-inner or
       messer-upper of other people's systems.


Curmudgeonly-ly yours,
Matt Gushee



More information about the clue-talk mailing list