Skip to content

Friday, 13 March 2026

Let’s go for my web review for the week 2026-11.


Joint statement of scientists and researchers on Age Assurance

Tags: tech, law, surveillance

This is (IMNSHO) a very important open letter. This confirms to me that the whole set of age verification laws we’re seeing popup everywhere is severely misguided. Had my suspicions before of course but it’s getting clearer with this one. We should stay clear from those laws as a profession, it’s important to not comply, it’d be a disservice to our users.

https://csa-scientist-open-letter.org/ageverif-Feb2026


Secure Communication, Buried In A News App

Tags: tech, cryptography, security, privacy, journalism

Not sure it’ll keep being efficient if the political heat keeps going up. Still this is a nice idea.

https://hackaday.com/2026/03/09/secure-communication-buried-in-a-news-app/


LibreOffice criticizes EU Commission over proprietary XLSX formats

Tags: tech, data, foss, law, europe

We should indeed put an end to those proprietary formats. It’s sad to see the EU Commission contradict itself there.

https://www.heise.de/en/news/LibreOffice-criticizes-EU-Commission-over-proprietary-XLSX-formats-11202165.html


Tags: tech, foss, ai, machine-learning, copilot, values, commons, law

Excellent piece, indeed legal is not the same as legitimate. More often than not the law is lagging behind and things might be wrongly “fixed” at a later date. In that interval that’s when our communities need to build its own tools to protect the commons. We’re clearly reaching such an inflection point. Interestingly, I think there’s is a difference of reaction between the people with a Free Software culture and the ones with an Open Source culture.

https://writings.hongminhee.org/2026/03/legal-vs-legitimate/


Do the Illegible

Tags: tech, programming, engineering, ai, machine-learning, copilot

Obviously the essay from Peter Naur keeps popping up lately. It feels like an important piece, especially in the current atmosphere of vibe coding. This article lays out quite well why vibe coding is the opposite of what we should be doing.

https://ashwinsundar.com/posts/legibility-and-programming/


Moonforge

Tags: tech, linux, embedded

An initiative to monitor I guess. There’s clearly a need for a more “opinionated” setup for Yocto based embedded systems, this is going in that direction.

https://moonforgelinux.org/


The hidden compile-time cost of C++26 reflection

Tags: tech, c++, reflection, metaprogramming

Interestingly the issue for the compile time is not so much the feature itself but the STL headers required. It makes PCH pretty much mandatory.

https://vittorioromeo.com/index/blog/refl_compiletime.html


How to stop fighting with coherence and start writing context-generic trait impls

Tags: tech, rust, type-systems

Looks like an interesting approach to lift some of the limitations around the Rust trait system. The learning curve doesn’t look too great though, clearly requires effort to get into.

https://contextgeneric.dev/blog/rustlab-2025-coherence/


Parametricity, or Comptime is Bonkers

Tags: tech, zig, rust, type-systems, generics

Interesting look at Zig’s comptime feature. It’s not a purely Zig post though, does a good job of explaining parametricity and the implications of loosing it.

https://noelwelsh.com/posts/comptime-is-bonkers/


Ensuring correctness through the type system

Tags: tech, type-systems, safety

A good illustration of making illegal states unrepresentable. This definitely helps with code safety.

https://lindbakk.com/blog/ensuring-correctness-through-the-type-system


SPA vs. Hypermedia: Real-World Performance Under Load

Tags: tech, web, frontend, complexity

Probably somewhat self serving so the numbers would need to be confirmed with other experiments. That said that case gives a good idea of the price in terms of complexity and resources when choosing to go for an SPA.

https://zweiundeins.gmbh/en/methodology/spa-vs-hypermedia-real-world-performance-under-load


FontCrafter: Create Your Handwriting Font for Free

Tags: tech, fonts

This is definitely a cool project. I like the idea.

https://arcade.pirillo.com/fontcrafter.html


Code Reviews Do Find Bugs

Tags: tech, codereview, science

In praise of code reviews. This article does a good job showing all the advantages if properly managed. Teams have to pay attention to latency but otherwise you get lots of benefits for not so much time spent.

https://entropicthoughts.com/code-reviews-do-find-bugs


On The Need For Understanding

