My First Participation in a KDE Sprint
During Akademy 2025 in Berlin, I signed up for the KDE PIM Sprint. While I had never worked on PIM before, I had contributed to Plasma Mobile, Koko (for OCR implementation, still a work in progress), and Solid (for LED implementation). This was also my first time participating in a KDE Sprint.
I arrived by train from Limoges to Paris at 10:30 PM on Friday. Unfortunately, I couldn’t arrive earlier due to professional commitments, and I had to leave again on Sunday at 5:30 PM.
Starting the Sprint
On Saturday morning, I joined everyone for breakfast. Afterward, we had meetings throughout the morning and part of the afternoon. In parallel, I compiled Merkuro and KMail on my laptop. Normally, I work on my desktop computer, so I needed to compile all the KDE packages on my laptop, which isn’t very powerful. Luckily, I had started the compilation process on the train.
Once the meetings were over, I began working on PIM projects. My first task was to read the codebase to understand the various packages related to Merkuro.
Understanding Merkuro
Merkuro relies on components from Akonadi, KMailTransport, KDE PIM Runtime, and KIdentityManagement.
However, I encountered an issue with distrobox: when Carl and I tried to configure an IMAP account in Merkuro Mail, the password was never saved. After some investigation, I discovered that this was related to KWallet and KSecrets. Since distrobox doesn’t use the Plasma Desktop environment by default, many “basic” KDE services aren’t running in the background.
To fix this, I had to run the following commands:
| |
After that, I successfully configured my first IMAP account in KMail and Merkuro, and I was able to retrieve all my emails from Proton Mail.
Note: The IMAP accounts in KMail and Merkuro are synchronized because both use KIdentityManagement and KMailTransport.
Contributions
I also opened a small merge request based on Carl’s recommendation regarding the unnecessary use of Layout.fillWidth: true (MR #595).
Next, I tried to add a new identity in Merkuro, but it wasn’t saved. This time, the issue wasn’t related to KWallet. Instead, it was because when the identity was passed as a property to the component, it was copied. So, when I modified the identity, it only modified the copy, not the “main” identity reference itself. This happened because Identity is a QGadget type, not a QObject see the definition here.
To fix this, I changed the property type to the backend type. I could then access the current identity using backend.identity. I updated all occurrences in the code and opened the following merge requests:
Finally, I started investigating why I didn’t receive any errors when trying to add an IMAP account related to KSecrets. It seems to be managed here.
I left the Sprint having started work on the “Add an Identity” feature, which you can follow here.
Conclusion
I really enjoyed participating in the KDE Sprint. It was wonderful to catch up with Carl again. I’m truly grateful for the time he took to help me get up to speed with the project. The discussions with Laurent were also incredibly engaging, and even my brief conversation with Ingo was meaningful, though I still struggle a bit with spoken communication.
Once I’m less busy personally, I plan to:
- Migrating the Waydroid implementation to Plasma Workspace, as discussed with Carl.
- Continuing my contributions to PIM.
- Helping out with KAIChat.
Looking forward to the next opportunity to collaborate with the KDE community!
Useful links
Official KDE PIM Sprint 2025 Blog post
Gitlab projects: