David Rosenthal, one of the primary contributors to the X Windowing System, has published an awesome blog post about the recent 40 year anniversary of X, full of details about the early days of X development, as well as the limitations they had to deal with, the choices they had to make, and the environment in which they were constrained.
Once at Sun I realized that it was more important for the company that the Unix world standardized on a single window system than that the standard be Sun’s NeWS system. At C-MU I had already looked into X as an alternative to the Andrew window system, so I knew it was the obvious alternative to NeWS. Although most of my time was spent developing NeWS, I rapidly ported X version 10 to the Sun/1, likely the second port to non-DEC hardware. It worked, but I had to kludge several areas that depended on DEC-specific hardware. The worst was the completely DEC-specific keyboard support.
Because it was clear that a major redesign of X was needed to make it portable and in particular to make it work well on Sun hardware, Gosling and I worked with the teams at DEC SRC and WRL on the design of X version 11. Gosling provided significant input on the imaging model, and I designed the keyboard support. As the implementation evolved I maintained the Sun port and did a lot of testing and bug fixing. All of which led to my trip to Boston to pull all-nighters at MIT finalizing the release.
David Rosenthal
They were clearly right. During those days, the UNIX world was using a variety of windowing systems, all tied to various companies and platforms. Standardising virtually the entire UNIX world on X aided in keeping UNIX compatible-ish even in the then-new graphical era, and X’s enduring existence to this very day is evidence of the fact they made a lot of right choices early on.
Rosenthal also explains why one of the main alternatives to X, Sun’s PostScript-based NeWS, which was also co-developed by Rosenthal, didn’t win out over X. It had several things working against its adoptions and popularisation, such as Sun requiring a license fee for the source code, its heftier system requirements, and the fact it was more difficult to program for. After trying to create what Rosenthal describes as a “ghastly kludge” by combining NeWS and X into Xnews, Sun eventually killed it altogether.
Of course, this wouldn’t be restrospective of X without mentioning Wayland.
We and Jobs were wrong about the imaging model, for at least two reasons. First, early on pixels were in short supply and applications needed to make the best use of the few they were assigned. They didn’t want to delegate control to the PostScript interpreter. Second, later on came GPUs with 3D imaging models. The idea of a one-size-fits-all model became obsolete. The reason that Wayland should replace X11 is that it is agnostic to the application’s choice of imaging model.
David Rosenthal
This is about as close to a blessing from the original X Windowing System developers you’re ever going to get, but Rosenthal does correctly note that XWayland is a thing, and since not every application is going to be rewritten to support Wayland, X will most likely be around for a long time to come. In fact, he looks towards the future, and predicts that we’ll definitely be celebrating 50 years of X, and that yes, people will still be using it by then.
Great article, set the groundwork for so many. I worked on Sun systems quite a while back at New Ltd, for many many many years, and today I learn the connection between NeWs and X11. Back then as briefly mentioned Postscript was written by “Operators”, I also had to do a bit of to do with that thankfully not anymore!
As an aside, all the recent Wayland boosting prompted me to give it another go, I reserve an SBC and also a RaspberryPi 5 to test clean installs. Unfortunately Wayland still fails to deliver reliable remote desktop connection which for me is non-negotiable. FWIW, I actually found the desktop experience at the keyboard as good or better than ever before, performant, responsive, but if I can’t establish and maintain reliable remote connection it’s useless and I don’t have time to donate to an investigation.
cpcf,
I experienced the same on an RPI4. I’m not opposed to wayland, but as you say some things like remote desktop are non-negotiable. It’s an automatic deal breaker if it doesn’t work and I wish people would get this before judging us for continuing to use X windows. There would be much less friction if only wayland devs would have recognized our needs years ago! Anyway, I haven’t tried wayland on RPI that recently, so maybe it will work next time I install. Honestly given that X just works for me, it’s not hugely urgent for me personally to change. I will…but only after everything I need works and not just for the sake of running wayland!
On recent Raspian installs I’ve had no qualms with remote desktop using VNV:
https://www.raspberrypi.com/documentation/computers/remote-access.html#vnc
While some things could be improved to get closer to the remote X experience, it is getting to a point that (for me) it’s acceptable.
internetionals,
Yes, I might be building another RPI soon enough and if so I’ll take the opportunity to try it out.
It also sounds like the next version of KDE has made progress too, I’ll test that (on my nvidia hardware) when it makes it’s way down to my distros.
I happen to be on an nVidia card on my home desktop, so last I tried Sway (Wayland compositor replacement for i3) it didn’t *quiiite* work as well as I’d hoped
But I hear the nVidia drivers have been catching up recently, so I’m going to give it a go again soon!
And no worries on the remote desktop front. Terminals are all I need for remote work!
Theres a typo in the title – “Windowsing”
Come back to me when vlc ot webvideo can maximize video and minimize it again in wayland without lag on a 4k screen. This has beend done in X for years without problems. Regardless of compositor it has the same problem.