Hello everyone!š
Welcome to my first blog!
I am Sayandeep Dutta, an undergraduate at SRM University. I learned about the awesome mentorship program, Season of KDE.
Getting StartedI started contributing to Mankala in December 2025. Got to know more about the project, interacted with mentors, and started with some small merge requests. I really like contributing to Mankala. Mankala has been a very interesting game, and the guidance from the community is really good.
Week 1: Development & DesignIn my first week, I had set up Mankala on my Ubuntu machine and started with the development. I created mockups for the proposed UI changes in MankalaNextGen. The mockups mainly included the main game page, a login page, a home page, and some other pages in the game, which were created and worked upon by me on Figma.
Progress So FarI had created a merge request updating the MainMenu. Well, there are a couple of pages and components we need to work on, and the Main Menu is the most essential one to start with.
What's next?In the upcoming week, I plan to:
Complete the rest of the UI updates.
Start implementing the new theme of MankalaNextGen.
Thanks for reading. Stay tuned for more updates. š
Building Volumetric Light Shafts with Real IES Profiles
You know that feeling when the street lamps on a hazy evening cast these particularĀ patterns of light? I've always been fascinated by those effects, so I decided to build a real-time volumetric lighting system using Qt 6.11's graphics capabilities, leveraging its QML shader integration and 3D rendering pipeline to recreate them with actual IES profiles.
Streetlight patterns in the evening haze
Ā
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.
Welcome to a new issue of This Week in Plasma!
This week we reached that part of every Plasma release cycle where the bug fixes and polish for the upcoming release are still coming in hot and heavy, but people have also started to land their changes for the next release. So thereās a bit of both here!
Everyoneās working really hard to make Plasma 6.6 a high-quality release. Itās a great time to help out in one way or another, be it testing the 6.6 beta release and reporting bugs, or triaging those bugs as they come in, or fixing them!
Notable New Features
Plasma 6.7.0
The Emoji Selector window now lets you choose mixed skin tone groupings of emojis using a nice little user-friendly pop-up dialog. (Tobias Ozór, plasma-desktop MR #3426)
After
Before
Youāre now able to set a global keyboard shortcut to clear the notification history. (Taras Oleksyn, KDE Bugzilla #408995)
Notable UI Improvements
Plasma 6.6.0
In the Application Dashboard widget, keyboard focus no longer gets stolen by selectable items that happen to be right under the pointer at the moment the widget is opened. (Christoph Wolk, KDE Bugzilla #510777)
Breeze-themed checkboxes now always have an opaque background, which resolves an issue where their unchecked versions could be hard to see when overlaid on top of images. (David Redondo, KDE Bugzilla #511751)
Plasma 6.7.0
System Settingsā subcategory back button is now more of a traditional back button, eliminating a source of redundant page titles. There are still too many, but this reduces the count by one! (Nate Graham, systemsettings MR #390)
After
Before
On System Settingsā Notifications page, you can now always preview a notification sound even if sound is currently disabled for that notification. (Thomas Moerschell, plasma-workspace MR #6214)
Plasmaās network settings now expose additional L2TP VPN options that were previously unavailable. (MickaĆ«l Thomas, plasma-nm MR #480)
The old Air Plasma style (a lighter take on the original Oxygen style) is back, with fixes and improvements, too! (Filip Fila, oxygen MR #77)
The Oxygen cursor theme received a small visual fix to improve the appearance of the busy cursor. (Filip Fila, oxygen MR #89)
The cursor theme settings now show more accurate previews, which fixes issues like wobbling cursors, and makes the preview grid feel more stable. (Kai Uwe Broulik, plasma-workspace MR #6240)
System Settingsā various theme chooser pages are now consistent about whether you can delete the active theme (no), and also let you know why certain themes canāt be deleted: because they were installed by the OS, not the āget new stuffā system. (Sam Crawford, plasma-workspace MR #6222)
The Weather Report widget now shows a progress indicator while its popup is open but still loading the weather forecast from the server. (Bogdan Onofriichuk, kdeplasma-addons MR #993)
Frameworks 6.23
Combobox pop-ups through QtQuick-based apps and System Settings pages now use the standard menu styling, rather than a custom style. (Nate Graham, qqc2-desktop-style MR #497)
After
Before
Added styling for the new upstream SearchField component that was recently added to QtQuick itself. Now it looks like the KDE version that we created years ago before the Qt version existed. (Manuel Alcaraz Zambrano, qqc2-desktop-style MR #500)
Notable Bug Fixes
Plasma 6.5.6
Fixed an issue on operating systems with asserts turned on (like KDE neon) that could sometimes crash Plasma when you launched apps. (David Edmundson, KDE Bugzilla #513312)
Plasma 6.6.0
Fixed a rare issue that could leave KWin without control of the mouse and keyboard at login. (Vlad Zahorodnii, KDE Bugzilla #511611)
Fixed a case where Plasma could crash when moving around a Weather Report widget on the desktop. (Bogdan Onofriichuk, KDE Bugzilla #514200)
Fixed an issue in Discover when launched with Snap support that could prevent it being launched again after previously being closed. (Aleix Pol Gonzalez, KDE Bugzilla #507217)
Fixed a case where the Plasma Bluetooth pairing wizard would fail to pair devices. (David Edmundson, KDE Bugzilla #495615)
The logout screen no longer fails to take focus if you raised the focus stealing level to āMediumā or higher, and manually de-focusing it no longer breaks your ability to re-focus it. (Vlad Zahorodnii, KDE Bugzilla #514204 and Aleksey Rochev, KDE Bugzilla #511258)
The custom size ruler for Plasma panels no longer sometimes appears on the wrong screen of a multi-screen setup. (Vlad Zahorodnii, plasma-workspace MR #6215)
The āX notifications were received while Do Not Disturb was activeā notification is no longer inappropriately saved to the notification history. (Kai Uwe Broulik, plasma-workspace MR #6223)
Fixed two semi-related issues with widgets that made them not let you pick the same color after deleting it, or configure the same mouse action after deleting it. (Christoph Wolk, KDE Bugzilla #514983 and KDE Bugzilla #449389)
The global menu on a newly-cloned panel on a different screen now realizes immediately that itās on a new screen. (David Redondo, KDE Bugzilla #514907)
Discoverās notification about ongoing updates no longer displays a nonsensically large number of updates under certain circumstances. (Harald Sitter, KDE Bugzilla #513676)
Plasma Browser Integration no longer exports Microsoft Teams calls as controllable media sources; it always omitted them in the past, but Microsoft changed the URL again, so we had to adapt to that once more. (Kai Uwe Broulik, KDE Bugzilla #514870)
You can now move focus from the Application Dashboard widgetās search field using arrow keys, and also type accented characters using dead keys or the compose key as the first character in a search while the search field isnāt explicitly focused. (Christoph Wolk, KDE Bugzilla #511146 and KDE Bugzilla #510871)
Animated wallpapers explicitly set for the lock screen now play their animation as expected. (Taras Oleksyn, KDE Bugzilla #460910)
Undoing the deletion of a panel widget no longer sometimes positions it far from where it was before. (Marco Martin, KDE Bugzilla #515107)
Ending the renaming of an item on the desktop by clicking on another item no longer starts a drag-selection for no good reason. (Akseli Lahtinen, KDE Bugzilla #514954)
The āDefaultsā button on System Settingsā Accessibility page now works properly to reset non-default colorblindness modes. (Andrew Gigena, KDE Bugzilla #513489)
Plasma 6.7.0
Fixed a very nasty KWin bug that could, under certain rare circumstances relating to intensive Alt+Tab usage, cause the screen to go black. This change may be backported to Plasma 6.6 if itās deemed safe enough. (Xaver Hugl, KDE Bugzilla #514828)
Frameworks 6.23
Fixed being unable to paste clipboard entries as text that were copied from a LibreOffice Calc spreadsheet cell and then re-arranged in the clipboard history list. (Alexey Rochev, KDE Bugzilla #513701)
Notable in Performance & Technical
Plasma 6.6.0
KRDP (the KDE library for remote desktop support) no longer requires systemd. (David Edmundson, krdp MR #141)
Plasma 6.7.0
KWin now supports the ext-background-effect-v1 Wayland protocol. This adds support for standardized background effects like blur, opening the door for visual consistency across apps using these effects. (Xaver Hugl, KWin MR #4890)
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.
Would you like to help put together this weekly report? Introduce yourself in the Matrix room and join the team!
Beyond that, you can help KDE by directly getting involved in any other projects. Donating time is actually more impactful than donating money. 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.
You can also help out by making a donation! This helps 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
Push a commit to the relevant merge request on invent.kde.org.
Continuing previous efforts 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.
Letās go for my web review for the week 2026-05.
Neocities Is Blocked by Bing
Tags: tech, web, search, microsoft, vendor-lockin
Huh? Whatās going on there? I donāt see why they would exclude this domain completely, it makes no sense.
https://blog.neocities.org/blog/2026/01/27/bing-block
The Enclosure feedback loop
Tags: tech, ai, machine-learning, gpt, copilot, enclosure, vendor-lockin
Interesting point. As we see the collapse of public forums due to the usage of AI chatbots, weāre in fact witnessing a large enclosure movement. And itāll reinforce itself as the vendors are training on the chat sessions. What used to be in public will be hidden.
https://michiel.buddingh.eu/enclosure-feedback-loop
No, Cloudflareās Matrix server isnāt an earnest project
Tags: tech, ai, machine-learning, copilot, matrix, cloudflare, security, failure
Very in depth review of the mess of a Matrix home server vide coded at Cloudflare⦠all the way to the blog announcing it. Unsurprisingly this didnāt go well and they had to cover their tracks several times. The response from the Matrix foundation is a bit underwhelming, itās one thing to be welcoming, itās another to turn a blind eye to such obvious failures. This doesnāt reflect well on both Cloudflare and the Matrix Foundation Iām afraid.
https://nexy.blog/2026/01/28/cf-matrix-workers/
I Was Right About ATProto Key Management
Tags: tech, social-media, bluesky, decentralized
Indeed, it just canāt be called decentralizedā¦
https://notes.nora.codes/atproto-again/
Microsoft Gave FBI BitLocker Encryption Keys, Exposing Privacy Flaw
Tags: tech, microsoft, security, privacy
Are we surprised? Of course not⦠As soon as you backup the keys on someone elseās server BitLocker canāt do anything to ensure privacy.
https://www.forbes.com/sites/thomasbrewster/2026/01/22/microsoft-gave-fbi-keys-to-unlock-bitlocker-encrypted-data/
ICE takes aim at data held by advertising and tech firms
Tags: tech, advertisement, surveillance, politics, privacy
What a surprise⦠No really who would have expected this could happen? I heard so many times āI have nothing to hideā over the years. When something like this happens you suddenly wish you were a bit more careful with your privacy and the privacy of the people around you.
https://www.theregister.com/2026/01/27/ice_data_advertising_tech_firms/
The Rise of Sanityware
Tags: tech, privacy, surveillance, attention-economy
Those are indeed getting more popular. In a way thatās unfortunate, we shouldnāt need them so much.
https://thatshubham.com/blog/2026
Blogs Are Back
Tags: tech, rss, blog, tools
Looks like a nice tool to help people to get into RSS.
https://www.blogsareback.com/
Places to Telnet
Tags: tech, networking, funny
Telnet is not dead! We still have fun places to turn telnet clients to.
https://telnet.org/htm/places.htm
10 Years of Wasm: A Retrospective
Tags: tech, web, standard, webassembly, history
Nice retelling of the story behind WebAssembly.
https://bytecodealliance.org/articles/ten-years-of-webassembly-a-retrospective
cppstat - C and C++ Compiler Support Status
Tags: tech, c++, standard, tools
Looks like an interesting tool to follow availability of C++ features in compilers.
https://cppstat.dev/
Why I still teach OpenGL ES 3.0
Tags: tech, graphics, teaching, learning
Good point, it is old but portable and carries the important concepts. This is a good teaching vehicle. Even though itās unlikely youād use it in the wild much longer.
https://eliasfarhan.ch/jekyll/update/2026/01/27/why-i-teach-opengles.html
SPAs Are a Performance Dead End
Tags: tech, web, frontend, performance
Itās a solution for a problem long gone. SPAs should be the exception for highly interactive applications not the norm. Most web applications donāt need to be a SPA and would be better off without being one.
https://www.yegor256.com/2026/01/25/spa-vs-performance.html
Functional Core, Imperative Shell
Tags: tech, functional, architecture, tests, tdd
Clearly not a style which works for any and every applications. Still, itās definitely a good thing to aim towards such an architecture. It brings really nice properties in terms of testability and safety.
https://www.destroyallsoftware.com/screencasts/catalog/functional-core-imperative-shell
How I estimate work as a staff software engineer
Tags: tech, estimates, decision-making
The approach is interesting. I wouldnāt assume itās doable in every contexts though. Whatās sure is that you need to embrace the uncertainty and accept to go with the exercise. Estimates are needed to make decisions and help teams to sync.
https://www.seangoedecke.com/how-i-estimate-work/
Is It Worth It?
Tags: tech, failure, organisation, estimates
Solving paper cuts pay off faster than youād think.
https://griffin.com/blog/is-it-worth-it
Things Iāve learned in my 10 years as an engineering manager
Tags: tech, engineering, management, leadership
Nice advice, thereās a lot of variation on the role. And yet, some things seem to always be there.
https://www.jampa.dev/p/lessons-learned-after-10-years-as
Because coordination is expensive
Tags: tech, team, organisation, communication, complexity
The complexity and cost in organisations is indeed mostly about coordination. This is a difficult problem and largely unsolved in fact.
https://surfingcomplexity.blog/2026/01/24/because-coordination-is-expensive/
Douglas Adams on the EnglishāAmerican cultural divide over āheroesā
Tags: culture
The contrast is indeed very stark. I got my own bias and fondness for heroic failures.
https://shreevatsa.net/post/douglas-adams-cultural-divide/
Bye for now!
Ā
It's that time of year again; another Qt World Summit is approaching! We are looking for speakers, collaborators, and industry thought leaders to share their expertise and insights at the upcomingĀ Qt World Summit 2026 on October 27-28, in Berlin, Germany.Ā
*Please note we are looking for live talks only.Ā
Ā
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 ā
Welcome Kaidan 0.15.0!
This release adds experimental support for calls.
In addition, it contains some very useful improvements and lots of fixes.
Most of the work has been funded by NLnet via NGI Zero Entrust and NGI Zero Commons Fund with public money provided by the European Commission.
Audio/Video Calls
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 wee 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)
Notes:
Kaidan requires Kirigami Addons 1.8 now
Kaidan requires QXmpp 1.14 now
Download
Source code (.tar.xz) (sig signed with 04EFAD0F7A4D9724)
Linux (Flatpak on Flathub)
Or install Kaidan for your distribution:
We are happy to announce the release of Qt Creator 19 Beta!
You find a selection of improvements and fixes below. Please have a look at our change log for more detailed information.
I have a pile of hard drives. 3.5ā Spinning rust. Thereās like a dozen of them,
some labeled cryptically (EBN D2), some infuriatingly (1) and
some not-at-all. Probably most of them work. But how to effectively figure
out what is on them? FreeBSD to the rescue.
Hotplug Just Works
All the drives are SATA. I do have an IDE drive, I use it for opening beer bottles. And an ST-225
for old-timeās sake. But SATA it is, and thereās spare SATA data- and power-cables dangling out the
side of my PC. This particular machine runs FreeBSD 14.3, and connecting a drive (data first, then power)
yields some messages in the system log. Old-school, the command to read these is still dmesg,
which prints:
ada3 at ahcich0 bus 0 scbus0 target 0 lun 0
ada3: <WDC WD3200AAKS-00SBA0 12.01B01> ATA-7 SATA 2.x device
ada3: Serial Number WD-WMAPZ0561055
ada3: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada3: Command Queueing enabled
ada3: 305245MB (625142448 512 byte sectors)
That matches information printed on the label of the disk (this drive is from 2007, has a 1
written on it in black marker ā it may have been a drive in the English Breakfast Network server back then).
It also tells me that the disk is registered with the system as ada3.
FreeBSDās disk subsystem is a stack of āGEOM classesā. The geom(4) manpage tells me
that it is a modular disk I/O request transformation framework, but the important bit is geom(8), the command to query the disk subsystem.
Running geom disk list ada3 tells me what is known about disks involved with ada3. This actually doesnāt tell
me much I donāt already know:
Geom name: ada3
Providers:
1. Name: ada3
Mediasize: 320072933376 (298G)
Sectorsize: 512
Mode: r0w0e0
descr: WDC WD3200AAKS-00SBA0
lunid: 50014ee0aabd8fe3
ident: WD-WMAPZ0561055
rotationrate: unknown
fwsectors: 63
fwheads: 16
Well, actually this tells me that the dmesg and geom output are in mibi- and gibi-bytes, and that theyāre consistent.
How about partitions on this disk, though? geom part list ada3 tells me (here Iāve removed several partitions, along with many other lines that are not very useful right now; the output is extensive):
Geom name: ada3
scheme: GPT
Providers:
1. Name: ada3p1
Mediasize: 819200 (800K)
efimedia: HD(1,GPT,a43a2da3-bb5f-11e5-8d81-f5e4d894ddb1,0x22,0x640)
label: (null)
type: efi
index: 1
2. Name: ada3p2
Mediasize: 315679277056 (294G)
efimedia: HD(2,GPT,a43c9069-bb5f-11e5-8d81-f5e4d894ddb1,0x662,0x24bff9c0)
label: (null)
type: freebsd-ufs
index: 2
So it is a GPT-partitioned disk, and at least one of the partitions is an āold-fashionedā UFS partition.
Thatās FreeBSD before ZFS became the de-facto standard filesystem (maybe just for me). This disk is simple
to deal with (further notes below)!
After Iām done with the disk, I power it down first with
camcontrol standby ada3. I can hear the disk stop spinning
and then pull out the connectors (power first, then data). And move on to
the next disk. After disconnecting, dmesg confirms that I unplugged the correct drive:
ada3 at ahcich0 bus 0 scbus0 target 0 lun 0
ada3: <WDC WD3200AAKS-00SBA0 12.01B01> s/n WD-WMAPZ0561055 detached
(ada3:ahcich0:0:0:0): Periph destroyed
This way I can step through all of the drives in my pile and then jot down
what disk does what (or, in rare cases, decide they can be zeroed out and
re-used for something else).
Dealing with non-GPT disks
The scheme reported by geom part list is GPT if youāre sensible,
but of course it is possible to bump into MBR and BSD disklabels
as well. The geom subsystem abstracts all that away, and the only
realy difference is the names of devices.
Scheme BSD, also known as BSD disklabel,
gives you ada3a and ada3d, rather than numbered partitions.
It is possible to apply this to a whole disk. It is also possible to
have a BSD disklabel inside an MBR partition, but thatās a late-90s kind of setup.
Scheme MBR gives you numbered partitions, but FreeBSD calls these slices
instead of partitions and so you end up with ada3s1 instead of ada3p1.
Dealing with UFS
UFS partitions are pretty simple: mount them somewhere and things will be OK.
I go for read-only, and I have a /mnt/tmp for all my arbitrary-disk-mounting activity.
So mount -o ro /dev/ada3p2 /mnt/tmp it is (ada3p2 is the partition name found earlier).
This particular disk turned out to be my main workstation drive around 2017,
with a handful of still-interesting files on it. Ones I would not have missed
if I hadnāt looked, but it was nice to find a presentation PDF I gave
to SIDN once-upon-a-time.
After looking, umount /mnt/tmp to unmount and release the disk.
After that, power-down and disconnect as described above.
Dealing with ZFS
Slightly newer disks might be ZFS. Hereās the partition information for one:
Providers:
1. Name: ada3p1
Mediasize: 250059309056 (233G)
label: backup0
type: freebsd-zfs
index: 1
Itās a GPT partition with a label, and ZFS on it. That means itās part of a ZFS pool,
and is probably referred to within the pool by its label. Possibly by its ID.
In any case, ZFS needs to be imported, not mounted, because the filesystems
are contained as part of the storage pool. The command to discover what is
available is zpool import , which doesnāt actually import anything.
pool: zbackup
config:
zbackup ONLINE
gpt/backup0 ONLINE
Thatās encouraging: the pool consists of a single drive and everything is online.
To make the filesystems in this pool available, I need to import it. Iāll
force it (-f, because it was probably untimely rippād from whatever machine it was
in previously), without mounting any of the filesystems in it (-N), readonly
(-o readonly=on) with a temporary name (-t zwhat), like so: zpool import -f -N -o readonly=on -t zbackup zwhat
After importing the pool, zfs list tells me what filesystems are available:
zwhat 36.2G 189G 25K /zwhat
zwhat/home 36.2G 189G 36.0G /tmp/foo/
I can mount a single ZFS filesystem just like a UFS filesystem.
The ZFS filesystem knows where it would want to be mounted (/tmp/foo, I have no
idea what I was doing back then), but we can treat it like a legacy filesystem:
mount -t zfs zwhat/home /mnt/tmp
After looking, umount /mnt/tmp to unmount and release the disk.
After that, power-down and disconnect as described above.
Dealing with Linux ext4
If the disk comes from a Linux machine, then it may have an ext4 filesystem on it.
I still usually pick that when installing Linuxes. Hereās the partition
information for one:
scheme: MBR
Providers:
2. Name: ada3s2
Mediasize: 64428703744 (60G)
rawtype: 131
type: linux-data
There is ext4 support in the FreeBSD kernel, although it is named ext2
(and some ext4 filesystems use unsupported features, and then it wonāt mount).
But for simple cases: mount -o ro -t ext2fs /dev/ada3s2 /mnt/tmp does the job.
Dealing with linux-raid
I found two disks, both WD Caviar Blue, labeled EBN D1 and EBN D2 with similar layouts.
Those are linux-raid disks, and this is something I canāt deal with in FreeBSD.
Heck, Iām not confident I can deal with them under Linux anymore, either.
Providers:
1. Name: ada3s1
Mediasize: 493928031744 (460G)
efimedia: HD(1,MBR,0xa8a8a8a8,0x3f,0x398033d3)
rawtype: 253
type: linux-raid
Re-purposing Disks
KDE has a lovely partitioning tool, but I wouldnāt be me if I didnāt go for the command-line approach.
Make sure the disk isnāt mounted anywhere,
but is powered up.
Zero out the first gigabyte or so of the disk: dd if=/dev/zero of=/dev/ada3 bs=1M count=1024
I guess this isnāt strictly necessary, and geom warns during this operation that the
GPT is corrupt and the backup GPT (at the other end of the disk) should probably be used. Ignore that.
Destroy the partition table some more: geom part destroy -F ada3 , now it is really dead.
Make a new GPT partition table on the disk: geom part create -s gpt ada3
Start adding partitions to the partition table. I (now) use labels with the last digits of the driveās serial-number.
This drive gets a gigabyte of swap (just in case) and the rest is a ZFS partition which I can add to a pool later.
geom part add -t freebsd-swap -s 1G -l swap-159666 ada3
geom part add -t freebsd-zfs -l zfs-159666 ada3
Why the labels-with-serial-numbers? Well, thatās so that I can subsequently create a ZFS pool
from labeled partitions, and it remains obvious where the parts of the pool come from
and also prevents name-collisions from naming everything backup0 and so.
Today we're releasing Krita 5.2.15. This is a bug fix release with a number of crash fixes and workarounds to improve use with the Xiaomi Pad.
Changelog
Fix crash when using a smudge brush (Bug 512243)
Update GMic to 3.6.4.1 in krita/5.2 branch
Fix crash when undoing liquefy (Bug 498696)
Fix crash when an embedded profile is faulty (Bug 509875)
Fix loading of TIFF files with JPEG compression
Force SVG gradients to work in premultiplied alpha mode, counter to specification (Bug 502118, more info in commit)
Fix Transform and Move shortcuts conflicting Timeline arrow key actions (Bug 513855)
Don't compress touch events matched to shortcuts
Treat 3+-finger-touch cancels as ends (Bug 510993)
Prevent rotation notice jitter around zero
Allow combining zoom and rotation popup messages
Disable context menu on overview widget (Bug 514238)
Make touch scrolling not trigger menu (Bug 513413)
Xiaomi stylus button and curve fixes (handle pageup and down) (more info in commit )
Steeper tablet curve for Xiaomi devices (more info in commit)
Don't flicker window on Xiaomi devices
make xcodebuild an archival build to avoid unwanted debug entitlements.
Download
Windows
If you're using the portable zip files, just open the zip file in Explorer and drag the folder somewhere convenient, then double-click on the Krita icon in the folder. This will not impact an installed version of Krita, though it will share your settings and custom resources with your regular installed version of Krita. For reporting crashes, also get the debug symbols folder.
[!NOTE]
We are no longer making 32-bit Windows builds.
64 bits Windows Installer: krita-5.2.15-setup.exe
Portable 64 bits Windows: krita-5.2.15.zip
Debug symbols. (Unpack in the Krita installation folder)
Linux
Note: starting with 5.2.11, the minimum supported version of Ubuntu is 22.04.
[!WARNING]
Starting with 5.2.11 has updated the AppImage runtime, which is known to be incompatible with the old versions of AppImageLauncher. Developers of the AppImage runtime suggest to remove or update AppImageLauncher. See this report: Issue 121
More AppImage troubleshooting info is available here: FUSE
64 bits Linux: krita-5.2.15-x86_64.AppImage
MacOS
Note: We're not supporting MacOS 10.13 anymore, 10.14 is the minimum supported version.
MacOS disk image: krita-5.2.15.dmg
Android
We consider Krita on ChromeOS as ready for production. Krita on Android is still beta. Krita is not available for Android phones, only for tablets, because the user interface requires a large screen.
64 bits Intel CPU APK
64 bits Arm CPU APK
32 bits Arm CPU APK
Source code
krita-5.2.15.tar.gz
krita-5.2.15.tar.xz
md5sum
For all downloads, visit https://download.kde.org/stable/krita/5.2.15/ and click on "Details" to get the hashes.
Key
The Linux AppImage and the source .tar.gz and .tar.xz tarballs are signed. You can retrieve the public key here. The signatures are here (filenames ending in .sig).
I've been administering KDE's participation in the Google Summer of Code program for the last few years (and mentoring on some).
This post is just some personal thoughts on the differences between what the KDE organization expects and what usually the applicants want (I'm not in everybody heads, it's assumptions from my experience). I don't provide any solution (because I don't have any) and there is no judgment (both point of views are valid), just a personal point of view.
Applicants point of view
GSoC is a individual competitive program which can be a huge boost to start a career.
There are usually two major reasons for the applicants to participate in GSoC:
the money.
the experience and the line in the CV for real life work.
There is, for a lot of applicants, no genuine interest in the projects (at least at the beginning, the first interaction is often "I want to start contributing to KDE and prepare for GSoC"), and they mostly want a GSoC slot. Small digression, on one of my projects, two people already asked to contribute and if we were doing GSoC, but after telling them that contributions are welcomed and we will only propose a topic if we feel enough confidence that the contributor would stay after, they told us they preferred to choose another project.
Contributors consider GSoC as an end of their studies, not a project they want to contribute after: there is also a change of life to consider between university life and work life and a balance to achieve when starting the latter (which could be in a different town/country) which may be a reason for the drop of interest.
Organization point of view
GSoC is an opportunity to welcome new contributors to our community.
The organization usually expects from GSoC:
contributors willing to contribute regularly to their projects.
implementation (partial or total) of the proposed ideas.
having a positive return on investment (is the time spent mentoring worth the result?)
GSoC is mostly a step to have contributors learning about the projects, and contribute in the long-term. Long-term is purposely vague; what we expected for the GCompris project was the contributor would contribute at least one year and mentor for the next GSoC (so a loop was present, and applicants would also gain an experience on mentoring, while giving some relief to the other experienced mentors) but it can vary depending on the project.
For the return on investment, mentors do not consider it good having spent more than three months mentoring for projects they could have done in less time they spent to mentor the contributor. Helping someone grow is always personally rewarding but we still hope this person will also show us the results of the teaching by improving our projects in the future.
Impacts of the differences
There is a huge difference on the expectations. What can we do to reach a common ground where everyone is happy?
Organizations cannot force anyone to contribute after the GSoC end.
If money is the main motivation to stay, most organizations will not have money to hire applicants to work after (and do we want to hire someone only motivated by money? No, it's not OSS values, we love passion).
Find ways to create a real interest for the organization. In KDE, we have the chance to have tons of projects with different topics (astronomy, education, digital painting, video editing, scientific plotting, games, desktop environment, system administration, internationalization, ...) where it is easy to participate to other projects from time to time and learn new things if we are curious enough.
Be stricter on the entry point for organizations: explicitly say in the beginning that we expect a long-term relationship not just the equivalent of an internship. It should reduce the number of applicants and only keep the ones with a genuine interest (if applicants are honest of course).
Organizations/Mentors could reduce their objectives of GSoC and consider that contributors are here to produce and spend less time on training/mentoring, expecting contributors already know the basics, but this would totally spoil the nature of the program.
Another track is to find the projects where contributors stay / don't stay and understand the difference. Most of the big KDE applications don't manage to keep their contributors, while smaller ones do. Maybe as a contributor, it's because it's more difficult to take decisions, feel included/listened on large projects because they have a high maturity level/long-term contributors and a well-defined vision?
Whereas on smaller projects, there are fewer constraints from the existing environment and it feels more rewarding and motivating to contribute there?
To conclude, here are the statistics for KDE retention the last years:
Year
Started
Completed
Active after 1 year
Active after 2 years
Active after 3 years
2018
20
17
5
5
4
2019
24
22
9
8
8
2020
21
19
2
2
1
2021
16
15
8
6
3
2022
7
6
5
1
0
2023
9
7
3
3
2
2024
10
10
4
2
-
2025
15
12
6
-
-
That is, an average of 15 people sign up each year, of which
an average of 90% finish
44% continued contributing 1 year later
28% continued contributing 2 years later
22% continued contributing 3 years later
We would of course love having more contributors staying at least one year but it's almost half and a quarter that stay active for a few years!
This is second beta of Plasma 6.6, which includes several bugfixes before final release on 17th February 2026.
Here are the new modules available in the Plasma 6.6 beta:
plasma-login-manager
plasma-keyboard
plasma-setup
Some important features and changes included in 6.6 beta are highlighted on KDE community wiki page.
View full changelog
We are happy to announce the release of Qt Creator 18.0.2!
This release fixes a range of smaller issues like the persistence of the "Always save files before build" option and an issue that occurred when using some custom toolchains with vcpkg. It also updates the wizard templates for the Qt Safe Renderer.
Bouncy Ball. A proper KDE 4 classic. Many hymns of praise have been sung about this lovable desktop extension. Do You Remember the KDE Bouncy Ball Widget? Fear not, OMG! Ubuntu! You will bounce again! The KDE Ball Widget Bounces Back to Life It's a widget that lets you play with a bouncy ball on...... Continue Reading ā
Nicolas Fella wrote a bit about enabling memory leak detection in KDE CI,
and I thought Iād add some comments from a different software engineering environment (e.g. my work-work).
Guidelines for Memory Management
At work-work, we have a slightly peculiar software environment:
Bleeding edge C++ use ā C++23 if possible, 26 features being experimented-with ā and a strong reliance on C++
language and library features. Use C++ containers, std::string (with an *implicit āhere be UTF-8-encoded
stringsā), std::jthread, business-logic in standard C++ wherever possible.
Qt 5.6.3, from 2017, for UI code. Thatās pre-C++17.
This leads to two guidelines about memory-management in our application:
Use Qtās memory model and ownership only for QWidgetās inheritance tree,
.. well, ok, incidentally for things inheriting from QObject.
Use C++ resource management for all other memory-management.
This does mean that depending on where in the codebase youāre working,
you either have to be a āC++ puristā (as Nico puts it)
or a āQt pragmatistā (as Iāll phrase it).
Note that the guideline is not āuse smart pointersā, because that last guideline can
deconstructed a little (it wouldnāt surprise me if this was inspired by Klaus Iglberger):
If a class manages a resource, then that resource-management should be the only thing it does,
If an object needs resources, then those resources should be members (sub-objects) of a class as above.
Often that means that memory-management is in the hands of std::unique_ptr, but
std::vector does the job also. We have a handful of other classes for resource-management
as well, like a wrapper for FILE * for those places where we need to interact with
Cās stdio library. Granted, FILE * is probably not a source of memory-leaks, but
it is a managed resource, and forgetting one will lead to leaking file-descriptors in the long run.
Leaky Libraries
Dealing with memory leaks can be difficult particularly when they happen in
libraries not under your control. As an example, I wrote this program (
headers elided for brevity) which is a Qt5 program:
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QTimer::singleShot(5000, qApp, &QApplication::quit);
return a.exec();
}
This is, like, the simplest Qt5 program. It sits there for five seconds and then quits.
It also leaks 1662 bytes of memory, in 19 allocations, according to my ASAN output.
They leak from allocations done in libQt5Core. Adding a QLabel and displaying some
text adds leaks in libfontconfig, and the leaks keep accumulating as more libraries enter the mix.
Granted, none of these leaks are large. Iām not even sure that they are impolite,
but theyāre there and it makes tracking down leaks in my code harder, because
thereās some baseline of leakage that I need to ignore. Filtering out the
noise becomes a serious undertaking.
Takeaway
Chasing all the memory-leaks is hard. Chasing any leaks in KDE Frameworks is something
I can only applaud.
Leaking memory is impolite. Itās messy, it can suggest logic bugs, and thanks to AI grifters RAM is expensive.
Unfortunately C++ makes it rather easy to leak memory. Fortunately we have tools to find such leaks. One such tool is Leak Sanitizer (LSAN) from the Address Sanitizer (ASAN) family. Itās using compiler-based instrumentation for the code to reports any leaks after the program terminates.
KDEās CI infrastructed has ASAN enabled for a while. However the leak sanitizer part was explicitly disabled, so no leaks were reported as part of the CI build and test run. This is because a number of projects have pre-exisiting memory leaks that would cause the C build to fail. Of course those should be fixed eventually, but in order to do that we need to know where they are. Also, for projects that currently donāt have any leaks we want to enforce keeping it that way.
A few lines of Python later KDEās CI system now allows to enable LSAN on a per-project basis. The .kde-ci.yml file that governs CI builds in KDE gained a new option enable-lsan. It is off by default for now for compatibility, but we may consider enabling it by default eventually.
If enabled and any memory leak in a test is detected, that test and therefore the whole CI pipeline will fail.
Now once we found a leak, what can we do about it? Thereās several options:
Use good old delete/free(). Works, but is often rather error-prone.
Use QObjectās parent mechanism. Works, but often frowned upon by C++ purists. Mostly makes sense for widget hierarchies.
Smart pointers like std::unique_ptr/std::shared_ptr. These are great because they allow to express the ownership on an API level and make ownership transfers explicit. Often the best choice for business logic code.
LSAN is now enabled for some Frameworks CI builds, but ideally it would be enabled for all KDE projects. And of course any leaks found along the way should be fixed.
Happy leak-fixing!
Letās go for my web review for the week 2026-04.
FOSS for digital sovereignty in the EU
Tags: tech, europe, politics, foss
Need inspiration for your answer to the European Commission call for evidence on open source? This is a good one.
https://www.more-magic.net/posts/open-source-in-the-eu.html
Writing First, Tooling Second
Tags: tech, web, self-hosting, blog, writing
Get out and write indeed. You can fiddle with the tools later.
https://susam.net/writing-first-tooling-second.html
Attention Media ā Social Media
Tags: tech, social-media, attention-economy, fediverse
There was indeed another path for social media⦠Letās hope the Fediverse stay on its current course.
https://susam.net/attention-media-is-not-social-media.html
Why people believe misinformation even when theyāre told the facts
Tags: tech, social-media, fake-news, attention-economy
Or why the focus on fact checking is doomed to fail. You canāt ignore our biases, the social context, and above all the toxic architecture of the big social medias.
https://theconversation.com/why-people-believe-misinformation-even-when-theyre-told-the-facts-271236
Deep reading can boost your critical thinking and help you resist misinformation ā hereās how to build the skill
Tags: tech, reading, social-media
Not all reading is born equal. The intent matters quite a lot. Build the skill, itāll last a life time.
https://theconversation.com/deep-reading-can-boost-your-critical-thinking-and-help-you-resist-misinformation-heres-how-to-build-the-skill-268082
Giving University Exams in the Age of Chatbots
Tags: tech, university, teaching, ai, machine-learning, gpt, ethics, foss
Interesting ideas on how to approach teaching at the university. It gives a few clue on how to deal with chatbots during exams, can be improved but definitely a good start.
https://ploum.net/2026-01-19-exam-with-chatbots.html
Why Weāve Tried to Replace Developers Every Decade Since 1969
Tags: tech, programming, business, leadership, complexity, history
Good historical perspective about the attempts to get rid of developers. This never unfold as envisioned. This is mostly about the intellectual work to build artifacts handling the world complexity, and this doesnāt go away.
https://www.caimito.net/en/blog/2025/12/07/the-recurring-dream-of-replacing-developers.html
Malware Peddlers Are Now Hijacking Snap Publisher Domains
Tags: tech, packaging, supply-chain, security
New packaging ecosystems bring their new attack vectors. This is definitely a teething problem which will need to be addressed soon.
https://blog.popey.com/2026/01/malware-purveyors-taking-over-published-snap-email-domains/
An adversarial coding test
Tags: tech, security, ide
Are you sure you want to trust that random project you got provided with? Really?
https://runjak.codes/posts/2026-01-21-adversarial-coding-test/
Pocket TTS: A high quality TTS that gives your CPU a voice
Tags: tech, ai, machine-learning, speech
Sounds like a very interesting model (pun intended). Itās really nice to pack that much performance in a smaller neural network.
https://kyutai.org/blog/2026-01-13-pocket-tts
Personal infrastructure setup 2026
Tags: tech, self-hosting, infrastructure
Nice ideas for setting up your own infrastructure at home.
https://linderud.dev/blog/personal-infrastructure-setup-2026/
Unconventional PostgreSQL Optimizations
Tags: tech, databases, postgresql, optimization, performance
When everything obvious fails⦠there are still optimisation tricks available for your databases.
https://hakibenita.com/postgresql-unconventional-optimizations
Why DuckDB is my first choice for data processing
Tags: tech, data-science, databases, pandas, duckdb
I definitely would like to have some time to fiddle with DuckDB more. It looks like a really neat alternative to something like pandas.
https://www.robinlinacre.com/recommend_duckdb/
Understanding C++ Ownership System
Tags: tech, c++, memory, type-systems
Nice introduction of the C++ ownership system. Nothing new under the sun obviously but since I still encounter developers struggling with this, such introductory material is nice to have handy for sharing.
https://blog.aiono.dev/posts/understanding-c++-ownership-system.html
Rustās Culture of Semantic Precision
Tags: tech, rust, culture
This is indeed an important cultural trait in the Rust community. This can bring challenge when integrating Rust code into a context with more ambiguity.
https://www.alilleybrinker.com/mini/rusts-culture-of-semantic-precision/
LikeC4
Tags: tech, architecture, c4, tools
Still young and pretty much a one man show. This could turn into a nice tool to use C4 more productively.
https://likec4.dev/#features
Pushing the smallest possible change to production
Tags: tech, team, organisation
This is good advice. Going for something extremely small first is a good way to on board in a new project.
https://ankursethi.com/blog/smallest-possible-change/
A year in the life of a Staff Engineer
Tags: tech, tech-lead, leadership, management, product-management, engineering
This is a good overview of what the Staff Engineer can be. Thereās of course a lot of variation depending on time, priorities and the culture of the organisation.
https://medium.com/@_davidanderson/a-year-in-the-life-of-a-staff-engineer-84ae9f6963c1
Work friends are the secret to great culture
Tags: tech, work, team, culture, leadership
Feels a bit odd to go to such length to put it in numbers. And yet, itās clear that friendships in the workplace are a must. They should be fostered rather than stifled.
https://www.makeworkbetter.info/p/work-friends-are-the-secret-to-great
The Most Powerful Pirate In History
Tags: history
Fascinating story. Some people shouldnāt be forgotten.
https://www.youtube.com/watch?v=y2lkVlB96y4
Bye for now!
Tellico 4.1.5 is available, with a couple of updates. This will be the last release that retains compatibility with Qt5.
Improvements
Fixed Arxiv ID search to return correct results.
Updated the Data Crow importer for its new XML format.
Updated the IGDB source.
Corrected XML usage for arch with unsigned char, like ARM.
Iāll have the next release out soon, v4.2, with several more updates, and requiring Qt6.
Plasma + Usability & Productivity Sprint in Valencia, Spain | 2019 Itās been almost 7 years since I made a post titled āFirst steps in open-sourceā where I talked about joining KDE - a Linux community of kindred spirits working on free and open-source software. Brimming with optimism and still living the more or less...... Continue Reading ā
Every year the KDE Community actively helps people to become active community members and
contributors to Free Software through our Season of KDE mentorship programs.
We would like to warmly welcome this year's mentees Aviral Singh, Keshav Nanda, Vishesh
Srivastava, Varun Sajith Dass, Aditya Sarna, Jaimukund Bhan,
Navya Sai Sadu, Kumud Sagar, Arun Rawat, Tanish Kumar, Ajay Singh, Mohit Mishra,
Rohith Vinod, Shivang K Raghuvanshi, Onat Ribar, Hrishikesh Gohain, Aryan Rai,
Advaith SK, CJ Nguyen, Siddharth Chopra, Nitin Pandey, Pavan Kumar S G,
Sayandeep Dutta, Sairam Bisoyi, and J Shiva Shankar. They will be working on 21
projects covering a wide range of apps, frameworks, utilities and software in general to
improve KDE.
Sok 2026 Projects
Standardise translation reference paths across all KDE projects
Translators work on PO files that contain the translation data, including the file path to
the file that the specific translation comes from. To understand the purpose of a particular
string, sometimes the translators need to view the translatable strings in the code itself. To
allow KDE to build tooling around the paths, the PO files must be standardised so that all
contain file path references relative to the project root rather than from an arbitrary directory.
This work has been started already but will be finished during this SOK project. Aviral Singh
and Keshav Nanda will work under the guidance of Finley Watson on edge cases, testing and
cleaning up the merge requests ready for merging. They will also improve the test script.
Lokalize tasks
All Lokalize projects will be mentored by Finley Watson.
Introduce Appium testing
Vishesh Srivastava will be integrating
Appium testing in Lokalize. Appium is already used by other KDE software,
and could be very helpful for testing UI changes, including keyboard shortcuts. This task will
include coordinating with other mentees as they modify parts of the UI, as well as writing other
general tests.
Improving logic consistency and MacOS platform stability
Varun Sajith Dass will work on fixing reported bugs, and improving
string processing in many parts of Lokalize. Varun's aim is to increase the robustness of Lokalize's
existing features, improve the quality of the output, and make following the Human Interface
Guidelines easier for translators. This work will require coordination with other mentees e.g. for
writing tests. Varun also aims to make it possible to build Lokalize on MacOS by fixing bugs related
to this.
Fix the glossary
The glossary tab in Lokalize is unintuitive and hard to use, and currently crashes Lokalize unless
you manually add the file that saves the glossary data to disk. Aditya
Sarna and Jaimukund Bhan
will update the UI so that it is easier to use, improve the glossary's behaviour, fix bugs and
better follow the Human Interface Guidelines. They will work with the translators and visual
designers to ensure their work follow KDE best practices and creates meaningful improvements.
Jump to next translation unit when sort filters are applied
The editor tab contains a dock widget called "Translation Units" which has the ability to filter and
sort entries in translation files with the search bar. Moving between entries while approving them
by using the shortcut jumps about in the list, rather than working down the sorted list correctly,
one after another. Navya Sai Sadu and Kumud
Sagar will be working together to fix this so the keyboard shortcut
behaves as expected.
Redesign translation memory tab
The translation memory tab allows you to pick a TM (saved translation pairs from previous
translation jobs / files) to search through, and shows the results in the list below. Arun
Rawat will be redesigning the UI to enable searching multiple
memories at once, with these settings saved per-project. Additionally, the Translation memories
manager will be merged into the tab instead of existing separately e.g. by moving TM-specific
entries into the right-click menu, and adding more general buttons into the TM tab page, or the
toolbar that is specific to the TM tab.
Standardise menubar
Lokalize uses a KDE framework, KXMLGUI, to manage its menubar and status bar. In Lokalize, KXMLGUI
allows you to define the contents of the menubar for each tab. Right now the tabs have different
ordering of menus with some menus missing in certain tabs.
Tanish Kumar will re-design the menubar so all tabs to offer
the same menubar. Where a tab does not use a menu, the menu will be added, with menu options
disabled.
All Lokalize projects will be mentored by Finley Watson.
Investigate alternatives to dblatex to convert docbook to pdf
KDEās documentation build pipeline currently relies on a legacy, copy-pasted fork of
dblatex embedded inside the docs-kde-org repository. While functional, this setup
obscures Git history, complicates upgrades, and makes KDE-specific customizations such as kdestyle
difficult to understand and maintain.
Ajay Singh, under Johnny Jazeix guidance, will investigate the
possibility of using other tools than dblatex (such as pandoc)
to create the pdf from docbook. The aim is to see if it fixes the
current issues we have with non-supported non-ascii languages.
And if there is a working alternative, he will work on trying to have
a similar style to what we currently have in the kdestyle.
Extract dblatex fork from docs-kde-org repo and improve non ascii languages support
we are currently reworking the documentation website.
The first task was to generate the documentation of each repo in a specific job.
Mohit Mishra will work on extracting the dblatex from the code into its own repo (keeping
the history) and finding out if we can directly clone the original repository instead of having a fork.
Mentored by Johnny Jazeix, the overall goal is to try to use the upstream dblatex (shipped in
distributions) to generate the pdf, experiment with XeTeX PDF generation engine instead of pdfTeX
to create PDF for non supported non-ascii languages (Arabic, Chinese, Japanese, Korean...). If we
can't improve it, extract dblatex fork on a specific repo to ease the maintenance`
Implement font subsetting when saving files in Okular
Okular supports PDF annotations and form-filling. When a user adds text to a document,
Okular must ensure that the text remains readable on any system irrespective of whether the
font is installed locally or not. Hence the font data is directly embedded into the
document using the PDF rendering library Poppler.
The problem arises due to the lack of proper font subsetting (as Poppler does not support this).
Modern OpenType and TrueType fonts contain thousands of glyphs for various languages and symbols.
Okular approaches this by embedding the entire font file into the document. This causes an
undesirably large file size due to all the extra unused glyphs/symbols being embedded.
Rohith Vinod and Shivang K. Raghuvanshi, under Albert Astals' supervision, will work on
solving this problem using the hb-subset-input-glyph-set API.
Plasma Setup: mobile support
Plasma Setup is KDE's first run setup wizard, providing a friendly way to create the first user
account and configure basic system settings. Unfortunately it only works on desktop form factors
Under Kristen McWilliam's guidance,Onat Ribar will work on supporting Plasma Setup for Plasma Mobile as well.
KEcoLab
Recent updates in the lab mean that X11-based emulation tools like xdotool are obsolete. Guided by
Joseph P. De Veaugh-Geiss, Karanjot Singh, and Aakarsh MJ,
Hrishikesh Gohain will be tasked with porting existing scripts to a
Wayland-based tool. Once Wayland support is ready, Hrishikesh will prepare test scripts to measure
the KDE Plasma Desktop Environment itself.
Turning mentorship.kde.org into a proper onboarding platform
mentorship.kde.org currently looks like a website, but does not behave like an onboarding system.
Aryan Rai and Advaith SK will be required to convert the site into a guided entry point for
KDE mentorship.
Anish Tak and Paul Brown will be guiding Aryan and Advaith throughout the project.
Automate Promo data collection
Promo collects data from different sources that measure how our followship grows,
how many outlets are talking about us, what is our level engagement, etc. This
information is currently collected by hand and is a massive time drain. CJ Nguyen,
mentored by Paul Brown, will create systems to automate the collection, storage
and analysis of this data.
Markdown and plain text editors for Marknote
Siddharth Chopra will be adding two editors to MarkNote, an app that lets you create
rich text notes and easily organise them into notebooks. The first editor is a raw
markdown editor for .md files and a plain text editor for .txt files.
Siddharth also plans to work on making some improvements to the current markdown editor.
Carl Schwan will be Siddharth's mentor in this project.
Making Cantorās existing tests visible, reproducible, and actionable in CI
In this project, Avyakt Jain aims to activate
Cantorās existing testing infrastructure in a low-risk,
incremental, maintainer-friendly way by (1) producing a clear, factual overview of
current test coverage and gaps, (2) enabling a minimal, MR-scoped CI test job that
provides visible JUnit-based feedback, and (3) improving reproducibility and documentation
for running tests locally. The expected outcome is faster, more reliable feedback for
maintainers and contributors, without enforcing new quality gates or changing Cantorās
runtime behavior.
Alexander Semke and Stefan Gerlach will be supervising Avyakt's work.
Call log synchronization and backup in KDE Connect
Nitin Pandey will be working on improving telephony
integration in KDE Connect by implementing call log synchronization and backup from
Android devices to the desktop. Instead of creating a separate desktop client for call
history, the project will integrate call logs directly into the existing KDE Connect
SMS client on the desktop, providing a unified communication view.
Albert Vaca will be mentoring this project.
Enhancement of KDE Mancala: Engine Parallelization and Digital Asset Creation
Pavan Kumar S G will speed up MankalaEngine by enabling it to use threads, Pavan Kumar SG will also create artwork to be used in the Mankala NextGen GUI.
This project will receive guidance from Benson Muite and Srisharan VS.
Improve Mankala GUI and add translations for Game variants
Sayandeep Dutta will improve the visual appeal of Mankala NextGen GUI and contribute towards it going through KDE Review. In addition, Tamil translations will be created for MankalaEngine and Mankala NextGen.
Srisharan VS and Benson Muite will support this project.
XMPP Support in Falkon through WebXDC
Sairam Bisoyi will create a Falkon extension to allow it to be used for chat using the XMPP protocol and its WebXDC extension..
The project advisors are Schimon Jehudah, Juraj Oravec and Benson Muite.
Adding Vamana Guntalu to Mankala Engine and a WebXDC bookmarking system in Falkon
J Shiva Shankar will add the Vamana Guntalu mancala game to MankalaEngine. J Shiva Shankar will also create a Falkon extension to allow synchronization of website bookmarks across different devices using the XMPP protocol in a WebXDC application.
The project advisors are Schimon Jehudah, Juraj Oravec and Benson Muite.
Stay in the loop!
You will be able to follow the progress of all mentees through their blog posts on
KDE's planet, and by joining the relevant project
communication channels.
In 2026, Agustin relocates to La Palma while evolving his independent consulting practice. He aims to specialize services, explore freelancer collaborations, and adapt to AI, while remaining active in the thriving global open-source community.