Wayland is both a code base and a protocol unless you are being unreasonably technical about terminology (distinguishing between wayland and libwayland) to the point where you are deceiving casual readers.
It is for all practical intents not possible to implement a useful wayland compositor without relying on libwayland, because mesa links to libwayland and expects to be passed pointers to data structures defined in libwayland.
I do believe that the parent comment was unfair; it is possible to implement a compositor without libwayland —
but I do think that there is some truth in that the C structures are the de-facto protocol from the client-side. For example graphics drivers
seem to expect wl_display and wl_surface [1] rather than, say expecting the object id.
It’s not as though this is different under X though and isn’t a criticism of Wayland.
Indeed, my comment is merely observing that wayland is both a protocol and a code base for all practical purposes, I'm trying to leave the criticism to other people ;)
Maybe a more concrete example will answer your question. The Wayland protocols are found here [1]. Your compositor
will implement some of these protocols and not others. If I’m writing an application I will; possibly through some toolkit, ask the compositor what features it supports and configure how my application works accordingly.
This isn’t particularly different to say, an toolkit not supporting a particular form of input, such as GLEW not supporting tablet devices or certain GPU’s having more extension methods — which you can see if you look at Khronos specification. Or an even more drastic example, is an application having both a terminal display and a X11 display like Emacs.
So, it's quite possible that one gets a distro or a machine set up so everything works locally, but you can not tunnel a GUI application or run a remote desktop there. Or that you get a machine where you simply can not take a screenshot to report a bug?
So... I was one of those people rooting for anybody to replace X11 when wayland launched. But given the current situation, I'm just hopping that Red Hat finishes dying off before I have to work with somebody stupid enough to set some GUI system that I need to access, but only runs on a computer where I can not run a GUI.
Well yes — in the same way that you could have had a half-baked implementation of X on a remote desktop; but
it’s unlikely because most GUI-based interfaces will bundle with some level of support. For example, I don’t expect
Canonical’s Wayland compositor to not support screenshots; so while I don’t think your worry is unfounded, I do think
it’s disproportionate.
Yes, they're optional, and no, they're not universally adopted, but this doesn't damn Wayland. An example of where the screenshot protocol isn't supported (and this is fine) is where Wayland is used as the driver for the dashboard display in a vehicle (which is one of the major places where Wayland adoption is strong in industry). Wayland is designed to accomodate a broader variety of use-cases than X11: it's not just for desktop systems. That's why these protocols are optional and separate from the core Wayland protocol: it gives us greater flexibility, by design.
Among desktop systems, GNOME is really the only one who maintains a concrete objection to these protocols. KDE supports most of the wlroots-sponsored protocols in theory, and a handful in practice - patches welcome for the rest. The remainder of the major Wayland implementations for desktops, and many for mobile, support most or all of the necessary protocols.
I am really getting tired of explaining this stuff, over and over and over again. Can we please just stop spreading FUD for technologies that we don't understand? I'm just so sick of it.
Why do people do this? What can be done to stop it? Obviously nothing I've done so far has been working. This feels like talking to conservatives about climate change.
From the linux-on-the-desktop perspective, I have the impression there are 2 major groups today: Red hat, going all in on both gnome and wayland, or most others on X11. So gnome having an objection to these basically means wayland does not have them. All the other wayland clients together are mostly background noise.
Stated from a programmer perspective, what I can count on being available. What is the baseline?
Desktop linux is a mess compared to windows or OSX, with gnome/KDE as major frameworks, and a ton of minor but still relevant frameworks. The one thing they have in common, the one thing that makes GUI applications work more or less together is X11. Wayland causes a split here: yet another painfull technology reset that will probably cost us a decade before everyone has migrated. Now if wayland itself is fractured between its major player and everybody else, there is a 3-way split.
It seems X11 will die, Gnome as 800 pound gorilla will dictate the technological baseline, hence end users will lose basic functionality after suffering trough wayland's maturisation.
I can understand your frustration. You've probably built something great, X11 seems a dead end, and I presume you can't do much about Gnome. But I'll either have to live with this mess or run back to windows. I've dealt with pulseaudio and systemd, and both were arrogant low-quality projects that took years to stabilize back to their original levels. I can live without beeps on my desktop for a week, or the occasional service weirding out. I can't live with a usable UI.
Maybe you deal with climate change conservatives by demonstrating they still can get their groceries without their CO2 spewing SUV.