I stumbled upon this post regarding an earlier rant about wayland, but now it seems fine, according to the author.
After using Linux for nearly 5 years, using both depending on distros defaults, I have to admit that I never got the core/main/game changing differences between wayland and x11.
To be said, that I also dont do fancy linux things other than basic sysadmin stuff and from time to time repair the mess my curiosity left behind.
Could somebody explain the differences between those two and afterwards maybe also say some words about what this has to do with the difference between window managers and desktop environments?
I am also happy about links to good blog posts or stuff, that target this very questions (as long as the questions make sence of course). Thanks beforehand :)
Wayland is a from scratch redesign on how to display things on Linux to get rid of a huge amount of technical debt of x11.
As always with such a huge undertaking, there are a lot of speedbumps on the read that you can’t see beforehand. And at every speedbump people cried that wayland was a mistake and we just should go back to x11 because it worked good enough.
We now reached the point where wayland has (almost?) feature parity with x11, that’s why now more and more distro deprecate x11 to be unsupported some undetermined point in the future.
Don’t forget that at this point X11 doesn’t have feature parity with Wayland more than the other way around. Mixed DPIs, refresh rates, multi-display VRR, virtual screen resolutions, nested compositing, direct scan-out, GPU hot plugging, DRM leasing, HDR are all exclusive or at least better on Wayland.
One thing to note with X11’s design, having a server and client, there was nothing requiring both to be on the same machine. You could run an X11 client on your local machine, ssh into a remote machine and use its X11 server.
Lets say you are home and can ssh into a work server. You could run Firefox on the work machine, using it’s network and have the visual parts show up on your home computer.
This was very much a Unix, shared resource style design. Servers and thin clients. Put all your horse power in the big machine and connect using your crappy low power system to it.
Back than I tried this. The performance was horrible, even on a good connection. It was barely tolerable on LAN, but over the Internet … no. Just no. There were and are better solution for accessing a remote machine.
It was fine when rendering (esp. text) was server side and not client side like it is now. At least LAN (10MB ethernet) was basically transparent. Internet was shit mainly because everyone was on 56k modems.
GTK and Qt do all their rendering client side and transfer bitmaps to the server requiring much more bandwidth.
Ca. 20 years ago I worked for a company that used X forwarding for their backup management system (a Java application running on one of the servers) which somewhat worked on their wired LAN (at least
mostsome of the time).This was just unreliable and slow and had issues left and right.
Keep in mind that in practice this didn’t work that well, it wasn’t very efficient at displaying modern interfaces over the network. Showing a simple text editor over LAN worked fine, but using Firefox from another place was quite spotty.
I realize not using this model was intentional with Wayland, but I wish it had something similar.
I’ve never tried it, but there’s Waypipe.
That looks like a great solution, will have to try it out.
Before Wayland, there was X Window System, created in 1984. X Window System was designed in a time where you had one good computer connected to multiple displays used by different people. X went through many versions but version 11 (X11) stayed around for a long time.
But the architecture just isn’t good. It wasn’t designed for modern needs. MacOS used to use X, but replaced it to fit modern needs. Windows didn’t use X, but they too updated Windows to fit modern needs. But Linux and other OSs stuck with X for a lot longer, hacking it to make it work. Honestly, it’s amazing how well it does work.
But isn’t not great. It wasn’t designed with security in mind, it doesn’t do multi-monitor well. Behind the scenes, it considers everything to be one giant display; issues arise when it comes to mixed-dpi displays and when monitor refresh rates don’t match. It’s also just a bloated, old code base that people don’t want to work on. Fixing X would not only be difficult, but would break compatibility.
So people got working on a modern replacement for X aiming to avoid its issues. Wayland is leaner, more opinionated, and designed for how modern hardware operates. Wayland itself is just a protocol (like X11), and there’s many different implementations of that protocol: Mutter, Kwin, wlroots, smithay, Mir, Weston, etc. Meanwhile X11 pretty much only had one relevant implementation, Xorg. Wayland’s diversity has its pros and cons. Pros include (1) you can create your implementation in any programming language you want rather than being stuck to just one, (2) an implementation can fill just the needs on the person making it rather than trying to generalize it for everyone. But cons include the fact that this fragmentation leads to scenarios where one implementation supports something that others don’t and implementation-specific bugs.
Wayland’s opinionated design is also draws criticisms. It gives a lot of control to the compositors rather than windows, which is how Xorg, MacOS, and Windows work. Nvidia’s wayland adoption was also slow and terrible. It took many years to get it into the only decent shape it’s in now.
This reads like an AI response to me.
Mac OS has never used X11 as a primary display system. Apple had a version they supplied with older Mac OS X versions for people using older Unix applications (and half-arsed ports) but that’s been unsupported since 2012. You can install the modern “XQuartz” open source equivalent, but it’s still secondary.
Not AI.
My bad on the Apple part.
Excellant write up, thank you.
I’m not exactly sure what ‘opinionated’ means in terms of software, could you (or anyone who sees this) define it?
One opinion that Wayland has is that the client is responsible for decorating its window. It draws its own title bar, shadow around the window, and the cursor.
Though not everybody was happy with this. A few protocols were created that lets clients tell the compositor to draw decorations around the window and the cursor.
But still, every app needs to support those client side decorations and cursors because not all compositors support those protocols. Gnome notably doesn’t, they like client side decorations.
Humorously, X11 is like driving a 1990 Honda Accord. It was built ages ago, but with enough care, it still runs just fine.
The good news? Over time, you’ve bolted on all sorts of modern conveniences: GPS, Bluetooth, maybe even a backup camera—but at the end of the day, it’s all just stuff you crammed in. Underneath, it’s still the same old car. It’s reliable, it gets great gas mileage despite the half a million miles on the odometer, and it’ll start even when it’s buried under a foot of snow. Sure, it takes some effort to pass emissions, but at least every mechanic knows how to fix it, and parts are cheap.
Now for the bad news. Anyone with a flathead screwdriver can take it for a joyride whenever they feel like it. You keep finding it parked in weird places, but hey, at least they always bring it back. The airbags? They might work, but there’s only one way to find out. And let’s be honest—most modern cars have surpassed it in every possible way.
The best part? It’s been paid off for decades. No one is just going to hand you a brand-new car because that would take a ton of money and effort. No matter how much you tinker with it, it’s still a 1990 Honda Accord. You can throw on some new tires, upgrade the suspension, and maybe swap out the brakes, but at the end of the day, it’s never going to have that brand new car feel.
Every mechanic does not know how to fix x11, and cannot fix it without extensive knowledge.