Skip to content

Tuesday, 30 September 2025

10 Years of Qt OPC UA

Beginning of 2025 I was searching through the version history of Qt OPC UA - trying to find out when a certain issue got introduced. At some point I was curious: How long does this thing go back?! Turns out that the first git commit is dated 25th of September 2015. Which means we have been doing this for over 10 years now!

Continue reading 10 Years of Qt OPC UA at basysKom GmbH.

Business Intelligence (BI) is essential to understand and improve the production of software-defined products, yet its application is still immature. By building trust, involving engineers in defining metrics, and starting with small end-to-end use cases, companies can turn BI into a powerful driver of decision-making and continuous improvement.

Sunday, 28 September 2025

Calamares is a Linux system installer used by a wide range of distro’s. It is in “community maintenance” mode, which means it depends on downstream code submissions and careful bug reports. Sometimes I have time to work on it, outside of any particular distro. It would be correct to say it is “slow going”. But that doesn’t mean there are no changes! Just this week a new language was requested, Luganda, bringing the total to 79. Not all of the languages have enough coverage to be included in the language drop-down, but all of them have translators working on bringing the installer to their locale. Welcome!

Saturday, 27 September 2025

Whether you missed it the first time or simply want to relive the excitement, the entire Akademy 2025 experience is now available to rewatch online! From insightful keynotes and engaging panel discussions to technical talks, every moment of the event has been recorded and uploaded for the community to enjoy.

This year Akademy was packed with ideas, innovation, and collaboration that will shape the future of KDE and open source.

Watch now on your favorite platform:

Enjoy!

At Akademy 2025 this year, I had the privilege of giving a talk about a big picture topic close to my heart, and you can watch it here:

For those who prefer reading over watching and listening, I’ll give a quick summary:

I believe that the challenges facing the world today present an opportunity for KDE to grow in importance and reach due to a variety of favorable trends embedded in the chaos and conflict, including:

  • Increasing skepticism of traditional proprietary American big tech
  • Increasing EU public funding opportunities
  • Windows 11 sucking and losing its edge for gaming
  • *Postscript: MacOS Tahoe stumbling and being publicly mocked as well

But this is a window of opportunity that I think will close. So I encouraged everyone to think about how we can make KDE software ready for adoption from the following perspectives:

  • Being known about in the first place
  • Looking good enough to be taken seriously
  • Being easy to download or otherwise acquire
  • Working properly and having enough features
  • Having enough support resources and an articulable “lower total cost of ownership” story

Because if we’ve got all five, our offerings will start to look irresistible, and I think we’ll gain market share very quickly!

Kirigami Addons is a collection of supplementary components for Kirigami applications. Version 1.10.0 is a relatively minor release, introducing KirigamiApp and some improvements on Android regarding the new edge-to-edge support introduced in Android 15.

New Features

Aleix Pol Gonzalez added a KirigamiApp component which removes quite a bit of boilerplate to setup a Kirigami applications.

It now looks like this and will setup theming, crash reporting and more automatically in one place:

int main(int argc, char *argv[])
{
 KirigamiApp::App app(argc, argv);
 KirigamiApp kapp;

 // Set up KAboutData

 // QCommandLineParser creation and processing

 if (!kapp.start("org.kde.myapp", u"Main", new QQmlApplicationEngine)) {
 return -1;
 }
 return app.exec();
}

Bug fixes

Volker Krause added edge-to-edge support to the BottomDrawer and the MaximizedComponents.

Packager Section

You can find the package on download.kde.org and it has been signed with my GPG key.

KDE’s Android builds as well as CI/CD and development containers and VM images have finally been switched to Android SDK 35 a few weeks ago. That was about time, with Google requiring this at least for Play Store updates starting from September 1st. Here’s why this took so long.

SDK 35 and Qt 6.9

Starting with SDK 35 applications are drawing the entire screen, with the system status and navigation bars transparently overlaying the app content. This was possible in older SDKs already but generally wasn’t used by us. Now it’s the default and cannot be disabled anymore.

