Flatpak jobs on KDE CI vs. continuous integration on main/master/devel branches
Volker Krause
vkrause at kde.org
Thu Feb 8 16:56:06 GMT 2024
On Mittwoch, 7. Februar 2024 19:48:27 CET Friedrich W. H. Kossebau wrote:
> Am Sonntag, 4. Februar 2024, 19:22:28 CET schrieb Ben Cooksley:
> > On Mon, Feb 5, 2024 at 4:28 AM Friedrich W. H. Kossebau <kossebau at kde.org>
> >
> > wrote:
> > > Hi,
> > >
> > > ((cc:kde-frameworks-devel for heads-up, replies please only to
> > > kde-core-deve))
> > >
> > > I hit the problem that when working on a repo which would like to use
> > > latest
> > > KF development state to integrate some new KF API just added in
> > > cooperation
> > > with that very repo wanting to use it, I cannot do so when someone had
> > > added a
> > > flatpak job on CI to that repo.
> > >
> > > Because with such flatpak jobs it seems they are limiting the available
> > > KF
> > > version not to the current latest one, as expected for continuous
> > > integration,
> > >
> > > but some older (anywhere documented?) snapshot:
> > > "runtime-version": "6.6-kf6preview",
> >
> > Please see https://invent.kde.org/packaging/flatpak-kde-runtime/-/tree/kf6
> > for what is in the KF6 preview.
>
> Thanks. So documented by implementation :)
>
> > > What can be done here to reestablish the old immediate continuous
> > > integration
> > > workflow? Where new APIs (also from KF) are instantly available?
> >
> > With Flatpak new APIs were never instantly available - there has always
> > been a delay as the Flatpak Runtime uses the most recent released version
> > of our software.
>
> I guess this was shadowed by feature development of KF having stalled during
> the Qt5/KF5->Qt6/KG6 porting phase as well as Qt6-based flatpaks jobs only
> activated recently.
>
> > > Right now this is a new extra burden which makes working on new features
> > > with
> > > KF and apps more complicated. Thus less interesting, and one/I would
> > > rather
> > > duplicate code in apps to get things done.
> > >
> > > Blocking latest KF API from usage also means less testing of that before
> > > the
> > > initial release.
> > >
> > >
> > > Besides all the resource costs to create flatpaks on master builds by
> > > default
> > > every time, when those are usually not used by anyone anyway.
> >
> > Those applications that have a hard dependency on features being added to
> > Frameworks are not good candidates for making use of our Continuous
> > Delivery systems i'm afraid.
> > Both Flatpak and Craft based (Linux Appimages, Android APKs, Windows and
> > macOS) CD jobs are best optimised for those applications that rely on the
> > stable Frameworks releases.
> >
> > There are ways (in .craft.ini) to make newer Frameworks available, but
> > that
> > requires that the system recompiles that Framework each time you trigger a
> > build and is therefore not recommended.
> >
> > Allowing those systems to use the "latest" artifacts of Frameworks would
> > be
> > a non-trivial exercise.
>
> So effectively this means:
> * KF - no CI on new API with non-KF repos, only KF-internal CI
> * KF - no CD, only released versions
>
> Which makes KF a second class product, with lesser testing :(
> And less interesting to contribute to, given it gets worse CI/CD care.
CI builds can (as they always could on Gitlab and currently mostly do) use
latest KF master. CD builds can't (and never could, binary factory had the
same limitation). Nothing is getting worse here, the only thing you cannot
have is unconditionally using latest KF and expect CD builds for that based on
cached runtime/platform parts.
The most common way of working for apps seems to be supporting at least the
last released version of KF, if needed with version ifdefs to already
integrate newer code. In most cases that is very limited effort, and as soon as
more than one contributor is involved that is usually highly desired anyway to
not randomly force full rebuilds on others.
There are cases where this is not feasible, e.g. in case of very tight
coupling or QML code that cannot easily be ifdef'ed. In that case you either
wait for the next release, or you can only have CD builds in the release
branch I'd say. Using expensive "full-stack" CD builds for that would need a
very good justification given the cost IMHO.
I can't speak for KDE Games obviously, but for the stuff I am involved in I
most definitely wouldn't want to miss CD builds anymore. There's a bunch of
people daily-driving Itinerary from those for example, and that is such a big
help for QA. Bug reports are practically always still relevant, the turnaround
time for feedback is days or even hours rather than weeks or months, and a
whole bunch of issues gets caught before even hitting the releases. On top of
that the Flatpak build provides an extra safety net there for finding
incompatibilities with two major external dependencies (poppler and zxing), by
using the latest versions of those.
One thing I do agree on though is that there is no point in running jobs (CI
nor CD) that really /nobody/ cares about anymore, and the occasional cleanup
there is probably a good idea (per repo and per job type, like the recent
retirement of the 32bit x86 Android builds). Running all this has a cost for
the people working on "horizontal" topics as well (CI/CD, Craft, platform/OS
support, etc), and that's a limited resource we shouldn't waste. That needs
careful balancing though, it's also not nice to have your work thrown out when
briefly not watching.
> For me this is an extra hurdle to work in KDE. And things are made worse for
> me given I am not convinced by those platforms (besides AppImage perhaps)
> which now are ruling contribution/development here.
>
> I understand people fancy easy deployment on their favourite platforms, so
> do I. There was a time when also Debian package info was in some KDE
> projects IIRC.
> But please think about those who are not into your respective platform, do
> not force them into (supporting) yours.
This goes both ways though. I might not care about the same platforms you care
about. Yet, I'm sure you'd expect me to not break your platform and/or to fix
whatever breakage I might have caused.
Yes, this means I have to also look after stuff I don't care about personally,
but in return I get others doing the same for things I care about.
None of this means you are expected to be proficient in arcane Windows compiler
issues etc, it merely means taking responsibility for getting breakage
addressed. Most of the time that is just a matter of asking in chat or pasting
the error into your favorite search engine.
And regarding the "extra hurdle" part, I've also seen the exact opposite, with
contributors being especially motivated by the fast turn-around time and
seeing the result of their work within minutes on their phone.
Regards,
Volker
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20240208/eb0942a1/attachment.sig>
More information about the kde-core-devel
mailing list