Last weekend I attended the first few days of the Plasma 6 Sprint in Augsburg, Germany. While I’m not deeply involved with the Plasma development as such, there’s plenty of overlap with KDE Frameworks topics there as well.

Wrapping up 2020

The Plasma sprint was originally planned for April 2020, with accommodation and some trips already having been booked, but then COVID interfered. For me this was the last 2020 event to catch up with, after the recent PIM Sprint in Toulouse, so that part of 2020 is now finally concluded.

Having missed Akademy last year this was also the first opportunity to finally meet some people again who I hadn’t seen in over three years, and to meet some people for the first time who have joined in recent years (as well as meeting some people I have met in three different countries this year alone already). That’s always the best part of sprints :)

Kai, Marco, Méven, Nate and Noah have already written about the sprint, so I’ll focus on some of the details I worked on below.

KDE Frameworks 6

The switch to KF6 allows us to move things around and thus fix one of the bigger “dependency propagators” we have, the color scheme classes. Those are in widespread use and on their own fairly simple. Due to their placement in KF::ConfigWidgets however they depend on Qt::Widgets. That’s not a problem for QWidget-based applications, but for several of our QML-based (mobile) apps it’s often the only reason for that dependency.

For an Android APK that impact is particularly easy to measure, there we are talking about 4-5MB additional package size, which can be up to 20-25% of the entire size. While that might not seem much for the individual user, this quickly multiplies with every APK downloaded from our infrastructure.

This is entirely avoidable with a bit of restructuring, which we got done during the sprint (and by we I mean mostly David Redondo). The color scheme code is now separated into the new widget-less KF::ColorScheme framework, and a small part remaining in KF::ConfigWidgets for generating a color scheme selection menu. For most consumers this is all largely transparent, as the relevant uses happen in other component such as the Breeze QQC2 style.

That’s not the only KF6 topic we discussed and worked on though:

  • Reviewing the XDG Portal Notification v2 proposal for compatibility with KF::Notification. The proposed API is actually a big improvement over the existing one, and much better aligns with what we have in KF::Notification and what other platforms offer (which helps us with providing a cross-platform API).
  • Finish and integrate two widely used pieces of code from applications, an email address input validator and a return key capture event filter for line edits. This reduces code duplication and helps to cut down dependencies in e.g. KDE PIM.
  • Identify and fix test failures caused by the CLDR 42 update we got as part of the switch to Qt 6.5. This now uses a narrow non-breakable Unicode space instead of a regular one for certain time formats, which is actually a good idea but wasn’t expected by some of our unit tests.
  • Continued the refactoring of the KF::Prison barcode generator API to no longer be based around polymorphic types and factory methods but instead provide a simple value-type like interface.

I also got to learn more about XDG Portals from others working with those, which will come in handy for adding push notification support there.


Getting everyone together for a few days is not only great fun, it’s also immensely productive.

This has been made possible thanks to TUXEDO Computers hosting us in their office in Augsburg. If you have access to a suitable venue that is a much appreciated way in which you can support us. Similarly we rely on KDE e.V. to ensure everyone can afford to attend, which you can support with your donations.

I'm going to Akademy 2023!

The next big in-person meeting isn’t far away fortunately, Akademy is in just nine weeks already :)