Wednesday, 15 April 2026
This April, KDE once again had a sprint in Graz, Austria. This one was deemed a "Mega Sprint" as unlike last year it was not just for Plasma, but for everything KDE-related from Plasma, goals, frameworks, apps, and more. We had a great turnout!

Amazingly I managed to go the whole trip this time without getting sick! 😊
We covered a lot of ground! Briefly, a few of the things off the top of my head:
Testing
Improving reliability, ease of running locally, documentation, and ensuring that test failures are reported by the CI in merge requests. We have some work to do for all of these to improve our testing story, and we collectively came to important decisions on how to move forwards.
Gardening
There is a lot, often not enough hours/energy to deal with it, and a lot of the time people just don't even know about the issue(s). Let's try: being more proactive about closing bad/stale MRs, creating a GitLab bot to help automate things that get people's attention, keep track of things by sending regular notices to the mailing list(s) similar to how the "failing ci" emails help people keep on top of things.
Gestures
A complicated topic! We had a lot of good discussions about the user flow/UI/UX, and I think we came to a really good place that sets us up for some excellent custom gestures/bindings with the fantastic work by Jakob & Natalie.
This sort of work is a really great example of something that would have been very difficult to do online, that we broke through with a lot of back and forth conversation/explanation/design at the sprint — which is exactly why we get together to unblock these things and make quick progress together!
Plasma Keyboard
We covered all of the large topics/issues that have been pending, for example: morekeys/full keyboard emulation, emojis, speech-to-text, Wayland protocols, testing, etc. So much that each could probably be its own blog post! We'll continue to see a whole lot of changes and improvements here; we really want plasma-keyboard to be a first-class experience for all sorts of input stories.

Graz
We were once again in lovely Graz, and the weather was a very welcome change from the brutal winter we've had in Canada — still had ice and snow when I left home! In addition to the mostly sunny weather and chirping birds, the city and its people were just fantastic once again. 💙
I can't say enough just how lovely Graz is, and how glad I was to get to visit again. 🇦🇹 Special shout out to Kevin Krammer, our KDE local who did so much to make this sprint great for us!
The fact that Graz is a lovely place to go is good news, since this year we'll be hosting Akademy there — I am already looking forward to coming back! :D



