Jump to content

GSoC/2020/StatusReports/ShashwatJolly: Difference between revisions

From KDE Community Wiki
Sjolly (talk | contribs)
Sjolly (talk | contribs)
Line 41: Line 41:
* Implemented relevant functions to get EteSync address books and contacts to show up in Kontact
* Implemented relevant functions to get EteSync address books and contacts to show up in Kontact


This involved understanding [https://github.com/etesync/etesync-rs EteSync's C/C++ library], [https://api.kde.org/kdepim/akonadi/html/classAkonadi_1_1ResourceBase.htmlAkonadi's ResourceBase class], and implementing the relevant function like ''retrieveCollections()'' and ''retrieveItems()'' to fetch EteSync journals and entries and supply them to Akonadi.
This involved understanding [https://github.com/etesync/etesync-rs EteSync's C/C++ library], Akonadi's [https://api.kde.org/kdepim/akonadi/html/classAkonadi_1_1ResourceBase.html ResourceBase class], and implementing the relevant function like ''retrieveCollections()'' and ''retrieveItems()'' to fetch EteSync journals and entries and supply them to Akonadi.


{|class="tablecenter vertical-centered"
{|class="tablecenter vertical-centered"

Revision as of 12:28, 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

Tom "TAsn" Hacohen

Daniel Vrátil

Adriaan de Groot

Volker Krause

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 Pull 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 PR, and from the various bugs discovered during testing.

Period updates

Communication on the kde-pim mailing list

Sorted chronologically:

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

Personal info

Name: Shashwat Jolly

Email: [email protected]

Invent: https://invent.kde.org/sjolly

IRC: sjolly on Freenode