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.
Kalendar
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 @clau-cambra:kde.org on Matrix. 😃
See you next week!