Problems in KWayland causes by API and ABI compatibility promises

Vlad Zahorodnii vladzzag at gmail.com
Wed Mar 25 11:41:37 GMT 2020


Hi,

On 3/23/20 4:44 PM, David Edmundson wrote:
> Yeah, I feel that's what kwayland was originally going for. Seat, for
> example, does a lot of dispatching and logic internally.
> Then it drifted into being just wrappers.
> 
> We do need to answer that question definitively otherwise we'll be
> forever stuck coding against each other.

I think that's the direction towards which we should move - a library 
with components that one could plug in to get started with writing a 
Wayland compositor.

> This thread hasn't fully addressed your initial comments on ABI and API.

Yes, my concerns about ABI and API compatibility promises have been 
fully addressed unfortunately.

> Moving is far far from trivial. We have plasma-framework depend on
> kwayland client API. And moving just the server API would break the
> client tests. We also have a released spectacle using kwayland.
> It'll be really messy, plus there's any damage this could do to
> distro's opinion on frameworks as a whole.

Yes, plasma-framework uses KWayland client API for Plasma::Dialog and 
shadows. It is worth to highlight that the shadows integration stuff is 
going to be ported to generic KWindowSystem shadows API in KF 5.70, so 
that's minus one. :-)

> Realistically within KF5 we have two options:
>    - We can start to introduce more versioned classes and see if that
> helps address the problem before we make more drastic policy changes
> 
>    - We can put new protocols somewhere else and elevate them in
> frameworks when they actually have users
> 
> My fear with the latter is that we'll end up over time, we'll start
> forking existing protocols in wayland to fix things and ultimately end
> up in an even messier fragmented state.

Yes, that's what I'm afraid of too. The problem with the former is that 
we can end up with a lot of versioned classes. API-wise this won't cause 
problems for end users, but it'll definitely make things more difficult 
internally, e.g. if we have two implementations of the xdg_wm_base 
protocol, then wrappers for the xdg-decoration or xdg-foreign protocol 
would need to deal with those versioned classes.

Cheers,
Vlad


More information about the Kde-frameworks-devel mailing list