This year was my first year attending FOSDEM. I was encouraged to submit a talk and it got accepted. My talk was on Design Systems applied to Open Source projects.
In our case, I related the story and learnings from using a design system for the Plasma desktop. I outlined things that are pending or missing in this process.
I did my best to convince the audience to switch to Plasma and it seems a few of them changed their mind by the end of the talk.
This talk is a variation on my previous talk at Akademy 2025. Without further delay, here is the video recording of my talk. Note that the audio is not the best.
We are also releasing the first official version of our companion tool for teachers: GCompris-teachers! You can find more information about it on the schools page.
This new version contains 197 activities, including 2 new ones:
"Drawing wheels" is an activity for drawing using a gear rotating in a cogwheel.
"Multiple choice questions" is an MCQ activity. Note that this activity is hidden by default. It becomes visible after some datasets for it have been sent from GCompris-teachers.
It also contains bug fixes and improvements on multiple activities.
We ship translations for two more languages: Kannada and Tamil.
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
Slovenian
Albanian
Swedish
Turkish
Ukrainian
It is also partially translated in the following languages:
Azerbaijani (87%)
Belarusian (83%)
Czech (98%)
German (92%)
UK English (96%)
Esperanto (96%)
Estonian (86%)
Finnish (91%)
Galician (97%)
Hungarian (97%)
Indonesian (98%)
Georgian (88%)
Kannada (85%)
Macedonian (81%)
Norwegian Nynorsk (89%)
Portuguese (85%)
Romanian (97%)
Russian (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. This update will also be available soon in the Android Play store, the F-Droid repository and the Windows store.
A recent toot of mine got the response “friends don’t let friends use GPG” which,
I suppose, is true enough. It certainly isn’t the attestation-friendly thing to use,
and the opsec failures that are so easy with GPG-encrypted mail make it a hazard there.
But for some things it’s all we’ve got, and I do like to sign Calamares releases
and incidental FreeBSD things. And I am nominally the maintainer of the
security/gnupg port on FreeBSD. So gpg.fail notwithstanding,
here’s notes on my 2026 GPG key update.
Previously in 2024 and 2025 I wrote down basically the same things:
Things expire in about 13 months and I’ll have to remember then again,
You can find my pubkey published on my personal and business sites,
I'm absolutely thrilled to announce that I've been selected to participate in the Season of KDE (SoK) 2026! It's an incredible opportunity to contribute to the open-source community, and I can't wait to dive into my project: enhancing the classic game of Mancala for the KDE desktop. What I'll Be Wor…
Hi all! I'm CJ, and I'm participating in Season of KDE 2026 by automating portions of the data collection for the KDE promo team. This post is an update on the work I've done in the first week of SoK.
My mentor gave me a light task to help me get set up and familiarize myself with the tools I'll be using for the rest of the project. The task was to automate the population of a spreadsheet that tracks follower and post counts for X (formerly known as Twitter), Mastodon, BlueSky, and Threads.
The spreadsheet takes the follower and post counts of some of KDE's social media platforms and makes calculations based off that data. Important things to note:
data from the sites is entered manually
there are a lot of styles and formulas in the sheet
Fetching Account Data
Grabbing data was mostly no trouble. Mastodon and BlueSky were especially easy to work with. They have a public and well documented API that lets people collect all kinds of data in human-readable formats. One particular endpoint from both sources output account information, including follower and post counts, for a given account in neat JSON files (BlueSky, Mastodon). All it took were GET requests to these endpoints and it was smooth sailing.
X and Threads proved a bit more finnicky. Both of their APIs limit access to much of their functionality usually meaning webscraping methods are the most accessible for grabbing public account data. Threads shows users' follower counts out directly on an account's landing page, so processing a GET request to the URL of KDE's Threads account made it easy to grab. The problem is that there seems to be no direct way to grab the post count either through their API or with webscraping methods. For now, we've chosen to leave that be and circle back when I explore Threads more in the future. X presents a similar problem but there is an open-source frontend alternative named Nitter, instances of which lay all the stats information out in the open. The reliability of this method depends on public Nitter instances being available so it may be worth coming back around to this in a later part of the project, but for now it's a viable solution for getting follower and post counts.
Inputting the Data Into the Spreadsheet
With the data all fetched, all that was left is to add that data to the ODF spreadsheet. I had this down as the easy part of the task but in the end it wasn't so simple. The two major Python packages I found that can interpret and write ODF files: Pandas and pyexcel. Both of these have no problem reading data from the files, but when it comes to saving they don't preserve some elements of the spreadsheet. In the end we went the simple route which is to save the data to a separate ODF file using one of the Python-ODF interfaces and import that into the data sheet. This took a little finagling with formulas to get things working without popping errors into cells the sheet, but in the end we have an output ODF spreadsheet file containing the required data and the original spreadsheet with all the calculations pulling that data into its formulas, removing any requirement of a human interfacing with this portion of data collection.
Learned Lessons
I feel like this week's task was a great first step into data collection automation. It was challenging without being too difficult to make progress on and forced me to explore different avenues for gathering data. On the confidence side, getting a (mostly) successful task out the gate helped me feel more comfortable with the tools and processes that will likely appear throughout the entirety of my SoK experience. Things will scale up from here on out though so I'm also keeping myself in check.
From what I understand some of the most difficult parts of automated data collection come through having to interface with Javascript and not getting banned, both of which I've yet to come face-to-face with in any substantial capacity so far. Along with that I've face unexpected problems, such as the issue with modifying ODF files and that some websites don't play as well with certain browsers, which I don't have an easy way to test for yet. With these in mind I'm trying to tread lightly and be diligent with research and good practice as I continue on.
Continuing previousefforts to update the “secure passwords” story of the Plasma desktop, I’ve done some integration work between Plasma and oo7.
Oo7 is a relatively recent SecretService provider written in Rust; it’s very nice, lightweight and cross-desktop. Very interesting for us supporting it as a first class citizen.
We want in the end to replace completely the old KWallet system with something based on SecretService, have all our applications migrated transparently with user data as well, if possible with a cross-desktop backend implementation.
We also want it to be as transparent as possible for the end user, not having any complicated first time setup, or dialogs that ask for a manual unlock when not needed. For the user, the whole system should be just invisible, except when looking up their passwords or when client applications add passwords to it themselves.
As a first thing several months ago we did a transparent translation layer for the KWallet DBus interface, so now the “KWallet” service became just a translation layer between the kwallet api and the secretservice one.
The old kwalletd service instead became “ksecretd” now providing only the SecretService interface, and that’s what we use by default now. however, it can be configured to use a different provider, so it can already be used with gnome-keyring or KeepassXC if the user wishes. In that case the user data will be migrated the first time.
Also I’ve written a new application called KeepSecret. It is centered around SecretService, with a much more modern UI compared to KWalletManager and works also much better on mobile, so we can have also a modern password manager on Plasma Mobile.
KeepSecret running with the oo7 backend, with a native password dialog
The last thing that we did so far is integration with a new SecretService provider on the block: oo7.
If oo7 is Just another SecretSerive provider, Won’t it “just work” in Plasma? Not quite, but that’s actually a good thing. Oo7 wants to properly integrate with the environment it runs in, so we need to build that integration.
When you use KWallet, KeepassXC, or gnome-keyring directly, they create their own password dialogs using their own toolkits and styles, therefore potentially looking a bit alien when run in a different environment than the one it it was designed for.
This is not ideal for evaluating options for a possible future replacement of KWallet (which piece by piece we are working towards), as we want the UI part completely integrated with the Plasma desktop.
Instead, oo7 is built on the assumption that the environment it runs on will provide its own dialogs, a bit like the portal system for services like screen sharing and file picking. This requires active integration both on the Plasma part and the oo7 part, but on the other hand it will look native on Plasma, Gnome, and any other platform that implements the integration hooks. And that’s with the added benefit of sharing the password storage if someone every now and then goes desktop environment hopping.
On the Plasma side we decided to employ a very small daemon which is launched only on demand with dbus activation. It will create the needed system dialogs, pass the user input back to oo7 and then quit when not needed anymore, so it won’t constantly use up system resources.
This is already available in Plasma 6.6: the code for it is here. It’s designed first for oo7, but it can be used by any daemon which wishes to provide native password dialogs, so we might start to use it also from other components in the future, either other SecretService providers or completely different things which have similar needs like Polkit.
On the oo7 part, Harald implemented the integration with its dbus interface, so with oo7 from main branch (or its next release) it can be used in place of KWallet (with all old applications still using the KWallet API using its backend as well), with all data migrated to it, and it will show native UI for its password dialogs… all the pieces of the puzzle slowly falling together
Needless to say this is still at an experimental stage, but it’s an important milestone in getting more independent from the aging KWallet infrastructure.
After some more nights spent with our beloved Bouncy Ball, I'm happy to announce that a new version is out on the KDE Store. Last week in Bouncy Ball | KDE Store page Prior to getting down and dirty with it, I again had at a look at how the ball was implemented in KDE4...... Continue Reading →
Kaidan has supported voice and video messages for a long time.
Starting with this release, you can even have an audio or video call with a contact!
An incoming call is indicated via a notification and you can either accept or reject it.
Please note that there are still some features missing and some setups may not work properly.
Especially, calls are only supposed to work on Linux at the moment.
But we wanted to share the current achievements with you to get some feedback!
Our goal is to extend the A/V calls functionality and make it available on other operating systems in the future.
Notifications for Group Chat Replies
Formerly, you got a notification if someone mentioned you in a group chat while the corresponding setting was enabled.
But you could miss replies to your messages.
Kaidan notifies you now on receiving replies as well.
Message Input Field Focusing
In contrast to the soft keyboard on a mobile device, which needs to be opened each time you want to enter something, your keyboard is always reachable on a desktop device.
Why not make use of that circumstance?
Kaidan ensures that the most relevant message input field stays focused to allow entering text without an additional click into the corresponding field.
That way, you can interact smoothly with the user interface and be more productive.
Advanced Message Highlighting
Kaidan 0.14 introduced highlighted messages if you opened their context menu.
Messages are now also highlighted while they are being corrected or while you are choosing emojis to react to them.
If another message was already highlighted before, that message is highlighted again once you sent the correction/reaction.
Integrated Search Field
With Kaidan, you can quickly search for chats and messages.
But while searching for messages, the opened search bar reduced the space for messages.
On mobile devices, the search bar even consumed unnecessary space within the chat list.
Both problems are solved now!
The search field is integrated into the main toolbar above the messages resp. the chat list.
You can even focus each search field via an own keyboard shortcut to directly search without moving the cursor.
Password Manager Fallback
Since Kaidan’s last version, passwords are stored in a password manager if the system provides one.
But there was no fallback yet.
It is now possible to use Kaidan even if no password manager is available.
In that case, the passwords are stored in an unencrypted file.
Once Kaidan detects a password manager on start, the unencrypted passwords are automatically migrated to the password manager.
Changelog
There are several other improvements.
Have a look at the following changelog for more details.
Features:
Add support for audio/video calls (XEP-0166: Jingle, XEP-0167: Jingle RTP Sessions, XEP-0176: Jingle ICE-UDP Transport Method, XEP-0215: External Service Discovery, XEP-0320: Use of DTLS-SRTP in Jingle Sessions, XEP-0353: Jingle Message Initiation) (@melvo)
Show busy indicator while saving captured image/video data (@melvo)
Notify on receiving reply to own group chat message if ‘On mention’ notification setting is enabled (@melvo)
Select file after opening in folder on Linux if supported (@melvo)
Improve media capturing look/behavior (including preview after capturing image until image is saved) (@melvo)
Restore focusing of last focused user interface elements (especially message input field) for various use cases (@melvo)
Keep message bubble highlighted on reacting/correcting (@melvo)
Allow to select message for correction via Ctrl+Up/Ctrl+Down (@melvo)
Integrate search field into main toolbar increasing space for messages and, on mobile devices, even for chats in chat list (@melvo)
Show message search field via Ctrl+Shift+F (@melvo)
Display toolbar buttons on mobile devices exactly as on desktop devices (@melvo)
Hide horizontal separator above top-most chat unless chat list is scrolled (@melvo)
Store passwords in unencrypted file if no password manager is available or corresponding command-line option provided (@fazevedo)
Migrate unencrypted passwords to password manager if available on start (@fazevedo)
Bugfixes:
Fix overlapping message bubble tail (@melvo)
Fix medium preview hovering if hidden drop area info is hovered (@melvo)
Fix updating OMEMO 2 keys for all use cases (@melvo)
Fix deadlock on logout during upload of multiple files (@melvo)
Fix creating additional database connection on wrong thread (@melvo)
Fix sending/resetting whether message is being composed for various corner cases (switching chat, logging out, disabling corresponding setting) (@melvo)
Fix updating last message on receiving initial message after setting up existing account in Kaidan for first time (@melvo)
Fix resetting draft message after canceling message correction (@melvo)
Fix resending failed message reaction (@melvo)
Fix selecting previously selected message after changing reactions (@melvo)
Fix restoring message highlighting and cancel ongoing correction/reply on removing corresponding message (@melvo)
Fix displaying last message sender in chat list after draft message removal (@melvo)