X11 Window System Turns 25 Years Old

  • I remember lurking on Slashdot during the 1990s. X-Windows partisans did not cease to extol its supposed strengths over Microsoft Windows and the Macintosh.

    They said that the separation of mechanism and policy would make inevitable any number of advances in user interfaces that were not possible under closed source models. Look at what actually happened. The overwhelming majority of Linux window systems and desktop environments were Windows 95 work-alikes, NeXTstep work-alikes, or attempts at minimalism based on BlackBox or aewm. Enlightenment was the only major exception, but it went by the wayside due to Rasterman's falling out with RedHat and by that project's attempt to build resources that were not but should have been included in X-Windows.

    In the meantime, Microsoft kept improving Windows until, with XP, they had an operating system that even many Slashdotters were forced to admit was usable and productive. In the meantime, Apple went to the brink of ruin and bounced back to usability preeminence using Unix code, but violating -- nay, extravagantly violating -- the Unix philosophy when it comes to user interfaces.

    "The year of Linux on the desktop" has long since become a bad joke even among the Slashdot set precisely because they held to their principles. Because they held to their false principles. If one wants to have a good user interface, then mechanism should not always be separated from policy. Configurability should not be paramount. An authority must be in charge to enforce interface consistency, if only imperfectly.

    Apple Computer is the existence proof. If the X-Windows partisans were right, then Steve Jobs pulled off the impossible.

  • I have mixed feelings about X. On the one hand, it's a very impressive bit of kit. It offers a unified protocol that separates the program drawing the window from the hardware that displays the window on the screen. This allows the program and the hardware to be completely separate, possibly even running on separate machines.

    On the other hand, that very separation is X's greatest hindrance. It imposes a fairly large cost, not just in terms of performance, but also in terms of complexity. You have to deal with a network protocol just to display things on the screen. No other windowing system imposes this level of cost on the developer, and it can be argued that the reason we never got a Linux desktop was because of X. Simply put, Apple showed us what could be done with a Unix system if you abandon X and set allow your GUI API to talk directly to the hardware. A large part of Apple's success can be tied directly to their decision to forego X11.

  • X was our original inspiration for web-based apps. When we first thought of the idea it was in X terms (pun acknowledged though not intended): could we make the software run on the server and use the browser as an xterm?

  • And we've not killed it yet.

    I used to rather like X back in the early 90's but I think we've moved on a bit since. The introduction of hardware accelerated graphics and the decline of the old "network application" model have pretty much killed the model it was built on.

    I'd like to see things such as Wayland succeed in the future.

  • Joke:

    Overheard at a Usenix conference, around that time:

    Person A: "... well, I think that Mach is the best example of intellectual fraud that I've seen here this year."

    Person B: "What about X Windows?"

    Person A: "I said _intellectual_ fraud."

    I was never a fan. X was just too far removed from the actual frame buffer to make this video-game writer happy. At. All.

    (Probably didn't help that I tried to bring up one of the first versions of X on our Vax, and thought that their design decisions were just jaw-droppingly awful. I don't remember many details -- the frame-buffer layout was pretty strange, though they changed it later -- I just remember shaking my head a lot).

  • X remote feature isn't about speed, it's about being able to use a window remotely AT ALL, and being able to mix it with other apps on other machines as though they were all local. This was invaluable in large Sun environment with shared home directories across all the networks in the 1980s and 1990s in particular. The modern trend shows a lot more group environments with linux boxes with no shared admin and few shared local resources (compared to every computer being a shared resource in many networks before), and much more reliance on long-haul networks to bridge sites, instead of just using X apps between local computers with multiple users. This is a change in the balance of use cases, and in no way changes the old use case, where VNC's screen-wide focus is a bit of a fail.

    Throwing out having an actual graphics protocol and going bonkers on net-blit (as is a collection of a bunch of hard-to-predict tradeoffs: Is the app graphics-op heavy? (might support using net-blit) Is the window size large? (2560x1600 here sometimes - net-blit is usually a disaster at this size) Is responsiveness an issue? (jamming the net with video can impede getting events back) Is the user trying to access an app at home from work? (Uplink speed on many consumer-grade connections is crap) What if the remote server doesn't have a console? X deals with this really well, allowing full apps and virtual X servers to be run on a headless system and used remotely.

    3D graphics operations are an even more interesting discussion.

    To put it simply, I love X because of remote graphics ops, which fill in essential niches few graphics system even think about. Taking issue with the bandwidth and lag of the graphics ops stream between computer begs for more work to be done to improve it (ah, NeWS, how I miss you).

    Simply: If I can't use graphics apps running on a headless server with no graphics card on my local, graphically-awesome workstation - then that failing window system just Doesn't Interest Me.

    :-)

    (That doesn't means X can't be improved... OMG... there is so much to improve, in particular being able to push x,y using events to a window without have to do it from the backwards full-screen paradigm... jeez)

  • I'm implicitly targeting X11 through writing a QT application for Linux. The continued existence of goofy low-level apis not fully encapsulated by higher-order calls and not relevant to the role of the modern desktop certainly doesn't seem like anything to celebrate.

  • Here is a programmers.se question on the subject of X vs web that y'all may be interested in: http://programmers.stackexchange.com/questions/165041/why-di...

  • The meaningless drivel of "kids these days" in this thread pretending they know X and how it works just makes me want to run down the street and scream (except for the very few who commented and really know).