Are the stable/staging/unstable protocol distinctions useful?

Neal Gompa ngompa13 at
Thu Jul 6 22:44:16 UTC 2023

Hey everyone,

There's something I've been ruminating on for a few years now: the
state of wayland-protocols.

I've noticed that over the course of the existence of
wayland-protocols, only three have made it into "stable":
presentation-time, viewporter, and xdg-shell.

But basically no useful Wayland environment relies only on those three
protocols, and many protocols have been broadly adopted in staging and
unstable. For example: everyone implements relative-pointer (unstable)
and almost everyone implements xdg-activation (staging).

There are many "unstable" wayland protocols that are so broadly
adopted that they basically aren't going to change anymore. A good
chunk of the "staging" protocols have no implementers (per

So what I'm wondering now is: are the distinctions useful? And if so,
how are they useful? If they aren't useful, can we get rid of them?

Now, that may seem nuts, but here me out! Every wayland protocol that
has been merged is already versioned. Every wayland protocol proposed
is supposed to already have at least two implementers (which as noted
earlier, a number of existing protocols lack).

Between the versioned protocols and the requirement for implementers,
I don't see where the distinction helps anything. If anything, I've
seen examples of the distinction used as a deterrent by particular
compositor implementers despite the obvious need for them.

Could we consider getting rid of the distinction? If we need to have
structural sorting in the repository, perhaps folders representing the
versions instead? Or maybe some other categorization that doesn't
imply that something shouldn't be implemented.

Thanks in advance and best regards,

真実はいつも一つ!/ Always, there's only one truth!

More information about the wayland-devel mailing list