[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