Not taking that into account would lead to parts of the application toolbar being inaccessible as the Android status bar handles input events there, as well as parts of the app UI being overdrawn by system controls, or ending up behind round screen corners, rounded screen edges or cameras placed in holes in the display.

To address that, Qt 6.9 introduced a new SafeArea API to tell the application which parts of the screen are safe to use for its content (see Qt’s blog post).

So as a first step just adding appropriate margins to an application window solves the worst problems, even if it might not look pretty. There were a few challenges with just that already though:

  • While the SafeArea API was added in Qt 6.9.0 it didn’t actually work there yet on Android. This was initially fixed by CR 635234 for 6.9.1 but reverted again before 6.9.1 was even released, CR 655735 reapplied the fix 6.9.2, which then was released on August 26th.
  • The module needing most changes for this is Kirigami, which as part of KDE Frameworks still has to support Qt 6.7. And since this is QML, version-based compile-time conditionals are not an option. So we ended up adding a polyfill QML module that adds a SafeArea API stub for older Qt versions. That’s good enough as on all platforms where we actually need it to report correct values we fortunately also have full control over the Qt version.
  • While that works and allows us to gradually implement support for safe areas across libraries, the Breeze style and in applications as needed, it requires at least Kirigami 6.15. That’s generally not a problem, however due to unrelated events partly outside of our control the KDE Flatpak SDK was stuck at KF 6.13, and thus any use of the SafeArea polyfill API would have broken Flatpak builds. This was eventually resolved on September 12th with an updated Flatpak runtime being published.

Qt 6.9.2

Besides a working SafeArea API, Qt 6.9.2 also sets sensible window margins by default on Android, so most of our apps will no longer totally break when built against SDK 35 fortunately. Nevertheless there’s a steadily growing list of changes to handle this properly. Examples:

There’s a bunch more similar changes needed before we get to a point when we can remove the default safe margins on application windows. That then gives us prettier results, in particular for apps that don’t just have gray toolbar at the top and bottom, such as KWeather.

Screenshot of KWeather in the Android emulator extending below the top and bottom bars from screen edge to screen edge.
KWeather extended behind status and navigation bar.

If you still spot content being drawn behind the status or navigation bars or screen cutouts somewhere, get in touch in the #kde-android Matrix channel!

Plasma Mobile

Rounded screen corners and screen cutouts aren’t just a thing on Android, we’ll need to deal with all of that on Linux as well eventually. This was a topic during the Plasma Sprint in Graz earlier this year. Most of the work is on the compositor and Wayland protocol side of this, from an application perspective this will eventually look the same as on Android, with the Qt platform integration plugin filling the the SafeArea margins accordingly. So all the work on this for Android will also benefit Plasma Mobile.

Outlook

Google gives us no time to rest unfortunately, by November 1st support for 16kB page sizes becomes mandatory. That “only” affects native code, which is just what practically all our apps and our entire dependency chain consists of…

Welcome to a new issue of This Week in Plasma!

This week the Plasma team really really really focused on bug fixing and UI polishing, in preparation for the Plasma 6.5 release next month.

So far relatively few regressions have been reported, so either we’ve done a really good job of fixing them or keeping Plasma generally stable, or people aren’t reporting enough bugs!

While I’d love to believe it’s the former, let me take the opportunity to request more bug reports! KDE Linux is a great way to test, and other distros also have their own package repos you can switch to for beta releases. Give it a try! I’d say the Plasma 6.5 beta is really quite good. And as a reminder, here’s what’s in it.

Notable New Features

Plasma 6.5.0

The colorblindness correction filters now feature a grayscale mode you can use to desaturate all the colors on the screen, or remove them entirely! (Leah B. link)

Monochrome mode in use, showing the Plasma desktop and System Settings in grayscale

Notable UI Improvements

Plasma 6.5.0

On System Settings’ Bluetooth page, the on/off switch now remains where it is after you interact with it. (Berk Elyesa Yıldırım, link)

When setting up a slideshow wallpaper, you can now click on the the entire grid item for each image to toggle it on or off, instead of having to aim for the tiny checkbox in the corner. (David Redondo, link)

Everything that lets you quickly see what’s on the desktop now consistently uses the term “Peek at desktop”. (Nate Graham, link)

