It has been 4 months since my acceptance in the GSoC program, it is really true, time flies when you’re having fun. Google Summer of Code was one of the good experiences I’ve had. I basically didn’t have any knowledge about the open source world, but it helped me get started into knowing more about it and start contributing to those awesome communities like GNOME and EteSync. I am really glade with the experience I’ve gained and the people I knew along the journey.
What was the project about?
My project during Google summer of code 2020 with GNOME organization and EteSync was to implement an EteSync module for Evolution data server and Evolution, to enable EteSync users to add their account into Evoltuion and be able to manage their data from there.
EteSync, it is a secure, end to-end encrypted and FLOSS sync solution for your contacts, calendars and tasks. So it help keep your data safe and only you can see it so anyone who has access to the servers can not actually get or see your data.
Evolution is a personal information management application that provides integrated mail, calendaring and address book functionality, you can also add tasks and it has memo taking features. So you can add multiple different accounts to Evolution and handle all of them from one place.
See the module in action
You can easily follow the guide in here to see how to install the module and use it or just watch it in action :p.
Want the code? you can get the code from this repo.
The module can do all what you expect it to do as a user.
- Add an account to Evolution.
- Initialize new accounts (set encryption password for new users).
- Fetch you data (Address-books, Calendars and Task lists).
- Create, delete and modify data to existing journals (Contacts, Events and Tasks).
- Handle journals in your account.
- Modify (Rename and Change journal color)
about the module
The module is ready, it was created in its own repo, and the repo was approved by the maintainers and is now in the process of moving under the GNOME/Evolution umbrella.
The module uses EteSync C API. The module structure itself is somehow self explanatory. The module main code is in the src folder.
- Src Contains:
- Contains the address-book back-end files, these files have the main function for implementing the fetching and reading functionalities for the EteSync addressbooks.
- Contains the Calendar back-end files, these files have the main function for implementing the fetching and reading functionalities for the EteSync calendars.
- It has the common files used around the whole code, it also contain e-etesync-connection.c file which is a common object for handling the connection with the EteSync server, things like handling entries create, delete and modify functions same for journals create, delete and modify and other important functions for authentication and such.
- This folder is more towards the user experience with Evolution, as it contains the code for creating the credentials dialog and “initializing new users” dialog.
- It also handles storing the user credentials in the keyring a safe place for all your important data so it can be used for authentication when needed.
- Has also folder for configuring with Evolution, the most important one is the e-etesync-config-lookup.c which is used when first adding an account to Evolution, checks if account exists in server and adds the required collection source file when the user chooses to.
- Contains the back-end functionalities for handling the collection account, like fetching the existing journals, creating and deleting journals.
This part is important as I still remember the struggles I had at first. I remember I was a bit worried about finishing the project. But actually in an open source world, you’ll find all the help you need from the communities. Thanks to my mentors (Milan and Tom) and the communities of both GNOME and EteSync. I had all the support and the help I need to be able to achieve what I did. It doesn’t matter if you know exactly how to do it, what matters is you knowing what you want to do and have the passion for it and you’ll just follow that and learn along the way until you get to your target.
Thing were difficult a little at first, during building stage of Evolution and Evolution data server it took me 2 weeks, my mistake here was that I was nervous to ask for help in the Evolution IRC. Maybe I thought “how can I ask a stupid question” but actually that wasn’t one. I could’ve asked and build it in much lesser time as the community is very very friendly but I learnt that in time :P.
Also getting used to the code required time, that’s why it is required that you contribute first before sending a proposal to GSoC as it makes the job easier when you start the actual coding period.
Other than these struggles mentioned above, others were related to the project itself and that’s where you gain the experience.
what can be done next?
The project can be upgraded to use EteSync 2.0 protocol once it’s released. This will come with new improvements and a better user experience for EteSync users.
I would like to thank Milan Crha and Tom Hacohen for their assistance and cooperation during this project, couldn’t have done it with out their help. Also GNOME and EteSync for this opportunity to work with awesome communities :D.