The long ARM of KDE
by Igor Ljubuncic on 14 October 2022
With over 100 applications available in the Snap Store, KDE is by far the biggest publisher of snaps around. What unifies this impressive portfolio is the fact that all of these snaps are made for the x86 platform. Not anymore. Now, don’t panic! The x86 snaps are not going anywhere. But ARM-supported KDE snaps are on the way, and this article will tell you a bit more about this endeavor.
Faster development, new horizons
In the past several years, with the rapid explosion and popularity of small form-factor computers like the Raspberry Pi, the interest, the need, and the requirement for non-Intel architecture application support have grown accordingly in the home and desktop spaces. Today, you can easily flash a Linux desktop image onto an SD card and boot your favorite distro on a Pi board. But desktop operating systems are only as good as the applications that can run on top of them.
ARM support for Linux software is steadily improving. This brings into focus the new application package formats and frameworks like snaps. After all, one of the primary advantages of snaps is the cross-distro compatibility, and there is no reason why this shouldn’t extend to all of the supported hardware architectures.
The KDE team has been working hard on making it happen, slowly adapting their significant range of applications, currently available as snaps for the x86 (64-bit) architecture, to also work on the ARM devices.
I spoke to KDE’s Jonathan Esk-Riddell about this effort. He outlined two main challenges. The first is the need for a robust development environment. The second is the ability to thoroughly test the snaps on target devices. In both cases, there’s good progress.
Here, the KDE team has adopted a rather interesting hybrid approach to making their snaps work on ARM. One option to build snaps for a target architecture is to do that locally. Not an issue with Intel-based hardware. With ARM devices, this is trickier, because quite often, it is not easy to source (for both logistical and practical reasons) ARM devices that are powerful enough to support a fast build pipeline. An alternative solution is to use the snap remote build capability, which allows any snap developer to send remote build jobs to Launchpad via the snapcraft command line, and build applications for six target platforms.
What the KDE does is quite clever. In the KDE (neon) build environment, a watcher service is set to look for updates in git repositories that are configured to run on KDE Invent. This in turn activates the CI job that runs the Snapcraft remote build, which then dispatches the task to Launchpad. If the build is successful, it is uploaded to the candidate channel. If the snap works as intended, additional manual testing is done, and finally, the snap is published to the stable channel.
The GCompris snap running on a Pi.
The main reason behind this setup is that building locally on neon proved out to consume too much time and effort. The system might have been out of date, or it might have only been configured for amd64, which presented a problem for a fast, smooth, streamlined build pipeline. Furthermore, on a strategic level, the team wants to move all of their jobs to KDE Invent.
With remote builds, the end result is that the KDE team can now easily create snaps for the ARM platform. This is important, as they ship various ARM machines like the Steamdeck, Chromebook, and Pinephone running KDE, and the snaps could be rather useful here. And let’s not forget Plasma Bigscreen!
Looking forward
The KDE team tells us there are more goodies coming soon. This means more snaps being ported to ARM, and more applications being added to the Snap Store. People developing Qt and KDE software will also be pleased to hear that Snapcraft 7.1.2 onwards comes with a new KDE neon extension, which leverages the latest tooling and libraries in the Qt/KDE domain, allowing for simpler, faster snap builds and publication. And there’s quite some interest, too. The best indication of the success and popularity of the KDE frameworks snaps is the fact that there are well over one million active devices using them! With the current flurry of activity in the KDE space, we’re bound to see many more soon.
If you have any questions or comments on this topic, or you’d like to inquire about the KDE snaps development for ARM, you can reach out to the KDE team directly, or join our forum and post a thread there. Until the next time.
Photo by Sebastian Dumitru on Unsplash.