XFree86 10 Years Old
ChazeFroy writes "XFree86 is now 10 years old. To quote from the page, 'What makes this particularly eventful is that it is fully backwards compatible; this is a true testament to the spirit of the original X protocol of which XFree86 is its finest implementation.'" Ten years and
still binary compatible. Very cool.
It is not really binary compatible, but protocol compatible. X11 is a (network) PROTOCOL that describes how to send drawing instructions from client to server and how the server should send events (mouse, key) back to the client.
And exactly that is the genius of X (in contrast with most other windowing systems that are based on API's). Therefore, it is easy to get network transparency, and backwards compatability does not confront you with the headaches that API binary compatability causes.
Maintaining compatability is just as simple (OK a bit less since it is a complex protocol, but the extention mechanism was very clever) as backwards compatability for ftp,nntp,dns etc.
X standardised Xt, a standard for toolkit interoperability at the component level (it is possible to embedd an Xaw component in a Motif application, for example).
Unfortunately, neither Gtk nor Qt honour Xt, nor X's excellent "resource database" generalised configuration and theming (yes, theming!) system.
Gtk because it was written by a bunch of people initially without the faintest clue how X actually works, and Qt because Qt is like "Swing for C++" - it's intended to be cross-platform, and thus handles most drawing "itself", merely requiring prettu much a dumb framebuffer underneath.
Thus, the two most popular toolkits on Linux are abysmal from an X standpoint.
"Mach is the biggest intellectual fraud of the last decade."
"Really, not X-Windows?"
"I said 'intellectual'."
-- overheard in Silicon Valley
You dont have to deal with several hundred students using Xterminals...
.xsession and window manager configs until I haven't a clue what does what and can't help them sort out problems.
- it's flexible, meaning each of our lecturers wants the students to use a different window manager, and the students edit their
- it's network portable, which means our students could be using machines on the other side of the world and running netscape on that and then complaining to me that it's running slowly and I cant tell they are running it on foo.bar.au
- it's cross platform, meaning whatever machine someone has on their desk, they want a copy of it installed! Grrr! There's nothing a BOFH hates more than having someone want some software!
- it allows you to run a screensaver as background, using up CPU cycles that the rest of our students would like to use for statistical analyses! killall -9 xscreensaver!
- it's free, which means I cant use our budget as an excuse to not get it so I dont have to install it, thus creating more work for me!
No, I love it really. X is fantastic. Here's to X more years!
Baz
Yes it is.
For most of us the killer feature is network transparency. There are many windowing systems out there which do a great job of running applications on a local CPU, rendering them to a local graphics card, and taking input from local keyboards and mice. This is, however, very limiting to those of us who have been accessing our machines over networks for the past 10 years. Only recently has the Windows world achieved remote access with decent usability / performance (and I'm still not sure if there's a Windows-based remote access solution that supports input devices other than keyboard + mouse), and most other non-X graphics platforms never even made the attempt.
It's not like we are asking for a bunch of esoteric features that only found in X11. We're asking for one basic feature, network transparency. Those who marginalise this feature probably don't understand what all it can be useful for.
"How can you claim that you are anti-crack, while still writing a window manager?" — Metacity README
Men and women have lived in millions of years and we're still compatible.
What the fsck are you talking about? Yes, we may be compatible at the lowest Physical layer, but for those same millions of years you speak of, we (men) have also been trying to reverse engineer their (women's) higher-level protocols. We've barely broken the Data-Link layer and even our understanding there is only minimal. Compatible? We can barely keep our sockets connected. Hell, the last time I tried to ping my wife she gave me a protocol mismatch error! My Session layer with my her has been working reasonably well for many years now, but you ought to see the Presentation layer break down, especially on birthdays and anniversaries! I'm afraid, my friend, that we've got a long way to go to achieve full compatibility.
--Jim
So, you run Gtk+ right on the bare metal. Well, that's fine as long as you don't mind running full-screen. If you want to have more than one application running at once, someone has to arbitrate. That means you need a window manager. Then someone has to keep track of the mouse pointer - individual applications would otherwise fight over it. That includes drawing it, moving it around, changing it to the right sizes, shapes and colors on demand. I guess that would go into the window manager as well. Same goes for keyboard focus - applications can't all think they have the keyboard at the same time, now, can they? What the hey, throw that into the window manager too.
Cut 'n' paste between applications? Need some sort of message passing server. Throw that into the window manager as well, why don't we. Drag 'n' drop? More messages - have to support that in the new window manager. Session management (i.e. login, logout, and which applications to start up when you re-log-in)? Need something for that too. 3D calls to the graphics card? Someone had better arbitrate - you only want one application doing that sort of thing at a time. I guess the kernel could probably handle that, since it is already arbitrating the frame buffer.
By now you have a new "window manager" which has subsumed a lot of the complexity of the X server. Sure, you are no longer passing messages between two processes just to display 2D graphics, but I'm not really sure how much of a speedup you get just from that. As Jim Gettys (you're posting technical comments about X11, so I hope you know that name!) is fond of pointing out, lots of people think X is old, clunky and bloated, but nobody seems to be able to produce an alternative windowing system with equivalent (or even adequate) feature set but without comparable complexity.
"How can you claim that you are anti-crack, while still writing a window manager?" — Metacity README
I will not speak of Qt, because I have limited knowledge of it. However, Gtk+ and later GNOME addressed many of these shortcomings in ways that made a great deal of sense. It also did so in ways that were portable to Windowing systems that were either variants of The X-Window System or different altogether, but still provided the basiscs of display manipulation and event model.
The core X Protocol is a wonderful way for applicaiton and display server to talk. XLib is painful, but you can abstract it and still live with it reasonably. Xt was simply unworkable.
Of course, these points are moot. Gtk+ today along with GNOME do much more than Xt or Xaw or Motif ever did, and there's simply no going back. Color management, font management, internationalization, window manager interaction, system- and user-level configuration: These are all things that todays toolkits do far better than was ever available in the bad old days.
Of course the way your modern audience here on Slashdot thinks of theming, this is terribly misleading. You could build wildly complex resource configurations that would hand-tweek the widget heirarchy of a specific application. You could also set background colors and such, but since there were no solid conventions (not at all in Xt, and not enough in Motif and Xaw), these were of limited usefulness.