When your system is out of inotify watches, and you fix it by clicking on the “fix it” button on the notification alerting you to the issue, the notification now goes away after it’s fixed. (Kai Uwe Broulik, link)

The Show Activity Manager widget now has a sane upper icon size limit, so it’s no longer ridiculously massive on really thick panels. (Niccolò Venerandi, link)

Show Activity Manager widget at a reasonable size on a 150px thick bottom panel

Modernized the Add Connection dialog on System Settings’ Networks page a bit. (Nate Graham, link)

Add Connections dialog looking nice and clean

Plasma 6.6.0

Improved the way cross-app activation happens on Wayland in a variety of ways. (Vlad Zahorodnii, link 1, link 2, link 3, link 4)

Improved the UI of the Colorblindness Correction feature on System Settings’ Accessibility page. (Nate Graham, link)

Improved colorblindness correction filter UI

System Settings’ Application Permissions page now shows Flatpak apps’ technical ID instead of their version number (because it’s not very useful there), and you can select and copy the text, too. (Nate Graham, link)

EasyEffects app on Flatpak Permissions page, with its id “com.github.wwmm.easyeffects” visible

Notable Bug Fixes

Plasma 6.4.6

Fixed a bug that could allow apps or websites that send notifications to make Plasma display the contents of file:///dev/urandom or other technical files, which could make the system bog down or crash. (David Edmundson, link)

Fixed a case where System Monitor could crash when you tried to save a customized graph as a new preset. (David Redondo, link)

Fixed two cases where the KMenuEdit app could crash: one when sorting items, and another when given a malformed .desktop file. (Nicolas Fella, link 1 and link 2)

Manually saving your session no longer breaks the Shut Down, Restart, and Log Out buttons in the Kickoff Application Launcher and other similar launcher menus. (David Edmundson, link)

Fixed a recent regression that made some maps apps not appear as options on System Settings’ Default Applications page. (Sune Vuorela, link)

Fixed a bug that broke the mouse button re-binding UI. (David Redondo, link)

Adding or removing images on System Settings’ Wallpapers page now activates the “Apply” button as expected. (Nate Graham, link)

Fixed a bug that made the Expand buttons on System Settings’ Shortcuts page sometimes get pushed partially out of view. (Nate Graham, link)

Plasma 6.5.0

Fixed a case where the session manager could crash when there were multiple logout notifications. (David Edmundson, link)

Certain misbehaving screens no longer trigger an infinite loop of connections and disconnection sounds after they go to sleep. (Akseli Lahtinen, link)

Fixed a bug that could cause RDP clients to show a black screen when connected to Plasma’s build in RDP server. (Jaxk Xu, link)

Fixed a bug that sometimes made it impossible to turn off the screen reader via its Meta+Alt+S keyboard shortcut (Sebastian Sauer, link)

Fixed multiple issues related to dragging widgets and rubberband selection rectangles on the desktop and in standalone Folder View widgets. (Akseli Lahtinen and Marco Martin, link 1 and link 2)

Fixed bug that made press-and-hold with a touchscreen to right-click unreliable on the Kickoff Application Launcher. (Marco Martin, link)

Fixed a few visual glitches in the panel configuration dialog when using the system with a right-to-left language like Arabic or Hebrew. (Niccolò Venerandi, link)

While in Plasma’s edit mode, dragging System Monitor widgets from the desktop to the panel or back no longer forces them into “Text Only” mode. (Marco Martin, link 1 and link 2)

The wallpaper grid now displays the wallpaper previews in the correct alphabetical order based on the visible title you can see. Previously it was sorting based on the filename, not the user-visible title. (David Redondo, link)

The weather widget now shows an apropriate icon for the “Hazy” weather condition from weather stations using the BBC weather provider. (Ismael Asensio, link)

Fixed a bug that could cause the activity and wallpaper switching shortcuts to be mis-named on System Settings’ Shortcuts page. (Nicolas Fella, link 1 and link 2)

Fixed a bug that could sometimes cause some misbehaving apps to end up with no app icon on their windows’ titlebars. (David Redondo, link)

Other bug information of note:

