4 ms·
The "choice" people want is the ability to easily mix and match a patchwork quilt of software from different parties, each adding one tiny behavior. Wayland doe
by saurik 1y ago
The "choice" people want is the ability to easily mix and match a patchwork quilt of software from different parties, each adding one tiny behavior. Wayland doesn't do that: it makes it so almost every behavior people want must be added to the compositor.
The magic is in finding what the right point in the abstraction is: what will be centralized and what will be decentralized. Both of your examples--systems and Wayland--made the same decision: the patchwork quilt of behaviors was complex for many users to get working, and even then often didn't work 100% always. It was also slow and a bit insecure (if you don't trust your software).
So, both systemd and Wayland took the same approach of pushing forward the boundary of abstraction and merging together most of the things people would have had to configure. This means that that one core component in the middle -- and sure: in Wayland you can have multiple implementations, and those can even share a library, but you can't MIX AND MATCH -- must do all of the things people want.
The reality is that no one wanted to maintain multiple X11 servers... but we also didn't want to! What we do want is to to be able to mix and match compositors and macro systems and window managers and all of the fun little behaviors that make a computer feel like it works for us, and now we can't, as we have to find and select a single giant ball of behaviors that happens to be close enough to what we wanted.
Theoretically, some day, someone could make a really advanced and capable display server for Wayland, one that will be extremely general and will have a number of protocols for how to extend its behavior. It will be the one display server to rule all display servers, and even ecosystems like Gnome and KDE could just interoperate with it, and we could get back the glorious ecosystem that people are killing...
...but that's effectively what X11 is, right now, and by the time you get that--with a ton of protocols that are old enough to be widely used--all of those behaviors will have aged and ossified and the code will be built by people who are gone in a language that isn't fun using conventions that are out of date, and some A-hole will point out that the stack is difficult to maintain and user's experience is variable and throw the entire thing out to start over :/.
Like, I dunno... I honestly do not understand how you are saying Wayland is doing the thing people wanted from systemd: the issue isn't that I wanted to be able to replace systemd, the issue is that I wanted systemd to not be a single giant C program because I really liked the patchwork of scripts and behaviors and alternative parts that were built up in the ecosystem.
And again: everything tends to end up with some central thing in the design somewhere... but you have to make that thing be so boring that no one has any interest in innovating on it, and X11 was that: while I do think we should have multiple implementations for robustness, we would expect every one of those implementations to work as close as possible to 100% identically.
- jchw 1y agoWell really, what people actually want, by my estimation, is a machine that works and to not have to adjust their workflows. These are both very sensible things that everyone understands. The stuff about "UNIX philosophy" and composability is mostly BS. We're talking about Linux, the least UNIX-y UNIX-like imaginable. People getting mad that a single program does too many things is insane when the first thing your computer boots out of firmware is the Linux kernel. Same for many of the more ideological systemd complaints, some of which exacerbated by people not understanding that systemd is an umbrella project and not an init daemon (and you can in fact swap in and out many of the components like timesyncd, networkd, resolved etc.) I think whether Wayland really was what people wanted out of systemd or not is mostly not that important. I'm arguing that people were mad because systemd took away their choices, you're arguing that Wayland wasn't the choices they wanted. I'm not sure what choices they wanted. I don't think most people who are mad about new things have fully-formed opinions about what they actually want in the first place. Either way, Wayland gives you nothing if not plenty of choices, and many of them much more complete than what you could get with random WMs on X. Most importantly, though, I strongly disagree that X11 is the ideal protocol to build on. X11 is a mess that's hard to implement and if you omit anything you'll basically always break a non-trivial amount of software. XInput 1 is pretty broken but tough, Wine needs it. Have fun implementing Xv everywhere too, and XRender. Most modern apps just grab a GL or Vulkan context and ignore all of that, but if you want to meaningfully implement X11 those things need to be there. I could go on, but I'm sure you get the point. Realistically, I'm sure we don't want to maintain multiple X servers. As it is, nobody wants to really maintain X.org to begin with... Well, there is one guy, but that doesn't appear to have gone so well so far. What's funny is, when people actually want to have X11 support, what they do instead is implement Wayland and use XWayland instead. Seriously, look at how many things implement Wayland: ChromeOS for Linux apps, SteamOS for game compositing, Windows for wslG, termux-x11... Wayland and Weston are much easier to implement and adapt than X11 and X.org were. When everything works well across all of the GPU vendors and the major applications have the remaining kinks ironed out, things will keep moving along and the sky will probably not fall. I honestly think that people were going to get cranky even if everything was done absolutely perfectly here, because succeeding X requires some people to do a bunch of work and adjust their workflows. Don't blame 'em, doesn't mean they're right.