Figuring out recurrence (and bugs…) in Kalendar’s week 3 (GSoC 2021)

This week, we have been focused on making sure that the event editor is finally fully functional – at least, for adding events. 😉

The main obstacles to that were a lack of working recurrence rules and general bugginess, especially around keyboard input of event date/time. Once this week’s merge request is merged, most of that should be fixed!


With this week’s merge request, the previously inactive “Repeat” section of the event editor now does what you would expect it to. Now, like in KOrganizer, Kalendar lets you pick how your event is going to repeat, either by selecting a preset (e.g. Daily/Monthly/etc.) or by creating a custom recurrence rule. Custom recurrence rules have special layouts that allow you to create a rule that works exactly the way you want it to!

With this, the event editor sheet is now fully functional for adding events to your Akonadi-connected calendars!

General fixes

Looking forward to next week, some of the groundwork has also been laid for the event editor sheet to be ready for editing events. A lot of this has meant changing the way input fields work, mapping their values directly to the event object’s instead of applying changes on event addition. With these changes, implementing editing on this sheet should require minimal adjustment.

Time has also been spent testing and bug-fixing the current implementation, meaning you should be able to add events more reliably!

Up next

Even though some parts of the event editor should be almost ready for event editing, some of them (like our new recurrence UI) still need to be worked on.

Making the event editor a separate dialog window is also still on the to-do list! 😬

If you have any ideas for Kalendar, get in touch! I’m on Matrix.

Week 2 on Kalendar (GSoC 2021)

Last week’s merge request was manually merged by Carl, and now Kalendar has a (kinda) working event editor sheet! Some bits work and others don’t:


  • Title, location and description addition to event
  •  Event date and time setting
  •  Reminder and attendee attachment to event

Super not working right now:

  • Event recurrence

So… mostly there!

New week, new merge request

This week’s MR involved a big refactor of the linkage between the front-end of the reminder and attendee addition UI and the back-end stuff going on.

All this stuff now happens with models, and changes in each of the fields gets added to the models. This means that anything that you see in the UI should directly reflect whatever is present in the actual event — you won’t see a reminder and attendee that isn’t actually in the event. The benefits of having a single source of truth!

The UI for each attendee’s details has also changed, and it now allows you to select the attendee’s status (i.e. have they RSVPed?) and it also lets you request an RSVP from the attendee.

Also, Kalendar’s repo has been moved into the PIM namespace on Invent, so now you can more easily find it 🙂

Up next

Recurrence is going to get figured out, and with that, the event editor should finally be fully functional. That’s number one on my agenda for next week.

Additionally, while an overlay sheet is a good solution for the event editor on mobile, a separate window would let it have some extra breathing room on desktop. So this is something that I will also be working on next week.

If you have any ideas for Kalendar, get in touch! I’m on Matrix.

First week of Google Summer of Code 2021

A year ago I’d just finished my History degree and I had no idea how to code. This year, I’m taking part in Google Summer of Code! I’m super happy to get the chance to learn more about how KDE software works, and to finally contribute to a project I’ve been using for years.

Over the summer, I’ll be working with KDE developers to create productivity-focused components for Plasma Mobile that work with Akonadi, KDE’s personal information management framework. Akonadi is a super useful piece of kit: it allows developers to tap into a user’s synchronised e-mails, contacts, calendars, providing a seamless experience in productivity tools. I’ll be working on this project with my mentor Carl Schwan, who also helped me during my time doing Season of KDE, and Devin Lin.

The state of affairs

Plasma Mobile is quickly shaping up to be a viable alternative to the Android/iOS duopoly, but it’s not quite there yet. KDE developers are hard at work, nailing the basics. KDE’s Plasma provides an incredibly solid foundation, though unfortunately many of the powerful desktop applications that the KDE community are not suitable for use on mobile devices.

This is mainly due to the fact they are built with a GUI framework called KXMLGui, which allows developers to create intricate and capable user interfaces for applications ranging from video editors to word processors to web browsers. Unfortunately, it’s not just made to be convergent — i.e., adaptable to different display sizes and interaction types (touch vs mouse and keyboard).

KDE’s projects are underpinned by Qt, an immensely powerful toolkit for C++ that lets you create UIs. Thanks to efforts by the Qt team, QML (a UI markup language) and Qt Quick (QML’s standard library) provide a new way of designing UIs that are built to adapt well to different device form factors. The big brained developers at KDE then developed Kirigami, a Qt Quick framework that makes it easy for a developer to bang out a pretty and convergent application usable on the desktop and on your phone (yes, this includes Android and iOS!).

However, Kirigami is still young, and the amount of applications that use it is still growing. Currently, there are a lack of productivity applications that take advantage of Akonadi.

Psst. Thinking of building a Kirigami app? Read the tutorials I wrote on KDE Develop.


Fortunately, people at KDE have already got the ball rolling. My mentor Carl Schwan started work on Kalendar, a Kirigami application that lets you display the events present in your Akonadi-synchronised calendars. However, Kalendar remains a proof-of-concept… for now.

My work for GSoC will focus on turning Kalendar into a fully-usable application that will let you view, add, and edit events in all the ways that a normal calendar application would, on both your PC and your phone. This involves figuring out how event ingestion and modification works in Akonadi, how Akonadi stores and retrieves data, and a lot of UI usability testing. By the end of the summer, we should be a lot closer to having a powerful calendar you can use with your fingertips on Plasma Mobile. 🙂

First week’s work: EventEditor merge request

In this first week, some progress has been made!

Kalendar now has an event editor sheet. While still a work-in-progress, once done, it should let you add and edit events, and let you provide dates, descriptions, reminders, attendees, and more.

Here are a bunch of screenshots of the sheet. So far, the combo boxes for the date and time fields are using custom date and time picker widgets. An upstream date picker widget should be coming in a Kirigami Add-ons package soon, and it will replace the current iteration.

This sheet is very much still a work-in-progress, from both a design and functionality perspective. So far, you can add an event through the sheet, and it will be correctly ingested into Akonadi… if you select a valid calendar (the drop-down in the event editor doesn’t make it clear which calendars are editable, yet!). You can provide an event’s name, description, start/end dates and times. The attendee, reminder, and repeat options are currently non-functional, but you can bet I’m figuring those out.

Get in touch

Feel free to reach out to me if you have any feedback, or if you just want to chat – I’m on Matrix. 😃

See you next week!