Tags: tech, programming, culture, hacking, debugging, complexity, foss

Yes, we have lots of layers nowadays. But you can read them to figure out when something doesn’t work like you expect. This is one of the most important skills of the trade.

https://blog.information-superhighway.net/on-the-need-for-understanding


The story of one of my worst programming failures

Tags: tech, system, programming, failure

There’s always an interesting lesson in this kind of failures. Here clearly it is in part a story of unchecked trust, and not planning for a bigger system. It came with real consequences too.

https://utcc.utoronto.ca/~cks/space/blog/programming/DevelopedTooSmallFailure


Prioritize Relatively

Tags: leadership, management, project-management

The point is interesting. Priorities are indeed relative and dynamic. It’s impossible to put an “absolute priority value” on what needs to be done.

https://boz.com/articles/prioritize-relatively


Autonomy and Clarity in Leadership Styles

Tags: leadership, management, organisation

Interesting framework of different leadership styles. They all come with their own pros and cons of course.

https://bjorg.bjornroche.com/management/autonomy-vs-clarity/



Bye for now!

I went to FOSSASIA Summit 2026 in Bangkok, and I took the time to write this report because of how much things happened in three days, also because I am not much of a blogger.

FOSSASIA is Asia's big open source event and this year it took place at True Digital Park West - a rather exageratted shopping mall and convention center, which was great because whenever I was hungry I could just quickly go eat some lovely thai dishes, and back.

I’m happy to announce the new release of KPhotoAlbum, the photo management software for KDE/Linux – version 6.2.0!

Also, I’d like to introduce our new contributor Randall Rude (a.k.a. rsquared), who already worked quite hard on improving our beloved project – welcome to the team :-)

The following changes have been documented in the ChangeLog:

