Why is X networked?

Started by
13 comments, last by frob 18 years, 10 months ago
I've seen various arguments for and against X. Some say the greatest feature of X is that it's networked while others argue that this makes it slow. For a long time I've wondered why should networking be part of a core graphics system. Operating windows or desktops remotely can be done (better) with separate software like VNC. Why is networking considered an advantage instead of bloat? The only advantage that I can see X having compared to e.g. Windows is running multiple instances at once and selecting the instance on which the client is to appear, but this could be done without networking as well.
Advertisement
Here is the ways I've seen X used that I don't think VNC would be very good for.

At school there are labs filled with thin clients. Using these thin clients you can run programs on any of a number of the Solaris servers and all the windows appear within the same window manager. I've never used VNC, but I think it's more for one computer controlling a single other computer? Plus the thin clients are (hopefully) cheaper and much simpiler than the client you would need to run something like VNC.

X windows is still useful if you're using a fully fledged computer. For example, I was asking a TA a question about a problem in my graphics assignment and he turned to his linux pc and asked me to show him. He ssh-ed to one of the linux pcs in another lab that I had been working in, asked me to login and we could run my program. It didn't help me find my problem at the time, but I still thought it was pretty cool.


Yes, I've used the networking feature too but couldn't it all be implemented as a separate library? As long as the graphics system had a way to select a screen (like X by default has the DISPLAY env variable), the graphics drawn by the client could be either shown on the screen or transmitted where needed using whatever method (compression level) is best.
X isn't really networked when running on a local machine. It doesn't make things any slower. It just so happens, that the X protocol is well-defined enough that it can be run via a network connection instead of a unix domain socket (a zero-copy IPC mechanism that's quite efficient).
Quote:Operating windows or desktops remotely can be done (better) with separate software like VNC.

Try playing Half-Life over VNC.
Free Mac Mini (I know, I'm a tool)
What can be done with X cannot be done with VNC etc. That is, running multiple windows on the same display from different hosts.

Admittedly, it's not that useful. But it can be done. That's how X works.

Mark
Quote:Original post by igni ferroque
Quote:Operating windows or desktops remotely can be done (better) with separate software like VNC.

Try playing Half-Life over VNC.

Try playing Half-Life over GLX.

X was developed to work in a powerful server/thin client world a long time ago, and that paradigm is still working today in a thick client world, so it can't be all that bad. As for the OP, that's pretty much the reason. For plain widgets, X will kick VNC's ass over low-bandwidth lines.
That X is client/server-based comes from the time that companies would have big mainframes where all the programs would run, and employees would be working on 'dumb' terminals, without hard drives or anything.

Nowadays, this networking support is more or less obsolete. (Although it can be useful when you have your server box stuffed away in your basement).
Quote:Try playing Half-Life over GLX.

I have (that was sorta the point ;). It was a little quirky with my Window manager, but perfectly playable.
Free Mac Mini (I know, I'm a tool)
Quote:Original post by markr
What can be done with X cannot be done with VNC etc. That is, running multiple windows on the same display from different hosts.


http://metavnc.sourceforge.net/

But yes, I think I'm beginning to understand now. Even though the mechanism to send drawing commands doesn't have to be as generic as sockets, there ultimately has to be some way for programs to send drawing data in a well-defined format to a rendering system. X chose a general-purpose IPC system where others have chosen direct library calls to the kernel level (DirectFB, Windows(?)). If sockets are indeed fast enough to never become a bottleneck then X11 seems very well designed.

Thanks for the replies everyone!

This topic is closed to new replies.

Advertisement