X Windows and Ajax: Two Kinds of Display Servers
X11 is a client/server display system that realizes user interfaces by sending asynchronous messages back and forth between a display server — that manages a display, mouse and keyboard — and clients such as xterms, Firefox, GIMP, etc. Some of the drawing, windowing, events and other operations that the X protocol supports look suspiciously like some of the things flying around in Ajax these days.
Now there are some substantial differences between X and Ajax. For one, X clients (the equivalent of the http server) open up persistent connections to the X server (the equivalent to the browser), while the ‘Ajax server”, aka the browser, has to poll the “Ajax clients” (the apps on the http server) for messages. X is typically used in a LAN rather than a WAN setting, for this reason. Persistent connections usually don’t hold up very well in a WAN context. Also, there’s no embedded scripting language like Javascript in X.
One definite similarity is that both X and Ajax don’t have any widget standards. In X you’ve got several different widget sets — Motif, Qt, Gtk, etc. — while in Ajax you’ve got a few early frameworks with their own widgets.
So, what’s to be learned from all of this? First, while user interfaces may well head in the component GUI/widget directions, we’ll likely have quite a number of different widget sets in the long run. Second, there are a few design lessons to be learned from X Windows. For example, the creation of windows with a specific look and feel is controlled by a window manager abstract factory.
Some of these design solutions may not be appropriate for Ajax, but I think it’s worth mining this trove of design solutions. Might we some day have an Ajax desktop that unifies multiple independent Ajax applications?
Update 1: Bill Scott makes a similar point (though much earlier — more coffee, I’m sure).
