X11 is an multiple decade old dinosaur, the developer decided it was growing too complex and no longer representing how graphics are done on modern systems and decided a rewrite. While doing so they decided to simplify some things along the way and in doing so they drastically overshoot their target and removed tons of fundamental functions that was present in X11 (stuff like being able to take screenshots, window manager, etc.). Some of that is slowly getting reimplemented and Wayland is getting closer to actually being a feature-parity X11 replacement, but it’s also taken 15 years and is still not done. The whole drama is the conflict between people wanting it as default and the other group of people for which it simply doesn’t work in its current state.
That is partly correct. Wayland is not based on X.org. There is nothing rewritten, removed or simplified. It’s an entirely new design, new code with a different license. And X11 isn’t written by a single developer. XFree86 was started by 3 people, got maintained by an incorporated and then became X.org and sponsored by an industry consortium (the X.Org Foundation). Many many people and companies contributed. The rest is correct. It grew too complex and maintenance is a hassle. Wayland simplifies things and is a state of the art approach. Nobody removed features but they started from zero so it took a while to implement all important features. As of today we’re almost there and Wayland is close to replacing X11.
And it will become more as development focuses on Wayland. If you look at X11’s release history, there is (and has been for quite some time) only the most important things going on. That doesn’t necessarily mean things are impossible to do with X11. But it’s just the way things are once something slowly gets replaced by something else.
Hmmh, to me rewriting something means something like writing it again, or revising it.
But it’s entirely new, not based on the predecessor, they didn’t have the old code or architecture in mind and it ended up in a different place with different features. So I don’t see a “re-”, just a “write”. I’d say it’s the same category of software (display servers / -protocols) but entirely different and independent from each other. I’d use the word ‘rewrite’ if they were dependent on each other in some form or if one was meant to replicate the other one.
I think that’s generally the point of a rewrite. To start from scratch with a better architecture. If you weren’t changing the architecture then you can probably just keep incrementally improving it.
Yes, but the word rewrite implies that it would serve the same function and retain compatibility.
If someone wrote a new implementation of the x protocol, as a drop in replacement for the existing x.org server, you might call that a rewrite.
Wayland is an entirely different solution to the same problem. It doesn’t follow the x protocol, and doesn’t maintain compatibility with the x.org server.
I think @[email protected] did a better job explaining it… It’s a rewrite if you’re trying to create the same product as before. And that’s not what Wayland is trying to do.
I mean we also don’t say a car is a rewrite of a train (or vice versa) but they share some of the same components (wheels, seats, a driver…) And libinput, drm, mesa aren’t copied to the source code. They’re seperate projects and components/libraries that are used via an interface that makes them reusable. Lots of other projects also use the same set of libraries. For example networking. Or games that are built with the same game engine.
Similar to SystemD, a lot of the “other group of people” sometimes are people simply whinging too.
Like I saw one case where someone simply didn’t want to upgrade their workflow… And there were still people talking about Network Transparency as though it is something that has worked well on X11 within the last literally 20 years, or talking about standards.
That doesn’t mean its perfect. But, when you say “feature Parity”, there are features with Wayland which X11 hasn’t caught up with, such as no massive gaping security issues. I’m not sure “feature parity” with X11 is a good idea, because don’t forget, Xorg implements a print server too. A lot of the stuff simply needs to be implemented by the desktop environments.
But I agree, at the moment, its really whether about if we break some stuff temporarily, or keep waiting… In my opinion though, the longer we wait, the longer the transition will take.
Not really. Systemd had the complete opposite problem, it did far more than the previous hackery of shell scripts. The complaints were that it was too big, had too many features, violated Unix philosophy and was less deterministic. Systemd had no problem fully replacing init, cron, DNS and Co. Wayland simply can’t replace X11 in it’s current state, it just can’t do a lot of basic things.
such as no massive gaping security issues.
That’s an utter strawman that doesn’t get any more true by repeating it. Nobody cares about display manager security at this point, since every app you run already has full system access anyway. Wayland security is like making sure the door is locked after the thief is already in the house. It might become relevant in a future when every app you run is in a Flatpak sandbox, but we are a very long way away from that. Even apps that use Flatpak are rarely sandboxed to the point that it would improve security. And on top of that, the sandboxing model Flatpak uses fundamentally doesn’t really work with a lot of Unix tools, e.g. how would you Flatpak something like make?
You haven’t actually read that article which keeps getting reposted did you?
Some of it is stuff like “not all window managers do xxx”, a lot of it is "my specific app (which might even be commercial and rather than bug the company who in paid thousands of dollars, let’s blame Wayland). And yeah, should we wait until every window manager is 100% until we do anything. That’s a generic statement, and they don’t name them for a reason.
Oh, I use xkill, and it doesn’t work. Well yeah, and you shouldn’t necessarily be using it in xorg these days either lol
There are some valid things, but if you read through a lot of the beginning, it’s actually just an opinion running around in circles.
You could literally halve that list pretty easily
And some things like DRM lease, I looked up, and it is supported by xwayland these days.
Some of it is stuff like “if the window manager crashes, you’ll lose your session”. Well yeah, that code would be in xorg instead, so it could crash there instead
Many xorg developers have also basically called xorg hot garbage…
It’s funny how that keep saying xorg supports xxx. But if we look at the history, stuff like compiz and dri and such was basically tacked on. And that’s the problem. Xorg was never designed for GPUs. It was designed for VGA cards like Tseng labs
It does some things better in Wayland already. The 15 year delay was in part because of NVIDIA screwing everyone around, and wasn’t the fault of Wayland
If we’re going to get pedantic about app support like the article, waydroid is broken on xorg as an example…
Actually, looking through it again, and its even more hilarious when I take a second look.
Another good example “Wayland is biased toward Linux and breaks BSD”. The reference is from the NetBSD blog. The Netbsd marketshare is huge, so it’s really important everyone holds back for them. The funny thing is that even gnome is missing features on NetBSD: https://wiki.netbsd.org/GNOME/ . So, should Wayland fix their OS for them?
To be clear for 90% of that whole link you’ve posted, it isn’t the Wayland Development teams responsibility to pick up slack on other projects. It sucks that they won’t be there for the beginning of the transition, but, if we transition earlier, they’ll prioritise getting their crap together
Half of what you said are either issues with your current compositor’s implementation or Nvidia driver related issues, since Wayland on both KWin and Mutter under AMD don’t present any of these issues, atleast for me, while I had the latency issue you mention with my older 3080 card.
The protocol is still under development after 25 years yes, but at the end of the day you vote with your wallet, and Nvidia clearly doesn’t give a shit about open-source or Linux as a whole since we’re a minority.
That’s not what Wayland is like these days - screenshots etc have been implemented for years now
The point they’re making is that, as a totally distinct project, every single feature had to be implemented from scratch. It’s not a fast process, especially relying on volunteer labour
The issue isn’t just that the features had to be reimplemented, but that they were not part of Wayland to begin with. Wayland does only do the most basic stuff and leaves everything else to the compositor (aka Gnome or KDE). That means every compositor will implement their own hacky version of the missing functionality and it takes ages until that gets unified again, so that apps can actually use that functionality.
Wayland is a classic case of an underspecified software project, they do a thing and they might even do it well, but what they are doing is only a fraction of what is actually needed for it to work properly in the real world. That’s why we are 15 years later and the new “simpler” Wayland is still not ready.
Wayland does only do the most basic stuff and leaves everything else to the compositor (aka Gnome or KDE). That means every compositor will implement their own hacky version of the missing functionality and it takes ages until that gets unified again, so that apps can actually use that functionality.
Would this functionality be mostly the same? Could they get together to make a shared libcompositor that implements the bulk of the functionality? Or is it so tied to specifics of the desktop environment that there’s little commonality. In which case, Wayland not doing it would be the right call.
I think wlroots is the standardized thing. Many WMs use it but desktops need to switch over to it afaik. I think KDE talked about doing this for plasma.
I am unsure what wlroots really is and maybe its not a libcompositor you were talking about but similar.
It seems very well specified to me, just developers have leaned on X’s insecurity for years to let them just reach across application boundaries freely. That’s addressed by Wayland, but it’s obviously a breaking change that requires new ways of transferring information between apps with oversight from the system, instead of X where all apps could just freely spy on each other. Things breaking and being complex to reimplement is the cost of doing it right.
I’m confused by this. I’m on EndeavourOS with KDE. It had an all called spectacle which takes screen shots perfectly fine. Does X11 have a screen shot function built in?
With X, any program can capture the entire screen. The Wayland protocol does not allow this, so each DE must implement it separately. You’re using KDE’s screenshot feature, not Wayland’s, and other screenshot tools may not work if they don’t support KDE’s custom protocol for screen capture.
Most applications get their Wayland support from the toolkit they are written in. Qt ( KDE ) and GTK ( GNOME ) apps are going to work in any Wayland compositor.
Some applications do “desktop” related things like try to take screenshots to set global hot keys. Wayland, strictly speaking, does not allow this. This becomes the job of the “compositor” ( Window Manager ) and so, if an application wants to do those things, it has to know how to talk to the compositor.
Increasingly, the desktop environments and compositors are aligning on how to surface some of these capabilities to applications in a common way.
Does it suck? KDE also has screenshotting implemented. It makes sense that your window manager should manage your windows, which includes being in charge of what can see what. Letting any app screenshot your entire monitor is not secure.
Only those that must interact with non-standard Wayland protocols, such as screen capture tools (like OBS), clipboard managers, WM utilities like xdotool… Other programs such as email clients or text editors are unaffected.
However, this is a non-issue as far as most users are concerned. There are only a handful of implementations (basically, GNOME, KDE, and wlroots which is used by most Wayland WMs) and most modern programs which require specific support to work are all compatible.
I understand what you mean now. You have to wait for the software developer to update the tool you use for compatibility with Wayland. Will it run under xwayland?
X11 is an multiple decade old dinosaur, the developer decided it was growing too complex and no longer representing how graphics are done on modern systems and decided a rewrite. While doing so they decided to simplify some things along the way and in doing so they drastically overshoot their target and removed tons of fundamental functions that was present in X11 (stuff like being able to take screenshots, window manager, etc.). Some of that is slowly getting reimplemented and Wayland is getting closer to actually being a feature-parity X11 replacement, but it’s also taken 15 years and is still not done. The whole drama is the conflict between people wanting it as default and the other group of people for which it simply doesn’t work in its current state.
That is partly correct. Wayland is not based on X.org. There is nothing rewritten, removed or simplified. It’s an entirely new design, new code with a different license. And X11 isn’t written by a single developer. XFree86 was started by 3 people, got maintained by an incorporated and then became X.org and sponsored by an industry consortium (the X.Org Foundation). Many many people and companies contributed. The rest is correct. It grew too complex and maintenance is a hassle. Wayland simplifies things and is a state of the art approach. Nobody removed features but they started from zero so it took a while to implement all important features. As of today we’re almost there and Wayland is close to replacing X11.
Also, doesn’t Wayland do things x11 can’t, or did badly, like Variable refresh rate ?
Fractional scaling (per-display), input isolation…
And it will become more as development focuses on Wayland. If you look at X11’s release history, there is (and has been for quite some time) only the most important things going on. That doesn’t necessarily mean things are impossible to do with X11. But it’s just the way things are once something slowly gets replaced by something else.
That is the definition of a rewrite, no? They started from scratch. Otherwise it would be a refactor, cleanup or overhaul.
And yes, it was more than one developer but Wayland was largely started by at-the-time X maintainers.
Hmmh, to me rewriting something means something like writing it again, or revising it. But it’s entirely new, not based on the predecessor, they didn’t have the old code or architecture in mind and it ended up in a different place with different features. So I don’t see a “re-”, just a “write”. I’d say it’s the same category of software (display servers / -protocols) but entirely different and independent from each other. I’d use the word ‘rewrite’ if they were dependent on each other in some form or if one was meant to replicate the other one.
I think that’s generally the point of a rewrite. To start from scratch with a better architecture. If you weren’t changing the architecture then you can probably just keep incrementally improving it.
When you do a rewrite you want to create the same product as before just with better code / architecture. That’s not what Wayland tries to do.
Yes, but the word rewrite implies that it would serve the same function and retain compatibility.
If someone wrote a new implementation of the x protocol, as a drop in replacement for the existing x.org server, you might call that a rewrite.
Wayland is an entirely different solution to the same problem. It doesn’t follow the x protocol, and doesn’t maintain compatibility with the x.org server.
I don’t know that I would say that Wayland is not based on X11. It is a rewrite, not a fork but it is the next chapter of a common history.
Wayland and Xorg do share a lot of code in a way. Libraries like libinput, libdrm, KMS, and Mesa are used by both.
I think @[email protected] did a better job explaining it… It’s a rewrite if you’re trying to create the same product as before. And that’s not what Wayland is trying to do.
I mean we also don’t say a car is a rewrite of a train (or vice versa) but they share some of the same components (wheels, seats, a driver…) And libinput, drm, mesa aren’t copied to the source code. They’re seperate projects and components/libraries that are used via an interface that makes them reusable. Lots of other projects also use the same set of libraries. For example networking. Or games that are built with the same game engine.
Took me long enough to learn what actually was the issue. Thanks for explaining! :)
Similar to SystemD, a lot of the “other group of people” sometimes are people simply whinging too.
Like I saw one case where someone simply didn’t want to upgrade their workflow… And there were still people talking about Network Transparency as though it is something that has worked well on X11 within the last literally 20 years, or talking about standards.
That doesn’t mean its perfect. But, when you say “feature Parity”, there are features with Wayland which X11 hasn’t caught up with, such as no massive gaping security issues. I’m not sure “feature parity” with X11 is a good idea, because don’t forget, Xorg implements a print server too. A lot of the stuff simply needs to be implemented by the desktop environments.
But I agree, at the moment, its really whether about if we break some stuff temporarily, or keep waiting… In my opinion though, the longer we wait, the longer the transition will take.
Not really. Systemd had the complete opposite problem, it did far more than the previous hackery of shell scripts. The complaints were that it was too big, had too many features, violated Unix philosophy and was less deterministic. Systemd had no problem fully replacing init, cron, DNS and Co. Wayland simply can’t replace X11 in it’s current state, it just can’t do a lot of basic things.
That’s an utter strawman that doesn’t get any more true by repeating it. Nobody cares about display manager security at this point, since every app you run already has full system access anyway. Wayland security is like making sure the door is locked after the thief is already in the house. It might become relevant in a future when every app you run is in a Flatpak sandbox, but we are a very long way away from that. Even apps that use Flatpak are rarely sandboxed to the point that it would improve security. And on top of that, the sandboxing model Flatpak uses fundamentally doesn’t really work with a lot of Unix tools, e.g. how would you Flatpak something like
make
?You haven’t actually read that article which keeps getting reposted did you?
Some of it is stuff like “not all window managers do xxx”, a lot of it is "my specific app (which might even be commercial and rather than bug the company who in paid thousands of dollars, let’s blame Wayland). And yeah, should we wait until every window manager is 100% until we do anything. That’s a generic statement, and they don’t name them for a reason.
Oh, I use xkill, and it doesn’t work. Well yeah, and you shouldn’t necessarily be using it in xorg these days either lol
There are some valid things, but if you read through a lot of the beginning, it’s actually just an opinion running around in circles.
You could literally halve that list pretty easily
And some things like DRM lease, I looked up, and it is supported by xwayland these days.
Some of it is stuff like “if the window manager crashes, you’ll lose your session”. Well yeah, that code would be in xorg instead, so it could crash there instead
Many xorg developers have also basically called xorg hot garbage…
It’s funny how that keep saying xorg supports xxx. But if we look at the history, stuff like compiz and dri and such was basically tacked on. And that’s the problem. Xorg was never designed for GPUs. It was designed for VGA cards like Tseng labs
It does some things better in Wayland already. The 15 year delay was in part because of NVIDIA screwing everyone around, and wasn’t the fault of Wayland
If we’re going to get pedantic about app support like the article, waydroid is broken on xorg as an example…
Actually, looking through it again, and its even more hilarious when I take a second look.
Another good example “Wayland is biased toward Linux and breaks BSD”. The reference is from the NetBSD blog. The Netbsd marketshare is huge, so it’s really important everyone holds back for them. The funny thing is that even gnome is missing features on NetBSD: https://wiki.netbsd.org/GNOME/ . So, should Wayland fix their OS for them?
To be clear for 90% of that whole link you’ve posted, it isn’t the Wayland Development teams responsibility to pick up slack on other projects. It sucks that they won’t be there for the beginning of the transition, but, if we transition earlier, they’ll prioritise getting their crap together
On X I can do everything, on Wayland I can’t:
Half of what you said are either issues with your current compositor’s implementation or Nvidia driver related issues, since Wayland on both KWin and Mutter under AMD don’t present any of these issues, atleast for me, while I had the latency issue you mention with my older 3080 card.
The protocol is still under development after 25 years yes, but at the end of the day you vote with your wallet, and Nvidia clearly doesn’t give a shit about open-source or Linux as a whole since we’re a minority.
You’re mixing this around. It’s Nvidia that doesn’t support Wayland, not the inverse.
Bit like saying “Linux doesn’t support Photoshop” instead of “Photoshop doesn’t support Linux”
Really? It’s been working for me since day 1.
Every time I learn more about what Wayland can’t do, I learn of even more critical stuff that doesn’t work
no screenshots? really? who approved this trashfire as default. That’s about as ridiculous as no global hotkeys
That’s not what Wayland is like these days - screenshots etc have been implemented for years now
The point they’re making is that, as a totally distinct project, every single feature had to be implemented from scratch. It’s not a fast process, especially relying on volunteer labour
The issue isn’t just that the features had to be reimplemented, but that they were not part of Wayland to begin with. Wayland does only do the most basic stuff and leaves everything else to the compositor (aka Gnome or KDE). That means every compositor will implement their own hacky version of the missing functionality and it takes ages until that gets unified again, so that apps can actually use that functionality.
Wayland is a classic case of an underspecified software project, they do a thing and they might even do it well, but what they are doing is only a fraction of what is actually needed for it to work properly in the real world. That’s why we are 15 years later and the new “simpler” Wayland is still not ready.
Would this functionality be mostly the same? Could they get together to make a shared libcompositor that implements the bulk of the functionality? Or is it so tied to specifics of the desktop environment that there’s little commonality. In which case, Wayland not doing it would be the right call.
I think wlroots is the standardized thing. Many WMs use it but desktops need to switch over to it afaik. I think KDE talked about doing this for plasma.
I am unsure what wlroots really is and maybe its not a libcompositor you were talking about but similar.
This is exactly what it is.
It seems very well specified to me, just developers have leaned on X’s insecurity for years to let them just reach across application boundaries freely. That’s addressed by Wayland, but it’s obviously a breaking change that requires new ways of transferring information between apps with oversight from the system, instead of X where all apps could just freely spy on each other. Things breaking and being complex to reimplement is the cost of doing it right.
that’s something
I’ve heard that synergy/barrier/etc doesn’t work though and that is critical for my daily workflow so I won’t be switching until it is supported
I’m confused by this. I’m on EndeavourOS with KDE. It had an all called spectacle which takes screen shots perfectly fine. Does X11 have a screen shot function built in?
With X, any program can capture the entire screen. The Wayland protocol does not allow this, so each DE must implement it separately. You’re using KDE’s screenshot feature, not Wayland’s, and other screenshot tools may not work if they don’t support KDE’s custom protocol for screen capture.
wait so you’re telling me I’m gonna be forced to use spectacle on wayland if I use KDE?
Most applications get their Wayland support from the toolkit they are written in. Qt ( KDE ) and GTK ( GNOME ) apps are going to work in any Wayland compositor.
Some applications do “desktop” related things like try to take screenshots to set global hot keys. Wayland, strictly speaking, does not allow this. This becomes the job of the “compositor” ( Window Manager ) and so, if an application wants to do those things, it has to know how to talk to the compositor.
Increasingly, the desktop environments and compositors are aligning on how to surface some of these capabilities to applications in a common way.
You will have to use a KDE compatible screenshot tool.
sighh, that sucks
does this go for pretty much all programs, like say an email client too? or is there a limit to this?
Does it suck? KDE also has screenshotting implemented. It makes sense that your window manager should manage your windows, which includes being in charge of what can see what. Letting any app screenshot your entire monitor is not secure.
Only those that must interact with non-standard Wayland protocols, such as screen capture tools (like OBS), clipboard managers, WM utilities like xdotool… Other programs such as email clients or text editors are unaffected.
However, this is a non-issue as far as most users are concerned. There are only a handful of implementations (basically, GNOME, KDE, and wlroots which is used by most Wayland WMs) and most modern programs which require specific support to work are all compatible.
still frustrating as all hell, these programs just worked on x11
also Synergy/Barrier/etc dont work yet and would need “non standard” protocols. Pretty critical for me
I am an enduser and I just expect things to work, but one of the most critical things of my setup wont
I’m told screenshots now work on wayland. The idea was that spectacle would not have worked on wayland because of how locked down it is
You said “I learn” twice in a sentence that demonstrates what you do not know. Impressive.
thanks!
I’m on Wayland, KDE plasma with Fedora 39. I take screenshots all the time.
yes, using spectacle I imagine
I use different software, apparently that matters
I understand what you mean now. You have to wait for the software developer to update the tool you use for compatibility with Wayland. Will it run under xwayland?