Featured Articles: Professor XYZ – The Rise Of Wayland
Sounds like a blockbuster hit, right? Wayland development continues, in what is considered by many as the holy grail of one this decades major Linux developments. Is it shapping up to be all that we have hoped? Of course it is way to early to tell. But, it does warrant an update every so often. Maybe a philosophical update, a viewpoint, something I have been thinking about.
_professor (no, not that professor…)
Well hello, Grandpa! X:
X Server is as old as father time. It seriously is. As a Linux community, we are highly lucky it has made it this far. If you do not know, there is a handful, yes a handful of developers that truly, truly know all its underpinnings. As sad as it sounds, if they all went down in a plane crash, we would most likely never be able to fix wayland. But, hey, that is what Mir/Wayland hope to provide: a solution to the age old X Server. I appreicate X.Org, I really do, it is the backbone of the majority of Linux systems, and we owe a lot to it, we do. But, like disco and Skrillex, we must move on.
A little bit of history first. Ol’ Granpa ‘X’ was born out of a byproduct of the need to debug their Arugus sytem at MIT way back in the good ol’ days during Project Athena (read Rebel Code by Glyn Moody, great book). Little do some people know that, previous to X, there was W (go figure!). The aim was to link different systems in a heterogeneous way aross remote sections of the network, and between different vendor systems. The system needed to be able to remotely access resources across those systems. After MIT gave up control of X, thankfully the X Consortium picked up the task to avoid fragmentation of this fragile, burgeoning software stack (which then passed to The Open Group, then the X.Org group and so on…). In the exchange along they way, im sure bits and pieces shook out of it innards, or I would like to think that is how we came to never truly understand how it works at the deep sublevels.
Where X came to be today, is through tons, and tons, up on tons of patching and leak-stops. Thankfully the structure boils down to server and protocol. Thankfully, the transparent nature of the project remained Open Source, and by extension, was compatible across all machines that employed it. It must have been cool as hell to run a program client remotely through the X Server back in the day. Then certain people came about and wrote various “confines” of what a display interface should look like visually. This haphazard approach to writing layers to X Server’s functionality is what brought us to where we are today. It was very much “piece mealed” together, lacking any kind of “tool kit” or base that functionality development stemmed from.
The sad thing is this: X is past it’s prime, nobody cares about its network transparency anymore. With so many pieces just haphazardly put together (X server, the window manager, the compositing manager and so on), all of these pieces are linked by complex, asynchronous protocols and methods. As I found out, very little is done on the X Server nowadays, with calls and libraries moving into the kernel itself. With a 3 pass system ( the application, the X server and the compositing manager), performance is much worse than it really could be. But, I have to hand it to the X developers, who have kept such an old dinosaur afloat for decades.
The state of “zomg-its-wayland-but-it-wont-be-out-for-a-long-time”:
Enter Wayland. Our savior! (well, to be fair, Mir is also in the mix). After several years of development, we are starting to see the fruits of many-a-developers labors. Wayland is a protocol that replaces the X protocol. Weston is the compositor, or display server, for Wayland. See the video above for some crude native real time use, keep in mind this is only the beginning. Because of how Wayland is being setup, there is a far less “3 ring circus” to contend with, resulting in a much smaller footprint.
We have, in large part, Kristian Høgsberg to thank for starting this all, along with many developers that also work for companies such as Intel, Samsung, and RedHat. Krstian saw the major issue with X Server being so broken up. When you think about it, it is quite horrendous, with bits and pieces in libraries, the kernel, a bits and bobs all over the place. X has been relegated to a “middle man,” a street corner pill passer, who whispers non-sensical things while he runs into large pixels and animated bannanas.
Then we have mister Mir, little “I’m too good for Wayland” Mir. While Mir may very well shape up to be quite competent, its existence is baffling. And don’t give me the “competition is good” rhetoric. While that is true to a large extent, a complete reworking of something very establish in Linux like X Server, deserves collaboration. Canonical and Ubuntu can do what they want, and it may work out for them, but I tell you this: doing so makes more work for upstream developers who must work in code, more work for hardware vendors, and just a plain headache for those who wished it never came into being. A lot of this is a result of the FUD surround Wayland early on.
In any case, we have two competing projects. You could say they aren’t really competing, but it sure seems at times like they are. If some of you remember right, the original network stack (I believe it was Net2? I’ll correct later if not), was a product of 2 developers who split ways, in this same regard. One had a vision, a grad vision. The other, “make it work first, add features later” mentality. Guess who won? The later did. Any why? That is the philosophy of Linux and what Linus wanted. Sure, it could have been disastrous, but Linux development just sorta works that way 🙂 Where Canocial could, and likely, will create issues, is when times comes that if Ubuntu and Mir take off, resources will be taken away from Wayland, and further incompatibilities can arise between Mir and Wayland, something that Wayland was designed to avoid.
One thing is for sure, it seems like Mir might get its way. And if it does, one can only hope that we don’t end up with another X Server.