<table><tr><td style="">romangg added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D29024">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D29024#669970" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D29024#669970</a>, <a href="https://phabricator.kde.org/p/dvratil/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;">@dvratil</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>If I may add my two cents here,</p></div>
</blockquote>

<p>Hi Daniel, sorry for the late reply. But I was busy as I had to kick things off now with the libkscreen fork.</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>I agree with David that introducing a plugin for a plugin is a bit over the top.</p></blockquote>

<p>Is it though? Just because it's normally not done must not mean it should never be done. The Wayland platform is pretty special and pretty new so why not try something unusual? That said if a one-level plugin-infrastructure is in a similar way possible and somebody has implemented it: sure, let's go with that then.</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>Whats the issue with contributing your backend into libkscreen upstream instead?</p></blockquote>

<p>I would have been fine with that. But I anticipated there will be opposition to that. And I believe this was a correct assessment if you read the comments in <a href="https://phabricator.kde.org/D29028" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: line-through;">D29028</a>:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">> I don't see why we should have that in KDE code.</pre></div>

<p>and</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">> I don't really see why we'd want to support something that is not offering ABI stability and doesn't push Plasma in any direction.</pre></div>

<p>These comments show pretty clearly that there is political opposition to any integration effort with KWinFT. I don't want to comment on this any further but I think this is a really sad state of affairs and it shines a very unflattering light on the KDE Plasma project. Anyways, at least on a personal level I explain this with initial resentment and will stay open to reconciliation.</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>If there's any code that could be shared between KWayland backend and your new backend, you can create a small static library (basically reusing most of what you've already done). Otherwise you are basically forcing libkscreen to accommodate a single usecase for your fork, and the community has the right to push back on that as it makes things more complicated for them just to make live easier for you.</p></blockquote>

<p>It was not my intention to make things complicated for other people. And since I was basically the only person with larger contributions to libkscreen and KScreen in the last 1.5 years, I was its last maintainer and I definitely planned to do more work on it in the future the one person who would have needed to endure additional complexity in particular would have been me. ;)</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>Regarding the asynchronous plugin loading. You still need to block the constructor of the KWayland backend in order to figure out which plugin you want to load, because the KScreen backend loading code synchronously calls <tt style="background: #ebebeb; font-size: 13px;">isValid()</tt> just after constructing the backend.</p></blockquote>

<p>But I think that's fine, otherwise the consumer gets incorrect or incomplete information about the current/initial setup. You think otherwise?</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>So it's nice you try loading your plugins asynchronously, but it doesn't solve much since all you do is blocking-waiting for a bunch o threads to finish, rather than just blocking-waiting for the calls to the registry to finish... The current backend loading code in libkscreen is of course simple and stupid because it was first designed only with XRandR and Fake backends in mind. Later on QScreen was added which also works synchronously. When Wayland support was introduced, Sebas rewrote lot of the code, but some of the assumptions were kept, like plugins initializing synchronously. It's not too hard to fix the backend loading code to not only make assumptions about backends based on Qt platform and to allow for true asynchronous initialization.</p></blockquote>

<p>I don't know if it's hard or not. When I look at the current backend loading code it looks pretty complicated because of the out-of-process loading so I didn't want to manipulate that directly. Since I have now forked libkscreen to <a href="https://gitlab.com/kwinft/disman" class="remarkup-link" target="_blank" rel="noreferrer">Disman</a> I might look into that through some bigger design changes. But I will likely rather try to slime the library down than packing stuff on top.</p>

<p>I created some tasks for that. Your opinion as former KScreen maintainer and expert is of course very welcome: <a href="https://gitlab.com/kwinft/disman/-/issues" class="remarkup-link" target="_blank" rel="noreferrer">https://gitlab.com/kwinft/disman/-/issues</a></p>

<p>I will close this review now.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R110 KScreen Library</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D29024">https://phabricator.kde.org/D29024</a></div></div><br /><div><strong>To: </strong>romangg, Plasma<br /><strong>Cc: </strong>dvratil, ngraham, davidedmundson, plasma-devel, Orage, LeGast00n, The-Feren-OS-Dev, cblack, jraleigh, zachus, fbampaloukas, ragreen, ZrenBot, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra, mart<br /></div>