…But this is because we fixed a bunch and then added more as the result of bug triage! A Plasma developer’s work is never done.

Notable in Performance & Technical

Plasma 6.5.0

Dragging widgets on top of other widgets no longer bogs down the system with an amount of lag proportional to the refresh rate of the mouse used to drag it. Now it’s always nice and smooth. (Akseli Lahtinen, link)

How You Can Help

KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.

You can help KDE by becoming an active community member and getting involved somehow. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine! You don’t have to be a programmer, either; many other opportunities exist, too.

You can also help us by making a donation! A monetary contribution of any size will help us cover operational costs, salaries, travel expenses for contributors, and in general just keep KDE bringing Free Software to the world.

To get a new Plasma feature or a bugfix mentioned here, feel free to push a commit to the relevant merge request on invent.kde.org.

Friday, 26 September 2025

Hi again!

If you would like to review my latest presentation at Akademy 2025 in Berlin on Design System progress, please check here:

In this presentation, I go over the progress we have made so far in building foundational elements of the design system we would like to apply to Plasma.

Progress is now moving into migrating or recreating more components using PenPot. PenPot 2.10 now contains variables, like Figma, and this should help us develop a robust set of variables inside PenPot to execute designs faster.

But first, we have to create all the possible states in variable tables. The result should be pretty good. Foundations are “done” in the sense that they are entered into PenPot. Now comes the second set of components to build and we start pretty small.

For example, buttons, button groups, checkboxes, progress bars, etc. Anything that is a small functional component in the UI. However, as PenPot is still working on their next generation rendering engine, we are still dealing with performance delays. Don’t expect this work in PenPot to move super fast until their new engine is out.

Let’s go for my web review for the week 2025-39.


Why Europe’s new tech laws have the world on edge

Tags: tech, law, politics

When the European tech regulations encounter the changing geopolitical landscape… can we expect sparkles or the European Commission will cave in? I honestly hope it’s the former.

https://edri.org/our-work/why-europes-new-tech-laws-have-the-world-on-edge/


The EU’s €2T budget overlooks a key tech pillar: Open source

Tags: tech, politics, foss

The European Commission plans are indeed short sighted… Hopefully they’ll come to their senses and prioritize funds for FOSS.

https://thenextweb.com/news/eu-budget-open-source


Service offerings from Mastodon

Tags: tech, social-media, fediverse, foss, business

Definitely a good move to have more sustainable income for Mastodon.

https://blog.joinmastodon.org/2025/09/service-offerings-from-mastodon/


Internet Phone Book

Tags: tech, internet, culture

This is really a funny idea. I admit I’m curious about what it contains.

https://livingweb.metalabel.com/internetphonebook?ref=DenseDiscovery-357&variantId=1


Zoomer Tries RSS: In Praise of Yarr

Tags: tech, self-hosting, rss

Nice opinions on why to get back into RSS. Also comes with a few interesting options and suggestions (I’m happy with my current reader though, but who knows).

https://tudorr.ro/blog/2024-04-04-zoomer-tries-rss/


AI is impressive because we’ve failed at semantic web and personal computing

Tags: tech, ai, machine-learning, gpt, semantic, web, knowledge

There’s some truth in this piece. We never quite managed to really have a semantic web because knowledge engineering is actually hard… and we publish mostly unstructured or badly structured data. LLMs are thus used as a brute force attempt at layering some temporary and partial structure on top of otherwise unstructured data. They’re not really up to the task of course but it gives us a glimpse into what could have been.

https://rakhim.exotext.com/ai-is-impressive-because-we-ve-failed-at-semantic-web-and-personal-computing


Fifty Years of Open Source Software Supply-Chain Security

Tags: tech, foss, supply-chain, security

Nice overview of where we stand regarding supply chain security. Code reuse has never been so widespread and we still have fundamental issues leading to security problems.

https://cacm.acm.org/practice/fifty-years-of-open-source-software-supply-chain-security/


Ruby Central’s Attack on RubyGems

Tags: tech, ruby, supply-chain, community

This latest development in the Ruby community is rather concerning.

https://pup-e.com/goodbye-rubygems.pdf


