Dedoimedo reviews Wayland in 2024 and comes to sad conclusions
dedoimedo.com
dedoimedo.com
X will never have those things, while Wayland is consistently improving. Yes it has rough edges, yes the security model might be over-engineered, but it's perfectly serviceable nowadays from my point of view.
I managed to be a bystander in this debate as I've been using X exclusively but I do hope that one day Wayland gets all the functionality and performance of X, and people stop getting frustrated by it.
People dragged their feet on Wayland support for at least 10 years.
The Wayland developers have limited manpower. Obviously it would take a long them for them to get Wayland to reach a critical mass when there wasn't support from the community.
Sort of feels like a self-fulfilling prophecy.
Wayland might reach feature parity in 2, 5, 10, or 20 years, and I'm fine waiting, because while X11 can kinda work well now, its archaic design with 10 levels of hacks will likely make it extremely hard to support new needs (it already struggles with some existing use cases).
The assumptions that X11 uses are incompatible with what personal computing turned into. Drivers, security, the networking part... All of it is just not how things work these days.
It is a major project, it is hard to push through but it's there already, with most of the work complete by now.
And as a programer I must say that underlying Wayland libraries are vastly better than X11 ever was.
Check the lwn.net archives for some articles that explain this in detail.
https://zamundaaa.github.io/wayland/2021/12/14/about-gaming-...
Even according to your blog post uncomposited X11 wins in all cases (or is tied within the error of one millisecond). It especially sweeps the floor with immediate rendering.
(And no, composition is not just for 3D cube effects or anything like that. Although it certainly enables them.)
MacOS have moved on, Windows have moved on, Linux should do the same.
Are you working on X11 though?
For example, there is only one coordinate space in the X11 world. This meant that 1 pixel is always N "real" pixels (typically N=1).
But nowadays we have this thing called HiDPI, where 1 pixel can mean 1.5 real pixels on one screen (150% scaling), 2 real pixels on the second (200% scaling), and 1 real pixel on the third (100% scaling). We need mixed DPI and hence multiple coordinate systems, but you will break existing X11 programs if you tried to add that to the protocol, and at this point if you force your way through the problem it'll just be Wayland.
Existing X11-compatible systems "fix" this by:
1. assuming N=scale factor, thus upscaling all programs. Everything becomes a blurry mess (see XWayland).
2. assuming N=1, and let the programs upscale themselves. The problem is older apps (e.g. GTK2) don't understand HiDPI and you get a GUI for ants.
This is the wrong way to do scaling and even Wayland got it wrong and has been very slowly fixing things. What you actually want to do is just use real pixels everywhere and just tell the client "here's your NxM window size and it will be displayed in a X scale" and let the client do the intelligent thing. If it's a browser, a 3D game, or a PDF reader it will render directly at target resolution and scale with no fuzziness and those are most use cases people care about. GUI toolkits were stuck at integer scaling for a long time and thus the strange solutions to render at higher resolution and then scale down happened. All of this can work in X11, just always use native resolution for everything but Wayland is much better anyway and works great these days.
This is already how the Wayland fractional scaling protocol works. You have a 100x60 window and Wayland tells you the scale is 1.5. You give Wayland a 150x90 framebuffer and call it a day.
The giant problem with X11 is that it is still making the assumption that everything is one giant screen -- even if you have multiple monitors and whatnot. Even the act of sending a scaling event like Wayland does is a challenge on X11.
The people who actually work on it decided that was not the way forward, and chose another approach.
If you are qualified to work on it yourself, and you disagree, you can step up to maintain and improve X11.
Now, X11 being un-sandboxable is truly something broken by design.
There are many technical aspects that make Wayland broken by design (like default forced vsync, forced double buffering, a fucked up event-loop for single threaded applications or severely lacking functionality for things like window positioning or screen sharing). But the biggest problem is the design-philosophy: Wayland makes life extremely easy for gate keeping "Protocol Designers" and extremely hard for application developers.
> un-sandboxable
Not true. The quick and dirty way would be using Xephyr. Besides that many access control hooks like XACE are present and standardized in the X11 protocol for many years. Application developers just choose not to use them. So if X11 is not secure enough for you, blame GNOME and KDE, not X11.
A few things:
1. Vsync-by-default is the norm. X11 was the outlier.
2. Wayland does triple buffering, not double buffering.
>a fucked up event-loop for single threaded applications
I dunno, I wrote Wayland applications and I did not notice any peculiarities w.r.t. the event loop, at least in comparison with other platforms like Win32.
You need to expand a little more.
>window positioning
I suggest to read up on the Gitlab MR for the in-development window positioning protocol. The basic TL;DR is that window positioning has certain implications regarding tiling window managers and other unusual desktop usecases e.g. VR.
>screen sharing
I just shared my screen this morning.
> Not true. The quick and dirty way would be using Xephyr.
...So what you are saying is that you'd need a separate server running. Thanks for telling me that X11 is unsandboxable.
Wayland is frustrating at basic crap. Just this past month I had issues sharing my screen, getting programs to use my PATH correctly and setting options. It's insanely stupid that SO much has moved over DE that how you do things between Gnome, KDE, etc. are now all radically different. It's actually worse than X11 in so many ways.
Via some ugly hacks that degrade performance and make things look blurry. It‘s not the same.
So meh, you give and you take, life is a compromise.
here, found the wayland network transparency, fix your comment
The only official thing provided by the Wayland project (other than the protocols themselves described in XML) is the wayland-server and wayland-client library pair, which is more or less just a serializer and deserializer of the protocol.
There is also Weston, but we don't talk about it.
Waypipe is about as official as Kwin, Mutter or wlroots, and yet we don't disregard those projects as being irrelevant due to their unofficial status.
That sounds like a bad thing, no? ;)
And some dedicated soul managed to get it working anyway, as a sibling comment has pointed out.
[1] https://wiki.archlinux.org/title/Firefox/Tweaks#Enable_touch...
I think it's fair, considering we also leave out stuff that X11 can do that wayland can't do (and will likely never be able to do).
Example: network transparency. I still occasionally have to save the day by doing `ssh -X` and run some stuff on a remote host (but having a window be displayed on a local X11 server).
And I already foresee some idiot coming here and commenting that "you're not supposed to do that" to which i pre-reply: not all companies are FAANGS that can rework and rebuild everything that's sub-optimal. Many (most?) of us have to do the best with what we've got.
But caveats apply: applications which use the GPU are network translucent. You'd need VNC or other forms of streaming for that.
But on a different topic, it's a bit hard for me to read such harsh critical posts on open source software. Wayland is free software, I don't have to pay a penny for it. It's truly free! not like Google/Facebook free when you pay by allowing the companies to spy on you and get all your data. It's also open source. And many people working on these things are volunteers.
Nowadays, most software is written iteratively. You start with minimal features, and start fixing, improving things. Not only Wayland, most products are like this. You could argue that this in the only way to have a successful software product. Waiting years until everything is perfect is simply not feasible.
All this time, while devs have been iterating on Wayland, X11 has always been available. And this is open source, X11 will always be available. Use it if you want. It's also open source, so you can even improve it if you want or dare to do it. So why being so harsh with those trying to make things better?
Distro maintainers won't know what to include (or what to default to) unless people speak up.
* Support for different screen resolution across screens. I would venture a guess that most of us plug a screen into our laptop these days, I use this feature almost every day. * Similarly, different screen refresh rates across screens. I personally don't care. * Scaling of the home bar or whatever it's called. Couldn't be scaled in X11 in many cases, remained too small. Much better handled in Wayland. Essential feature for me.
But some of your points are wrong or misstated.
* Different screen resolutions are obviously supported on X11, you probably meant scale factors?
* Scaling of the, I guess taskbar, on X11? has nothing to do with the window system. It has worked for 15+ years on KDE Plasma and I'm currently using it.
The task bar, was that switching on the fly and scaling. Might have been having issues switching back and forth between laptop screen and external and again filing that like the issue above.
I think you mean scaling; screen resolutions aren't a problem on X11. It even does an inferior version of fractional scaling if you use the right software. It's much worse than Wayland's implementation, though.
> Scaling of the home bar or whatever it's called. Couldn't be scaled in X11 in many cases, remained too small. Much better handled in Wayland. Essential feature for me.
That's DE specific.
HiDPI scaling is kind of a mess in Linux if you use screens of different sizes. Even on Wayland you're far from guaranteed a decent experience.
I suspect this will get overlooked or set aside by the developer-centric crowd here, but as a non-developer Who observes that world with outside interest and curiosity, it’s a direct hit. Sank the battleship.
I was really excited for Plasma 6 in that regard, and most of QT6 apps look good. But all webpages in Firefox, Chrome - they all look so bad. Am I missing something?
Wayland not only has forced vertical sync it also requires every application to be double buffered. This can be detrimental for some performance metrics. That is why Wayland has worse performance despite being "simpler".
I don't get it either. But not because "software structure X11 is better than Y" reasons. X11 and Wayland are far too complex for that reasoning to work well. For example, X11 round trip latencies are a PITA over a high latency WAN, but nonetheless NoMachine worked around that structural problem without changing X11.
I don't get it because when I ran Wayland instead of X11, one thing that immediately stood out was how much faster Wayland was. As in it was less than 1/2 the time go from login screen to full set up desktop on Debian 11 using Gnome / GDM3. I showed it to friends and they switched to Wayland based on that one speed difference demo. It really was that dramatic.
When an article deviates that much from my personal experience I start questioning all it's claims. It doesn't help that the article is a long list of assertions without any data. Nor does he explain how to reproduce what he's asserting.
It sounds harsh, but it reads like an opinion piece to me. I don't know how else you could interpret: "Panel icon drag & drop:: Wayland - Quirky, X11 - Normal" as anything but a statement on personal preference.
Give some reasons? Or is it just a "hunch", like also people who dislike systemd are hacker-y, or people who dislike sudo are hacker-y,?
KDE has always been about the same size as Gnome in LOC and performance has been +/- the same as well, KDE just has more exposed settings which confuses people to think it's "bigger". At the time of Gnome shell in JS, KDE had much less performance trouble than Gnome, now they are about the same again.
There is a thing that Gnome has going for it regarding Wayland, which is that Wayland has been the default on Gnome for much longer, so yes, for the time being it has fewer problems there. KDE is improving rather quickly, but it has not caught up yet.
So Gnome is the showcase for Wayland right now and it should be used to evaluate what Wayland can and cannot do.
As a KDE user, I am personally holding out on X11 for a little longer because I don't need great fractional scaling and multi-monitor support, so Wayland buys me little.