Problems in KWayland causes by API and ABI compatibility promises

Nate Graham nate at kde.org
Thu Mar 5 16:27:50 GMT 2020


Moving it into KWin itself seems sane to me, on the surface. What are 
the known users of KWayland outside of KWin? Are there any?

Nate



On 3/5/20 5:21 AM, Vlad Zahorodnii wrote:
> Hi,
> 
> KWayland is a library that provides convenience wrappers for Wayland 
> protocols. Usually, when we want to implement some Wayland protocol, 
> first, we add corresponding wrappers in KWayland and after that we 
> actually implement the protocol in KWin.
> 
> Unfortunately, we made a bad design choice in KWayland. It is common in 
> KWayland to see abstractions over unstable protocols. We do it in the 
> name of "don't repeat yourself" principle. This reduces the amount of 
> duplicated code in KWin, but it also makes much more difficult to extend 
> KWayland. Abstracting unstable protocols turns out to be really bad when 
> the next version of an unstable protocol contains big changes, e.g. 
> xdg-shell-unstable-v5 -> xdg-shell-unstable-v6. Due to the API and ABI 
> compatibility promises, we can't fix the broken design of those 
> wrappers. We should not try to abstract over Wayland protocols in the 
> first place!
> 
> We need to fix those wrappers in order to implement the corresponding 
> protocols properly in KWin (and fix a few bugs).
> 
> One option is to make KWayland unstable so we are free to do necessary 
> changes to fix the wrappers, but it doesn't really go along with the 
> Frameworks' policies. Another option is to move KWayland somewhere else, 
> e.g. KWin or Plasma.
> 
> Alternatively, we could provide new wrappers and append a suffix to 
> class names, e.g. "2" or "V2". But I don't like this approach for a 
> couple of reasons. First, we are going to mix two types of versions in a 
> single class name, e.g. XdgToplevelV6InterfaceV2, etc. Second, some 
> protocols are not completely implemented in KWin, so we may still need 
> to change wrappers in a way that may break API or ABI compatibility. 
> Arguably, we just don't have to push semi-finished changes, but 
> implementing everything all at once is a bit difficult and tackling one 
> problem at a time is much easier.
> 
> I'm writing this email to bring problems that we currently have in 
> KWayland up to discussion and find the way in which we can address them.
> 
> For what it's worth the question of moving KWayland out of Frameworks to 
> somewhere else had been raised before, but the discussion got stalled... 
> sort of. [1]
> 
> Cheers,
> Vlad
> 
> [1] https://phabricator.kde.org/T11903


More information about the Plasma-devel mailing list