Tuesday, 14 April 2026
Sunday, 12 April 2026
I spent this week in Graz, the weekdays as part of the KDE Mega Sprint 2026 and Saturday attending Grazer Linuxtage 2026.
Before arriving in Graz I already did some work on the train from Vienna. I published a new version of kio-gopher so KDE Frameworks 6 applications can browse gopher sites and helped finish the review of KDominate, Albert Vaca's latest tactical game.
At the Sprint itself many things were achieved, too many to remember.
There was some discussion about improving release notes so they go into the appstream files and end up in lots of interesting places (apps.kde.org, Discover, etc).
I also talked a bit with David Edmundson on how to streamline our work in the KDE Security team.
Another important thing was that we introduced a way to help us enable the LeakSanitizer in more repositories (by ignoring leaks that are not our fault and that we can't control)
![]() |
| Non-planned group photo of Sprint attendees, a few are missing. Apologies! |
While we were at the Sprint it was announced that we will have Akademy 2026 also in Graz. So start preparing to visit Austria in late September!
Grazer Linuxtage was very nice, as far as I've heard also very successful in attendance, with the estimate being around 50% more than the previous year (hard to calculate when you don't require registration).
There were not many talks in English but the ones I attended were interesting. If you have time I would recommend giving them a quick skim to see if they interest you.
Transitous - Free and Open Public transport routing (from KDE's own Volker Krause)
What can we learn from Android for other embedded Linux systems security? (Every app in Android is a different Linux user)
LibreOffice: What we're doing, where we're going, and how you can help (Very fashionable given the latest rifts in the community (sadly))
How we hacked the Bavarian State with an Open Source Open Letter (About how to pressure administrations not to give Microsoft all of our tax money)
I gave a talk about KDE and the 30 years of the Linux desktop, that from the reaction of the attendees I think it was well received, that's always nice :)
The video from my talk is available at https://media.ccc.de/v/glt26-691-kde-30-years-of-the-linux-desktop
Thanks everyone involved in the organization and Kevin Krammer in particular for hosting us!
Friday, 10 April 2026
I was reading the latest edition of Kevin Ottens’ excellent weekly web review and one particular article caught my eye: “The Git Commands I Run Before Reading Any Code“. In a nutshell, you can use the git version control tool to quickly assess a project’s health, what breaks, who’s a key figure, how bad emergencies are, and so on.
So useful!
I immediately wanted to apply this to KDE projects. So I took the commands from the post and made some shell aliases and functions for convenience:
# git repo analysis toolsalias what-changes="echo 'What changes a lot?' && git log --format=format: --name-only --since='1 year ago' | rg -v 'po$|json$|desktop$' | sort | uniq -c | sort -nr | head -20"alias what-breaks="echo 'What breaks a lot?' && git log -i -E --grep='fix|bug|broke|bad|wrong|incorrect|problem' --name-only --format='' | sort | uniq -c | sort -nr | head -20"alias emergencies="echo 'And what were the emergencies?' && git log --oneline --since='1 year ago' | grep -iE 'revert|hotfix|emergency|urgent|rollback'"alias momentum="echo \"What's the project's momentum over the past 5 years?\" && git log --format='%ad' --date=format:'%Y-%m' | sort | uniq -c | tail -n 60"alias maintainers-recently="echo \"Who's been driving this project in the past year?\" && git shortlog -sn --no-merges --since='1 year ago' | rg -v 'l10n daemon script' | head -n 30"alias maintainers-alltime="echo 'And what about for all time?' && git shortlog -sn --no-merges | rg -v 'l10n daemon script' | head -n 30"function repo-analysis { what-changes echo what-breaks echo emergencies echo momentum echo maintainers-recently echo maintainers-alltime}Now let’s run it on Plasma. Here’s plasma-workspace, the core of Plasma:
$ git clone ssh://git@invent.kde.org/plasma/plasma-workspace.git
$ cd plasma-workspace
$ repo-analysis
What changes a lot?
1519
38 CMakeLists.txt
29 shell/shellcorona.cpp
24 runners/services/servicerunner.cpp
21 wallpapers/image/imagepackage/contents/ui/config.qml
19 libnotificationmanager/notifications.cpp
18 shell/org.kde.plasmashell.desktop.cmake
18 devicenotifications/devicenotifications.cpp
17 kcms/lookandfeel/kcm.cpp
16 wallpapers/image/plugin/model/packagelistmodel.cpp
16 kcms/cursortheme/xcursor/xcursor.knsrc
15 wallpapers/image/plugin/model/imagelistmodel.cpp
15 applets/notifications/global/Globals.qml
15 applets/devicenotifier/devicecontrol.cpp
14 wallpapers/image/plugin/imagebackend.cpp
14 shell/panelview.cpp
14 .kde-ci.yml
14 applets/systemtray/systemtray.cpp
13 runners/services/autotests/servicerunnertest.cpp
12 krunner/qml/RunCommand.qml
What breaks a lot?
225 shell/shellcorona.cpp
183 shell/panelview.cpp
83 CMakeLists.txt
74 applets/systemtray/package/contents/ui/main.qml
71 applets/digital-clock/package/contents/ui/DigitalClock.qml
63 klipper/klipper.cpp
62 applets/notifications/package/contents/ui/NotificationItem.qml
58 wallpapers/image/imagepackage/contents/ui/config.qml
56 shell/desktopview.cpp
56 libtaskmanager/tasksmodel.cpp
54 shell/main.cpp
54 applets/systemtray/systemtray.cpp
53 shell/shellcorona.h
52 krunner/view.cpp
48 applets/digital-clock/package/contents/ui/CalendarView.qml
47 runners/services/servicerunner.cpp
46 wallpapers/image/imagepackage/contents/ui/main.qml
45 applets/notifications/package/contents/ui/NotificationPopup.qml
44 applets/systemtray/package/contents/ui/ExpandedRepresentation.qml
43 startkde/startplasma.cpp
And what were the emergencies?
4f526a7bd1 Revert “applets/systemtray: Prevent popups from overlapping with the panel”
dca5788fee lookandfeel/components: Revert Plasma::setupPlasmaStyle
2c0fd34541 Revert “ContainmentLayoutManager: send recursive mouse release events too”
b6b230f4ff Revert “Read selenium-webdriver-at-spi-run location from CMake”
b8651b56f6 hotfix: Remove doc translations without actual doc
1f43f576e8 Revert “Add forceImageAnimation property to force animated image play”
f0349b6c81 hotfix: remove stray .po file
3ff7ae4269 Revert “CI: enable parallel testing”
83bebc7896 Revert “Limit evaluateScript execution at 2 seconds”
4f45f672be Revert “kcms/componentchooser: Don’t offer NoDisplay services”
3bf0ff8f56 Revert “Disable linux-qt6-next while the regression in Qt gets fixed”
80996f0633 Revert “kcms/wallpaper: set roleNames for WallpaperConfigModel”
What’s the project’s momentum over the past 5 years?
148 2021-05
87 2021-06
62 2021-07
85 2021-08
121 2021-09
106 2021-10
146 2021-11
190 2021-12
191 2022-01
84 2022-02
168 2022-03
130 2022-04
146 2022-05
141 2022-06
136 2022-07
107 2022-08
232 2022-09
234 2022-10
181 2022-11
150 2022-12
154 2023-01
161 2023-02
156 2023-03
156 2023-04
163 2023-05
137 2023-06
186 2023-07
190 2023-08
275 2023-09
226 2023-10
283 2023-11
157 2023-12
131 2024-01
147 2024-02
249 2024-03
180 2024-04
188 2024-05
158 2024-06
128 2024-07
146 2024-08
169 2024-09
156 2024-10
116 2024-11
98 2024-12
145 2025-01
126 2025-02
120 2025-03
116 2025-04
131 2025-05
131 2025-06
132 2025-07
115 2025-08
110 2025-09
97 2025-10
147 2025-11
114 2025-12
140 2026-01
131 2026-02
119 2026-03
44 2026-04
Who’s been driving this project in the past year?
116 Vlad Zahorodnii
113 Nicolas Fella
87 Christoph Wolk
82 Fushan Wen
78 Nate Graham
66 Kai Uwe Broulik
48 Bohdan Onofriichuk
37 Harald Sitter
34 Tobias Fella
31 Marco Martin
30 David Edmundson
25 Akseli Lahtinen
21 Ismael Asensio
17 David Redondo
16 Niccolò Venerandi
15 Bhushan Shah
11 Alexander Lohnau
11 Kristen McWilliam
9 Oliver Beard
9 Shubham Arora
8 Alexey Rochev
8 Han Young
8 Philipp Kiemle
7 Albert Astals Cid
6 Aleix Pol
6 Méven Car
5 Devin Lin
5 Joshua Goins
4 Alexander Wilms
4 Arjen Hiemstra
And what about for all time?
1543 Fushan Wen
1497 Marco Martin
1374 Kai Uwe Broulik
1030 David Edmundson
772 Nate Graham
658 Alexander Lohnau
551 Aleix Pol
548 Nicolas Fella
438 ivan tkachenko
385 Eike Hein
264 Sebastian Kügler
250 Martin Gräßlin
238 Harald Sitter
232 Martin Klapetek
223 Jonathan Riddell
207 Vlad Zahorodnii
194 David Redondo
190 Friedrich W. H. Kossebau
189 Laurent Montel
144 Bhushan Shah
134 Christoph Wolk
134 Ismael Asensio
126 Lukáš Tinkl
121 Niccolò Venerandi
117 Méven Car
105 Natalie Clarius
91 Konrad Materka
80 Vishesh Handa
80 Volker Krause
79 Ivan Čukić
ShellCorona both changing and breaking a lot is no great surprise to me; it’s fiddly and complicated. We need to do something about that. The number of emergencies doesn’t look too bad, and momentum feels fine too. The project also appears to have a nice healthy diversity of contributors. Excellent!
It’s been quite illuminating to run these tools on KDE projects that I’m both more and less familiar with. Give it a try!
Let’s go for my web review for the week 2026-15.
France Launches Government Linux Desktop Plan as Windows Exit Begins
Tags: tech, foss, politics, desktop, france, europe
Well, what can I say? This is excellent news and I’m excited to see it happen. Let’s hope more governments do the same. It’ll take a while of course, so we’ll have to be patient.
https://linuxiac.com/france-launches-government-linux-desktop-plan-as-windows-exit-begins/
The Free Market Lie: Why Switzerland Has 25 Gbit Internet and America Doesn’t
Tags: tech, infrastructure, economics
A good explanation and illustration of how natural monopolies work. This is why you want to regulate infrastructure properly.
https://sschueller.github.io/posts/the-free-market-lie/
You can absolutely have an RSS dependent website in 2026
Tags: tech, blog, rss
The stats are clear there. Beside in term of experience, RSS feeds are so superior to newsletters… I wish more bloggers would give up on the newsletter focus. There’s also a good point in this post: as soon as you have a newsletter you will sit on a database of email addresses, it’s definitely a liability.
https://matduggan.com/you-can-absolutely-have-an-rss-dependent-website-in-2026/
The Downfall and Enshittification of Microsoft in 2026
Tags: tech, microsoft, github, apple, linux, business, product-management
Indeed, the giant managed to make itself weak. This means opportunities for other ecosystems to grow faster than before.
https://caio.ca/blog/the-downfall-and-enshittification-of-microsoft.html
Let’s talk about LLMs
Tags: tech, ai, machine-learning, copilot, productivity, craftsmanship
Long but very precise piece about why you can likely ignore LLM for development purpose. Starting from older Fred Brooks work is spot on. Indeed whatever will remain of LLM based tools in the years to come, it’s much smarter to focus on fundamental skills than chase the new tools. At least, I’m trying to do my share in getting myself and others better at the craft.
https://www.b-list.org/weblog/2026/apr/09/llms/
Almost Half of US Data Centers That Were Supposed to Open This Year Slated to Be Canceled or Delayed
Tags: tech, ai, machine-learning, gpt, energy, economics, infrastructure
It’s getting clearer that the industrial LLM complex will have a hard time meeting its targets.
https://futurism.com/science-energy/data-centers-construction-supply
“Cognitive surrender” leads AI users to abandon logical thinking, research finds
Tags: tech, ai, machine-learning, gpt, cognition, bias
It feels like it’s supercharging an old bias… We tend to confuse confidence for competence.
The machines are fine. I’m worried about us.
Tags: tech, ai, machine-learning, gpt, copilot, learning, science, research
Excellent piece, it show quite well the problem of skipping the “grunt work”. Without it you can’t really learn your trade (be it astrophysics or anything else). It also shows how the incentives on scientific careers are wrong. It’s not new, but when LLM agents become available, things are definitely changing for the worst.
https://ergosphere.blog/posts/the-machines-are-fine/
Giving LLMs a Formal Reasoning Engine for Code Analysis
Tags: tech, ai, machine-learning, copilot, prolog, logic
Definitely interesting approach. I think neurosymbolic approaches are what we ultimately need so I’m probably biased. At least it means using LLMs for what they’re good at (language skills) and only that. Then rely on proper code symbolic models which do the reasoning heavy lifting. I’d expect it can give nice output with smaller models.
https://yogthos.net/posts/2026-04-08-neurosymbolic-mcp.html
Open source security at Astral
Tags: tech, security, ci, supply-chain
Lots of interesting measures to reduce the risk of supply chain issues. Definitely to be considered on your projects.
https://astral.sh/blog/open-source-security-at-astral
another memory corruption case
Tags: tech, hardware, memory, failure
Failing DRAM chips are real. Here is the case of debugging a single bit flip.
https://trofi.github.io/posts/347-another-memory-corruption-case.html
The Git Commands I Run Before Reading Any Code
Tags: tech, git, version-control, team, audit
Nice little commands to use to discover quickly the state of a code base… Or rather of its team.
https://piechowski.io/post/git-commands-before-reading-code/
Zsh: select generated files with (om[1]) glob qualifiers
Tags: tech, zsh, shell
Oh this is super neat and convenient! I didn’t know about those glob patterns modifiers in zsh.
https://adamj.eu/tech/2026/01/27/zsh-om1-glob-qualifiers/
Two little scripts: addup and sumup
Tags: tech, unix, shell, scripting
A friendly reminder that one can go far mainly with awk.
https://utcc.utoronto.ca/~cks/space/blog/sysadmin/LittleScriptsIX
All of the String types
Tags: tech, memory, unicode, encodings
So many string types! They all have a purpose of course. It’s a good reminder that something mundane like a string type is not that simple.
https://lambdalemon.gay/posts/string-types
Stamp It! All Programs Must Report Their Version
Tags: tech, version-control, debugging
Examples of how i3 and go stamp versions. This is indeed good habits to ease dealing with errors in production.
https://michael.stapelberg.ch/posts/2026-04-05-stamp-it-all-programs-must-report-their-version/
The MVC Mistake
Tags: tech, architecture, complexity
Shows the problem with layer cakes in applications or how you might want to go toward onion architectures.
https://entropicthoughts.com/mvc-mistake
The Mouse That Roared
Tags: tech, leadership, tests, tdd, agile, organisation
Cryptic title to be honest. But this is a good explanation of why any “agile transformation” better start close to the code and in particular with automated tests. If you can crack that nut (and it takes time), the rest will follow naturally.
https://codemanship.wordpress.com/2026/03/30/the-mouse-that-roared/
If you thought the speed of writing code was your problem - you have bigger problems
Tags: tech, productivity, organisation, leadership, ai, machine-learning, copilot
So much this… There are so many organisational problems that churning code faster is likely not what you need. When did we start to obsess with the number of lines of code?
Are We Idiocracy Yet?
Tags: satire, culture
Getting there, one day at a time.
Bye for now!
I’ve been on the Akademy organizing team and contributing in various cat-herding capacities since 2023, but this is the first time I’ve joined other contributors for a Sprint.
My mission this week has been to scout locations and activities for the Akademy conference later this year. One of the members of our local organizing team let me (temporarily) adopt their stuffed Konqi, so I have been wandering around Graz and the state of Styria with a stuffed dragon taking a bunch of pictures, drinking Aperol Spritz, eating chocolate, and petting animals to make sure that all the places we visit in September will be fun and accessible for everyone who joins.



This year KDE turns 30, so we are planning a big celebration for Akademy. I have been thrilled to discover that Graz is very accessible. The town tourism website has a guide for navigating with a wheelchair or other mobility devices; many restaurants have mocktails or homemade juice/tea options for non-alcoholic drinks; the city is full of plazas you can sit and sip a coffee in for hours when you need a break from walking, and there is an abundance of parks and fountains that children can expel their energy playing in.
I can’t wait to introduce the KDE community to Graz this September!
Akademy 2026: Call for Participation
Akademy 2026 will be a hybrid event held simultaneously in Graz, Austria, and online. The Call for Participation is open! Send us your talk ideas and abstracts.
Why talk at #Akademy2026
Akademy attracts artists, designers, developers, translators, users, writers, companies, public institutions and many other KDE friends and contributors. We celebrate the achievements and help determine the direction for the next year. We all meet together to discuss and plan the future of the Community and the technology we build. You will meet people who are receptive to your ideas and can help you with their skills and experience. You will get an opportunity to present your application, share ideas and best practices, or gain new contributors. These sessions offer the opportunity to gain support and make your plans for your project become a reality.
How to get started
Do not worry about details or slides right now. Just think of an idea and submit some basic details about your talk. You can edit your abstract after the initial submission. All topics relevant to the KDE Community are welcome. Here are a few ideas to get you started on your proposal:
- How KDE can empower building robust communities in changing political climates
- Work towards KDE's goals: Streamlined Application Development Experience, We care about your Input, and KDE Needs You
- Giving people more digital freedom, sovereignty, and autonomy with KDE software
- Advice on how to participate for new users, intermediates and experts
- New developments/plans for KDE Frameworks, Plasma, Applications and other projects
- 30 years of KDE: achievements, highlights, and what’s next
- Anything else that might interest an audience of long-time, new, and potential KDE contributors!
To get an idea of talks that were accepted, check out the program from previous years: 2025 2024, 2023, 2022, 2021, 2020, 2019, 2018, and 2017.
For more details and information, visit Call for Participation.
In my opinion, KDE Connect is one of the finest pieces of software KDE has ever produced. It lets you easily pair your devices and makes them work together. Copy some text on your computer, paste it on your phone. A call comes in and the video you’re watching in your browser pauses. How cool is that? For the past couple of weeks I’ve been working on even tighter integration between KDE Connect and the Plasma desktop.

By adding a corresponding back end to Solid, KDE’s hardware abstraction framework, your phone’s battery status will show up in the “Power & Battery” popup just like a wireless mouse would. The key advantage of reporting a KDE Connect device as storage media is that it can show up in various places just like a USB drive would, including the Places panel in Dolphin and “Disk & Devices” in Plasma’s system tray. Right now, the Places panel entry is actually manually added by kdeconnectd creating a bookmark. This also means that any modifications done to the entry, such as hiding it, will be lost once the device disappears. If instead it is a proper Solid device with a unique identifier, the Places panel will remember that the device was hidden next time it is discovered. Additionally, PowerDevil, Plasma’s power management daemon, already automatically issues a notification when a connected external device runs low on battery.
Now that the fact that you can browse your phone’s storage remotely via KDE Connect is more obvious, I spent some time improving the user experience when doing so. Since KDE Connect is cross-desktop and cross-platform it uses sshfs to provide access to the phone. It doesn’t implement a proper KIO worker like we normally would since that really only works in KDE applications. This unfortunately comes with a couple of downsides: for example, the device is mounted into /run/user/<uid>/<deviceid> which is gibberish that will be shown to the user in the address bar. More importantly, though, it makes the file manager think it’s a local path (which is normally fast to access) and could lead to UI freezes when the connection is slow or unstable.
To improve this, I made use of KIO’s ForwardingWorkerBase. This is a tiny KIO worker that just rewrites a URL and forwards it to a different location. This way, the application sees a “remote” kdeconnect://device/path URL and keeps everything nice and asynchronous but under the hood still uses the sshfs infrastructure we already have. It’s what the magic desktop:/ URL uses that parses the name of .desktop files (so your get nice application names) but other than that merely reads from /home/<user>/Desktop. This also makes the entry in the Places panel match up with the URL being browsed and ultimately makes the device’s name appear on the address bar instead of an ugly UUID.

While at it, I also added a “KDE Connect Devices” link to the “Network” folder, like we already have for Bluetooth, MTP, and Apple devices. Finally, when there is only a single storage location on the device, such as “Internal Shared Storage”, it redirects into it automatically. This saves one click when opening the device and puts you directly where your stuff is. The back end has just been merged and will be released next month as part of KDE Frameworks 6.26. However, since there’s still a bunch of infrastructure work needed around it, the back end is disabled by default. We will likely need to have at least KDE Gear 26.08 and Plasma 6.7 released that will include some necessary changes before we can flip the switch.
If you run latest KDE git builds, please give it a try and let me know what you think! You need to set the SOLID_ENABLE_KDECONNECT=1 environment variable to use it. To enable all debug output to aid debugging, set QT_LOGGING_RULES=kf.solid.backends.kdeconnect*=true or use KDebugSettings.