Athlon 64: How AMD turned the tables on Intel

Tags: tech, hardware, cpu, intel, amd

If you’re wondering why the architecture is called “amd64” and why the itanium disappeared… this is why. It was a very good stunt from AMD back then.

https://dfarq.homeip.net/athlon-64-how-amd-turned-the-tables-on-intel/


Tags: tech, syncing, crdt

I don’t think that’s the only challenges but those are indeed two good things to keep in mind to ease the syncing.

https://marcobambini.substack.com/p/why-local-first-apps-havent-become


Postgres’ Original Project Goals: The Creators Totally Nailed It

Tags: tech, databases, postgresql

Indeed they did plan ahead very well. It’s no surprise if Postgres is doing so well this days.

https://www.crunchydata.com/blog/the-postgres-project-original-goals-and-how-the-creators-totally-nailed-it


Dotfiles with make

Tags: tech, tools, config, shell, make

Interesting use of make to manage your dotfiles. I have a tiny Python script for that, but this looks even more portable.

https://www.matheusmoreira.com/articles/managing-dotfiles-with-make


Under the hood: Vec

Tags: tech, rust, type-systems, memory, api

Just a little dive in the Rust standard library. It gives a good idea on how they pile layers to ensure safety while providing a nice API on top.

https://marma.dev/articles/2025/under-the-hood-vec-t


Be Simple

Tags: tech, complexity, design, performance, rust

Of course I agree with this. We should fight undue complexity at every step. This beast tends to creep up very quickly and we’re all guilty of it at times. This is indeed particularly obvious in otherwise rich languages like C++ or Rust. Those tend to push people to try to be clever and show off, often for “performance reasons”. This is rarely a good idea, think twice.

I would have titled the “defer refactoring” section differently though. Probably “defer abstracting” would have fit the bill better.

https://corrode.dev/blog/simple/


9 Things Every Fresh Graduate Should Know About Software Performance

Tags: tech, performance, optimization, profiling

This is definitely true. Keep all this in mind when dealing with performance questions: design properly for the task, profile and profile some more, focus on the hotspots, keep things maintainable.

https://johnnysswlab.com/9-things-every-fresh-graduate-should-know-about-software-performance/


Test state, not interactions

Tags: tech, ai, machine-learning, gpt, copilot, tests, tdd, design

Apparently in the age of people using LLMs for their tests, there is a bias toward mockist tests being produced. It’s a good time to remind why you likely don’t want them in most cases and limit the use of mocks to consider fakes and checking system state instead.

https://rednafi.com/go/test_state_not_interactions/


The Theatre of Pull Requests and Code Review

Tags: tech, codereview

Looks like I’m not alone advocating for commits which tell a story. Makes reviews so much nicer.

https://meks.quest/blogs/the-theatre-of-pull-requests-and-code-review


7 Stages of Software Tech Stack Adoption (You’re Probably in Stage 5)

Tags: tech, architecture, change, organization, product-management

I don’t think it’s always unfolding exactly like this but there’s some truth to that. Most projects see a “let’s rewrite it in X” phase, this is rarely the best outcome.

https://robbyonrails.com/articles/2025/09/20/seven-stages-of-tech-stack-adoption/


Unnecessary Anxiety in Software Development

Tags: tech, management, project-management, safety, anxiety

Indeed, stress can’t be completely eliminated… but at least build an environment where risky situations are reduced as much as possible. So that when stress or anxiety shows up you can take notice and react. Otherwise you’ll be creating vicious circles.

https://www.simplethread.com/unnecessary-anxiety-in-software-development/


How to Lead in a Room Full of Experts

Tags: tech, leadership, tech-lead

Nice musing about leadership in a technical context. It’s indeed not completely about having all the answers, it’s about facilitating the conversations and framing them properly.

https://idiallo.com/blog/how-to-lead-in-a-room-full-of-experts


The Management Skill Nobody Talks About

Tags: management, failure

Everyone makes mistakes eventually, the real difference is in how you deal with them.

https://terriblesoftware.org/2025/08/22/the-management-skill-nobody-talks-about/



Bye for now!