[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-frameworks-devel
Subject:    Re: Problems in KWayland causes by API and ABI compatibility promises
From:       David Edmundson <david () davidedmundson ! co ! uk>
Date:       2020-04-23 21:07:02
Message-ID: CAGeFrHAQfUwDUC_nyZUAOi41QdFiNy5b9cr+ac9Ax-YeYQ8Q6A () mail ! gmail ! com
[Download RAW message or body]

We had a meeting. It resulted in some final action decisions.
These will affect the kwayland folder in frameworks.

The meeting was attended by: Kevin Ottens, Vlad Zahorodnii, Aleix Pol,
Myself, Benjamin Port who all approved the plan.

*Protocols:*

We make a new repo. It will contain just protocol XML files.

plasma-wayland-protocols - target is kdesupport.

Existing protocols remain exactly the same, just moved
New protocols follow upstream wayland-protocols naming scheme using the
"zkde_" prefix

*Client - short term:*

We leave things unchanged.

Kwin tests will continue to use KWayland::Client as is, the upcoming fork
KWayalndServer (mentioned in a bit) will stil use it.

If something comes up that requires an ABI break or new classes from client
(XdgShell for example) we deal with it locally in the relevant repo as per
the longer term plan.

We slowly migrate to the long term plan.


*Client - long term direction:*

If something is used in N places - we should abstract things in a high
level API like KWindowSystem.

If it's used in 1 place, we go native with QtWayalndClientExtension and the
generated classes.

Autotests for the server should use generated low-level classes, see for
example the currently merged tabletmanager autotest. If we need something
in kwin and KWaylandServer, we just do it in both.

Client will still have a KF6 library for doing super core stuff such as
ConnectionThread, wl_surface, buffers etc. It won't contain all the extra
protocols.

At KF6 we rename namespace and repo to KWaylandClient.


*Server - short term:*

We make a new repo. It forks existing KWayland::server classes from
framework's kwayland + the autotests. This goes into kwaylandserver

   -

   put in workspace
   -

   no ABI/API guarantees, but released in sync with kwin
   -

   .so bumps each time
   -

   new namespace (i.e KWaylandServer)
   -

   Institute a complete freeze of the server folder in KF5

*Server - long term direction:*

   - Unit tests migrate to testing against just generated code for the
   extra protocols


   - Drop Interface suffix in class names.


   - Drop from KF6


I'm very hopefully this will really help spur our kwin and wayland efforts
as well as prepare us for KF6.


Regards

David

[Attachment #3 (text/html)]

<div dir="ltr"><div>We had a meeting. It resulted in some final action \
decisions. <br></div><div>These will affect the kwayland folder in \
frameworks.</div><div><br></div><div>The meeting was attended by: Kevin \
Ottens, Vlad Zahorodnii, Aleix Pol, Myself, Benjamin Port who all approved \
the plan.<br></div><br><b>Protocols:</b><br><br>We make a new repo. It will \
contain just protocol XML files. <br><br>plasma-wayland-protocols - target \
is kdesupport. <br><br>Existing protocols remain exactly the same, just \
moved<br><div>New protocols follow upstream wayland-protocols naming scheme \
using the &quot;zkde_&quot; \
prefix</div><div><br></div><div></div><div><p><strong>Client - short \
term:</strong></p><p>We leave things unchanged.<br></p><p>Kwin tests will \
continue to use KWayland::Client as is, the upcoming fork KWayalndServer \
(mentioned in a bit) will stil use it.</p><p>If something comes up that \
requires an ABI break or new classes from client (XdgShell for example) we \
deal with it locally in the relevant repo as per the longer term \
plan.</p><p>We slowly migrate to the long term \
plan.</p><p><br></p><p><strong>Client - long term \
direction:</strong></p><p>If something is used in N places - we should \
abstract things in a high level API like KWindowSystem.</p><p>If it&#39;s \
used in 1 place, we go native with QtWayalndClientExtension and the \
generated classes.</p><p>Autotests for the server should use generated \
low-level classes, see for example the currently merged tabletmanager \
autotest. If we need something in kwin and KWaylandServer, we just do it in \
both. </p><p>Client will still have a KF6 library for doing super core \
stuff such as ConnectionThread, wl_surface, buffers etc. It won&#39;t \
contain all the extra protocols. <br></p><p>At KF6 we rename namespace and \
repo to KWaylandClient.</p><p><br></p><p><strong>Server - short \
term:</strong></p><p>We make a new repo. It forks existing KWayland::server \
classes from framework&#39;s kwayland + the autotests. This goes into \
kwaylandserver</p><ul><li><p>put in workspace</p></li><li><p>no ABI/API \
guarantees, but released in sync with kwin<br></p></li><li><p>.so bumps \
each time</p></li><li><p>new namespace (i.e KWaylandServer)  \
</p></li><li><p>Institute a complete freeze of the server folder in \
KF5</p></li></ul><p><strong>Server - long term \
direction:</strong></p><ul><li>Unit tests  migrate to testing against just \
generated code for the extra protocols<br></li></ul><ul><li>Drop Interface \
suffix in class names.<br></li></ul><ul><li>Drop from \
KF6</li></ul><p><br></p><p>I&#39;m very hopefully this will really help \
spur our kwin and wayland efforts as well as prepare us for \
KF6.<br></p><p><br></p><p>Regards<br></p><p>David<br></p></div></div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic