GSoC/2020/StatusReports/ShashwatJolly: Difference between revisions
Line 103: | Line 103: | ||
https://drive.google.com/file/d/1nWU5yaG_Anpl6L_QvMal0Vf2g_sQtC56/view | https://drive.google.com/file/d/1nWU5yaG_Anpl6L_QvMal0Vf2g_sQtC56/view | ||
==== Open | ==== Open merge request on Invent ==== | ||
https://invent.kde.org/pim/kdepim-runtime/-/merge_requests/1 | https://invent.kde.org/pim/kdepim-runtime/-/merge_requests/1 | ||
Revision as of 12:31, 23 August 2020
Project summary
The Akonadi framework is responsible for providing KDE PIM applications with a centralized database to store, index and retrieve the user's personal information. The data can be stored either in local files or can be synced via a host of services like Google Calendar, Microsoft Exchange WebServer (EWS) or a number of Groupware servers like Nextcloud, DAV etc.
The proposed project is to add to this list a secure, end-to-end encrypted, FLOSS sync solution for your contacts, calendars and tasks, called EteSync. EteSync clients are available for Android, iOS, the desktop (Cal/CardDAV bridge) and the web, and a Thunderbird plugin is in the works. The server too is open-source and can be self-hosted.
The idea is to implement an Akonadi backend resource to enable KDE users to use EteSync to easily end-to-end encrypt and sync their contacts, calendars and tasks.
Mentors
Deliverables
- A new backend resource for EteSync in Akonadi
- A configuration dialog to take as input an Encryption Password required by EteSync to properly integrate the module with Akonadi
- Rigorous testing as personal user data is being handled
- Adding relevant documentation for testing and using the resource
Progress Updates
The new EteSync resource in Akonadi
- Made a new subdirectory for the resource
- Added the EteSync dependency to KDEPIM Runtime
- Got project to build successfully
This required understanding the CMake system, adding relevant dependencies for the new project, and using KDE-specific tools like ECM for logging.
Adding EteSync address books to Kontact
- Implemented relevant functions to get EteSync address books and contacts to show up in Kontact
This involved understanding EteSync's C/C++ library, Akonadi's ResourceBase class, and implementing the relevant function like retrieveCollections() and retrieveItems() to fetch EteSync journals and entries and supply them to Akonadi.
Adding EteSync calendars and tasks to Kontact
- Implemented relevant functions to get EteSync calendars and tasks to show up in Kontact
- Complete implementation of a two-way client for EteSync in Kontact
Firstly, I had to extend the functionality implemented for address books and contacts to calendars and tasks, which was quite simple due to EteSync's similar handling of all types (basically treating everything as a content string). Then, I had to ensure that local changes are being pushed to the server too. For this, relevant function like itemAdded(), itemChanged(), itemRemoved(), collectionAdded(), collectionChanged() and collectionRemoved() had to be implemented.
Implementing the EteSync configuration dialog
- Implemented a two-step configuration dialog for the user to enter their username, password, server URL and encryption password.
This required some basic knowledge of Qt, as I had to create a setup wizard, which validated inputs, initialised pages, and let users initialise their EteSync account if they were signing in for the first time. It also included displaying error messages to users for various errors (bad login password, encryption password, server error etc).
Code review + Beta testing
- Submitted a Merge Request for maintainers to review code and suggest feedback/changes
- Published a "Call for beta testers" for interested KDE and EteSync users to test the new integration
- Many bug fixes based on feedback from mentors and testers
Making the project ready for beta testing was very interesting and insightful. I learnt a lot from the discussions on the MR, and from the various bugs discovered during testing.
Period updates
- Week 1: https://www.thejollyblog.tech/posts/KDE/gsoc-part-1-lets-get-started
- Week 2-3: https://www.thejollyblog.tech/posts/KDE/gsoc-part-2-the-coding-period-starts
- Week 4-5: https://www.thejollyblog.tech/posts/KDE/gsoc-part-3-adding-etesync-addressbooks
- Week 6-7: https://www.thejollyblog.tech/posts/KDE/gsoc-part-4-adding-etesync-calendars-tasks
- Week 8-10: https://www.thejollyblog.tech/posts/KDE/gsoc-part-5-call-for-beta-testers
Communication on the kde-pim mailing list
Sorted chronologically:
- GSoC 2020 | Introducing myself (sjolly)
- Sharing my progress (EteSync sync backend for Akonadi, GSoC '20)
- Questions regarding code design choices for Akonadi resource
- Questions regarding Akonadi resource development
- Questions regarding KDE PIM resource development
Relevant links
Blog
https://thejollyblog.tech/tag/kde/
Repository
https://invent.kde.org/sjolly/kdepim-runtime/-/tree/etesyncResource
Project proposal
https://drive.google.com/file/d/1nWU5yaG_Anpl6L_QvMal0Vf2g_sQtC56/view
Open merge request on Invent
https://invent.kde.org/pim/kdepim-runtime/-/merge_requests/1
Personal info
Name: Shashwat Jolly
Email: [email protected]
Invent: https://invent.kde.org/sjolly
IRC: sjolly on Freenode