Added
  • Display number of images on collapsed stacks (#223213)
  • Add commandline option --find-new-files as a synonym for --search. In the future, --search may become deprecated at some point.
  • Add support for QtMultimedia video backend
  • Make default annotation mode in viewer configurable (#474317)
  • Improved diagnostic messages for JPEG decoding errors
  • Improved diagnostic messages for invalid file names in database
Changed
  • Thumbnail cache and video thumbnail cache directories are now always ignored while searching for new images.
  • Do not automatically select an image cluster on the map when moving the map if the mouse action started on an image cluster.
Fixed
  • Allow large images up to an in-memory size of 2GB (#500200)
  • Make "Clear form" button in search dialog actually clear all form fields.
  • Allow setting keyboard shortcuts for "Clear Form" and "Options..." items in Annotation/Search dialog (#306044)
  • Fix detection of KDcraw during build time
  • Fix appearance of mouse cursor in the map view (i.e. indicate clickable items on the map)
  • Fix display of EXIF date/time data (#511546)
  • Fix several warnings in the console output (#505015)
  • Use embedded 'creation_time' data in video files instead of file creation time (#472520)
  • Allow saving the Annotation Dialog's layout either globally (as a template for all databases) or per-database (#513933)
  • Prevent unnecessary entries in the block list (#512207)
  • Prevent creation of .kim files over 4GB (mitigates bug #512199)
  • Fix compilation without Marble
  • Improved formatting of "time ago" texts

According to git log, the following individuals contributed code (in alphabetical order):

  • Johnny Jazeix
  • Tobias Leupold
  • Randall Rude
  • Andreas Sturmlechner
  • Friedrich W. H. Kossebau
  • Johannes Zarl-Zierl
  • Justin Zobel

Thanks to everybody for putting work in this release!

— Tobias

Plasma Keyboard has interesting news to share!

Plasma Keyboard started out life as KDE's virtual / on-screen keyboard, and now it is evolving to also support tools and features for our physical keyboards.

FLOSS/Fund

Plasma Keyboard was granted funding from the FLOSS/Fund program's second tranche, for which we are very grateful! This funding has ensured we will be able to put some sustained effort towards refining and improving the project — and I have been doing just that for the past couple of months.

I began by getting more familiar with the codebase, lists of open bugs, and feature requests. I also did some refactoring and cleanup, improved the CI and MR review process, etc.

Diacritics

https://invent.kde.org/plasma/plasma-keyboard/-/merge_requests/83

The first feature I tackled is the first one that is for physical keyboards rather than virtual/on-screen keyboards: diacritics — the variants of a character that indicate a difference in pronunciation, such as ç, ñ, or ü. Though it is more than just diacritics, because it also supports common/popular symbols, such as ™, — (em-dash), →, ¡, ‽, ¼, ≥, ≠, etc.

Diacritics light theme screenshot

Diacritics dark theme screenshot

If you'd like an idea of which diacritics and symbols are currently included, you can check out the base mapping json. Further mappings are included depending on which language(s) you have enabled for Plasma Keyboard in your system settings.

This feature allows users to long-press a key on their physical keyboard to access a popup menu of diacritics and symbols related to that key, and select one to input it. This is a common feature on mobile keyboards, and I personally think this is a great improvement over using something like a compose key for the same purpose.

Selecting an option from the popup menu can be done multiple ways:

  • Pressing the associated keyboard number key shown below the option
  • Clicking on the option with the mouse
  • Using the arrow keys to navigate to the option and pressing Enter

This was pretty challenging to implement; I previously had no experience with Wayland protocols or input methods, so it required a lot of research, reading, learning, and experimentation to figure it out. Difficult, but rewarding!

One of the really cool things about Plasma Keyboard is that it is available as a Flatpak — so if you are adventurous and want to try out the diacritics feature before it is released to the stable version, you can do so with the nightly Flatpak builds!

flatpak install --user --or-update https://cdn.kde.org/flatpak/plasma-keyboard-nightly/org.kde.plasma.keyboard.flatpakref

Then simply enable Plasma Keyboard in System SettingsKeyboardVirtual Keyboard! 🤯 If you already have a version of Plasma Keyboard installed, a quick restart or log out/in might be needed for the new version to take effect.

Future Plans

In addition to the diacritics feature itself, I also laid the groundwork with it for future features that will make use of the same overlay/popup system and physical keyboard integration — stay tuned for more news on that! 😉

There are a bunch of other plans for features and improvements that we'd like to work on, for example: swipe typing, voice typing, making the on-screen keyboard movable and resizable, adding tests and improving performance and reliability, etc.

There is a lot of work to be done, and we are excited to keep improving Plasma Keyboard and making it even more powerful and user-friendly — just like the rest of Plasma! 🚀

If you are interested in contributing, please check out the project on KDE's GitLab: https://invent.kde.org/plasma/plasma-keyboard

Thursday, 12 March 2026

In two sessions, the Krita developers discussed what they want to work on in 2026, after Krita 5.3 and Krita 6.0 are released. That is, actually, one release, but one version is built with Qt5 and one with Qt6. The release is planned for March 24.

Krita Sketch User Interface

Last year, Timotheé created a prototype for a mobile user interface for Krita (there is an APK you can install to play with). At the same time Wolthera finished her work on the new text shape and text tools. Both projects use the QML and QtQuick features of Qt to implement the user interface.

This year, we intend to work on replacing the tool option dockers with QML so we can use those both in the mobile and in the desktop version of Krita.

Alvin Wong experimented in 2025 with embedding an OpenGL based canvas inside a QML application. Dmitry and Carsten will continue that work and see whether we can use Krita's canvas to show an image inside Timotheé's prototype.

Agata has already started work to make the current user interface more suitable for tablet use.

Working with Files

There are a couple of plans we have with regards to file handling. On Android, working with the file sandboxing is seriously complicated, and we're looking into a solution for that.

The Krita .kra file format is pretty old by now (not 25 years, since it came into being a few years after Krita started being developed). It can, obviously, load and save everything Krita can handle, but it is not a particular fast file format. Carsten proposed to look into an SQLlite based file format. This could potentially mean that we could save the image after every change without the user noticing, making saving completely transparent.

Agata is already working on improving the autosave dialog. There is already a mockup for this.

Ivan is looking into sharing settings and resources across a user's devices, ideally in a cross-platform way.

Color Management

While Krita supports HDR displays, there are issues with the user interface. Wolthera wants to start improving there.

Now that Qt 6 includes support for color management, CMYK and higher-bit depth images, it should be possible to add color management to Krita's vector layers, and that's something we are eager to implement.

We also discussed Wayland. We now support color management on Wayland on Linux, but there are plenty of problems there. We decided to only support the KWin Wayland compositor that comes with KDE Plasma for now.

Performance

Dmitry wants to work on "region based updates", and has already started on that: this will make working with large images faster.

Ivan and Wolthera are interested in using vectorization in filters, possibly replacing the use of LittleCMS for color transformations.

Continuous integration

Continuous integration is how we build Krita: after changes, Krita is built automatically for every platform. Now that we've access to Windows ARM hardware, we need to find a way to extend our builds to Windows ARM, but the CI factory doesn't have an ARM builder, so we'd need to cross build.

We also intend to update all Krita's dependencies to the latest version, but only after we release Krita 5.3 and Krita 6.0. And of course, we intend to keep releasing bugfix and feature releases this year! For now, Krita 5.3 is the standard release, and 6.0 is considered experimental, but that should have changed by the end of the year.

Tuesday, 10 March 2026

gcompris 26.1

Today we are releasing GCompris version 26.1.

It contains bug fixes and improvements on many activities.

It is fully translated in the following languages:

  • Arabic
  • Bulgarian
  • Breton
  • Catalan
  • Catalan (Valencian)
  • Greek
  • Spanish
  • Basque
  • French
  • Hebrew
  • Croatian
  • Italian
  • Lithuanian
  • Latvian
  • Malayalam
  • Dutch
  • Polish
  • Brazilian Portuguese
  • Russian
  • Slovenian
  • Albanian
  • Swedish
  • Turkish
  • Ukrainian

It is also partially translated in the following languages:

  • Azerbaijani (87%)
  • Belarusian (83%)
  • Czech (98%)
  • German (93%)
  • UK English (96%)
  • Esperanto (96%)
  • Estonian (86%)
  • Finnish (92%)
  • Galician (97%)
  • Hungarian (97%)
  • Indonesian (98%)
  • Georgian (88%)
  • Kannada (85%)
  • Macedonian (81%)
  • Norwegian Nynorsk (89%)
  • Portuguese (85%)
  • Romanian (97%)
  • Sanskrit (97%)
  • Slovak (78%)
  • Swahili (88%)
  • Tamil (84%)
  • Chinese Traditional (85%)

You can find packages of this new version for GNU/Linux, Windows, Android, and Raspberry Pi on the download page. Also this update will soon be available in the Android Play store, the F-Droid repository and the Windows store.

Thank you all,
Timothée & Johnny

Modern software is assembled from hundreds of components that organizations often did not write and do not fully control. Identifying those components reliably is becoming a legal requirement. This article introduces SWHID, an open standard for identifying software artifacts.

Monday, 9 March 2026

The last maintenance release of the 25.12 series is out with the usual batch of stability fixes and workflow improvements. Highlights include small interface refinements such as better dock widget behavior, improved shortcut handling in fullscreen mode, logically grouped marker menu items, and a new option to disable timeline effects in the hamburger menu. The release also brings improvements to multistream clip handling and ripple editing, as well as fixing small memleak in the render widget and a crash in the curve editor. See the changelog below for more details.

The macOS versions will be available at a later time due to technical issues while generating the packages.

Kdenlive needs your support

Our small team has been working for years to build an intuitive open source video editor that does not track you, does not use your data, and respects your privacy. However, to ensure a proper development requires resources, so please consider a donation if you enjoy using Kdenlive - even small amounts can make a big difference.

For the full changelog continue reading on kdenlive.org.

Sunday, 8 March 2026

New Glaxnimate release, source mode in Marknote and S3 support in Dolphin

Welcome to a new issue of "This Week in KDE Apps"! Every week (or so) we cover as much as possible of what's happening in the world of KDE apps.

Office Applications

Marknote Write down your thoughts

It's been a busy week in Marknote again. Valentyn Bondarenko extensively reworked tables to fix rendering issues (office/marknote MR #143 and office/marknote MR #169).

Valentyn Bondarenko also added a new dialog to add note links more easily (office/marknote MR #161) and added subtle animations to various parts of the UI (office/marknote MR #162 and office/marknote MR #168).

Shubham Shinde extended the search function of Marknote to also be able to replace text (office/marknote MR #154).

Siddharth Chopra added a source mode to Marknote, for people who prefer to edit Markdown using a plain text editor (office/marknote MR #118).

Carl Schwan improved the context menu, making it appear directly underneath the button and fixing some accessibility issues (office/marknote MR #166).

Finally, there was quite a bit of polish and refactoring done by the whole team in preparation for the release planned next week.

KMyMoney Personal finance manager based on double-entry bookkeeping

Ralf Habacker added a way to list all your unsaved reports and to delete multiple reports at the same time (office/kmymoney MR #322).

PIM Applications

Merkuro Calendar Manage your tasks and events with speed and ease

Yuki Joou redesigned the schedule view to be less crowded and more concise (pim/merkuro MR #573).

Yuki made it possible to set a start date also for tasks and not only for events (pim/merkuro MR #611). She also fixed the sort button state in the todo view (pim/merkuro MR #612), among other various small issues (pim/merkuro MR #579, pim/merkuro MR #609, pim/merkuro MR #610).

Zhora Zmeikin fixed a crash when editing or creating a new event (pim/merkuro MR #608).

Merkuro Mail Read and write emails

Yuki Joou also worked on Merkuro Mail and fixed various issues when sending emails (pim/merkuro MR #615).

Merkuro Contact Manage your contacts with speed and ease

Finally, Yuki added a way to copy phone numbers from a contact book entry easily (pim/merkuro MR #614).

KMail A feature-rich email application

Albert Astals Cid refactored how temporary files are stored so they are no longer stored in /tmp. This mostly helps in case multiple users use the same machine (pim/messagelib MR #334).

Kleopatra Certificate manager and cryptography app

Thomas Friedrichsmeier changed the font used by plain text email signatures in the Kleopatra and GpgOL.js email viewers to be monospaced, as many signatures depend on that (pim/mimetreeparser MR #91).

Creative Applications

Glaxnimate Vector Animation Editor

This week we celebrated the first release of Glaxnimate as part of KDE. Welcome to the family! The big highlights of this release are better integration with KDE in terms of theming, improvements in the animation timeline, and better SVG export and import. Read more in the full announcement.

In the development branch, Mattia Basaglia continued to improve Glaxnimate. This includes a brand new rendering engine based on ThorVG (graphics/glaxnimate MR #84). This means the rendering is now hardware accelerated, which is faster than the old QPainter-based renderer. Additionally, Mattia improved the backend (graphics/glaxnimate MR #86) and built an experimental WASM renderer based on it for the web (graphics/glaxnimate MR #87).

Multimedia Applications

KPhotoAlbum KDE image management software

Randall Rude updated the documentation (graphis/kphotoalbum MR #73).

Developers Applications

Kate Advanced text editor

Leia uwu fixed Kate so that when renaming a file, any open tabs with this file will also be updated accordingly (utilities/kate MR #2043).

KDevelop Featureful, plugin-extensible IDE for C/C++ and other programming languages

Martin Bednar added support for noexcept in the autocompletion model of KDevelop (kdevelop/kdevelop MR #858).

Network Applications

NeoChat Chat on Matrix

James Graham continued working this week on improving and polishing the new rich text editor in NeoChat (network/neochat MR #2730, network/neochat MR #2729, network/neochat MR #2722, ...)

Joshua Goins disabled the search feature in encrypted rooms as the server is not able to search in them (network/neochat MR #2724).

Kaidan Modern chat app for every device

Melvin Keskin improved the usability of the emoji picker and mentioning participants in a group chat (network/kaidan MR #1522).

System Applications

Dolphin Manage your files

Albert Mkhitaryan added keyboard shortcut support for service menu actions (system/dolphin MR #1167). So now you can assign a shortcut to the context menu actions provided by other applications or user scripts. See doc

Nicolai Sehrt added an option for forcing all tabs in Dolphin to have the same width (system/dolphin MR #1154). Méven Car also updated Dolphin so that, by default, tab widths are automatically determined by their title length (system/dolphin MR #1170).

Méven Car also centered most settings pages to be a bit more consistent with System Settings (system/dolphin MR #1192).

Nekto Oleg improved support for the S3 protocol in KIO-enabled applications like Dolphin. While S3 is commonly associated with Amazon Web Services (AWS), the implementation now also supports custom endpoints and is no longer limited to AWS-compatible services (network/kio-s3 MR #7, network/kio-s3 MR #8 and network/kio-s3 MR #9). Additionally, a new System Settings page makes it possible to configure multiple S3 providers at the same time (network/kio-s3 MR #9 and network/kio-s3 MR #10).

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out This Week in Plasma, which covers all the work being put into KDE's Plasma desktop environment every Saturday.

For a complete overview of what's going on, visit KDE's Planet, where you can find all KDE news unfiltered directly from our contributors.

Get Involved

The KDE organization has become important in the world, and your time and contributions have helped us get there. As we grow, we're going to need your support for KDE to become sustainable.

You can help KDE by becoming an active community member and getting involved. 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. There are many things you can do: you can help hunt and confirm bugs, even maybe solve them; contribute designs for wallpapers, web pages, icons and app interfaces; translate messages and menu items into your own language; promote KDE in your local community; and a ton more things.

You can also help us by donating. Any monetary contribution, however small, will help us cover operational costs, salaries, travel expenses for contributors and, in general, keep KDE continue bringing Free Software to the world.

To get your application mentioned here, please ping us in invent or in Matrix.

Hey there! I'm Vishesh Srivastava, and we're at the halfway mark of my SoK 2026 project — writing Appium-based UI tests for Lokalize. I was a bit late for the halfway mark, but we're still on track.

So what's Lokalize?

It's KDE's translation tool — the app that translators use to work with PO files and manage translation. It does its job well but it had zero UI tests. None. My job this SoK is to fix that.

The starting days (January)

My first task was Bug 514468 — where copyright year strings in PO headers would be very long like 2006, 2010, 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2019, 2020, 2021 instead of the more concise 2006, 2010-2015, 2017-2021.

I was asked to write a failing test first. So I added a simplifyYearString placeholder function, wrote a unit test that expects the collapsed range output, and marked it with QEXPECT_FAIL since the actual implementation was going to be done by someone else. It was updated to expect to pass when the bug was fixed.

More importantly, this got me comfortable with KDE's setup, kde-builder, and how the testing framework works.

The main work: Appium tests (February – March)

This is where the real fun began. Lokalize had absolutely no Appium setup, so everything was built from the ground up.

First steps

My first tests were very simple. simple_open.py literally just opens Lokalize and closes it. That's the whole test. file_open.py was the next step: open the app, click File, click Open, and confirm the dialog shows up. Not much but you have to crawl before you can walk.

A bug I encountered

Here's something I found: Appium finds UI elements through accessibility properties, and Lokalize's editor text fields didn't have any (found using accessibilityinspector). So my test scripts were essentially blind — they could see menus and buttons but couldn't interact with the actual editor. I had to edit editorview.cpp to add object names and accessible names to the widgets to actually get Appium to see them.

Other KDE apps with Appium tests (Dolphin, KCalc) already had these, but nobody had needed them in Lokalize before. These were my reference for writing the code.

The workflow test (the one I'm actually proud of)

workflowtest.py is the test that simulates what a translator would actually do:

  1. Open a .po file with two untranslated entries
  2. Type a translation into the target field
  3. Hit "Approve and Go Next"
  4. Do the same for the second entry
  5. Check if the editor tab UI was updated successfully
  6. Check that the status bar says Not ready: 0 — meaning everything's translated
  7. Save the file

Below is a demo of this working:

It's a proper end-to-end test.

Integrating with CMake

To make it so that these tests run along with all other tests with kde-builder --run-tests, I added a CMakeLists.txt for the appiumtests directory and added it into the project's build system behind a BUILD_APPIUM_TESTS option:

kde-builder --run-tests lokalize --no-include-dependencies --no-src --cmake-options="-DBUILD_APPIUM_TESTS=ON"

Now the tests integrate with the Appium tests just like they do in other KDE apps.

Next steps

  • Writing failing tests for bugs
  • Edge case tests

Final thoughts (for now)

It's been a enjoyable experience and many thanks to Finley Watson for offering great help along the way.

Halfway there. Let's see what happens next.