Beginning my GSoC'22 journey with GNOME
Tags: gsoc, opensource, gnome
Published: 2022-05-29 06:38:20

It was the late night of the 20th of May. My eyes were glued to the email, waiting for the results of the GSoC'22 when I finally received an email that started with a _Congratulations_ message rather than a _Thank You for applying_ message. I was overjoyed when I read the message "**Congratulations, your proposal with GNOME Foundation has been accepted!**". This post describes my GSoC project and my journey so far with the GSoC, GNOME Foundation, and Open Source.
![GSoC @ GNOME](https://i.imgur.com/OzbtuW7.png)

## Journey so far

It was the first year of my university when I heard one of my seniors got accepted for the **Google Summer of Code**. But since I was new to the Computer Science field, I hardly understood any of the terms such as _open-source_, _git_, etc. One and a half years later, when I had some coding experience, I dived into the open-source world with **Hactoberfest**. I made my first trivial pull requests during that period. After that, I started looking for some organizations to start with the open-source contribution when I came across the **GNOME Foundation**.

I knew the GNOME organization because I used many of their products on my Fedora Desktop. When I joined their IRC, I was initially afraid to ask any questions, as it might have sounded stupid, but the community was generous to answer my stupid questions as well :)

It took me a long time to get the development environment set up. Then I just started looking for a _good-first-issue_, to begin with. In the same period, GNOME Foundation announced that they will be participating in GSoC that year. I remembered GSoC when I heard it in my first year of college, so I started looking for the projects. Out of all those projects, the **Redesigning Health application UI** caught my mind because I had just won a hackathon where our team built a [Health application](https://github.com/amankrx/Healthsy). So a Health based project had a special place in my heart.

I started working on some beginner issues and also started learning Rust alongside. My mentor, [Rasmus Thomsen (@Cogitri)](https://github.com/Cogitri) was supportive during the entire period. But, I was too under-confident in my skills, and eventually, I wasn't selected for the GSoC.

I took this rejection positively and I took some time off to work on my skills and build projects during that period. I started working on those issues again in January and this time the codebase made much more sense than the last time I tried. I went on to solve a few more issues during this period. I came to know that GNOME is participating once again and Health will also participate to revamp their synchronization feature. I participated once again but this time I was confident with myself.

And finally, I got the mail that I have been selected for the GSoC. It was a journey with a mixed feelings over the years, but I'm excited for what next I have in store.

## Introduction to Health

**[Health](https://gitlab.gnome.org/World/Health)** is a _Health and Fitness_ Tracking application. It helps the user to track and visualize their health indicators better. That means a user can track down their activities and weight progressions. The project is created and maintained by **Rasmus Thomsen**, who is also the mentor of my GSoC project.

_Attached below is the screenshot of the Health MainView:_

![Health](https://i.imgur.com/UxX35IX.png)

## About the Project

My project is titled - **_Reworking Sync Options for Health_**. This project aims to improve the synchronization features of the **Health** application. Currently, most users have to enter their data manually. **Google Fit** is the only sync provider present at the moment. We can sync steps and weights from Google Fit to our application.

The current sync feature works as follows:

1. We pull out the steps from the sync provider.
2. We convert the steps into a walking activity.

This approach works as long as we would only like to track our walking activity. But, it would be great to pull out actual _activities_ from the sync provider to get a better insight into our Health data.

So my project aims to improve the following Health synchronization features:

1. Support for syncing actual _activities_ from the sync provider.
2. Two-way sync support
3. Support for multiple sync providers such as **Apple HealthKit**, **NextCloud Health**, etc.
4. A proper User Interface and a way to handle multiple sync providers for individual Health data such as activities, weight, etc.
5. Setting up a proper model so that different Health data can be added in the future.

If the time permits, I would also like to work on the support of **PineTime Companion apps**. This way Health data can be accessed directly to the cloud services on Health and PineTime companion apps can focus on firmware updates.

Upon completion, this project will solve the major issues Health has with their synchronization at the moment.

## Ending notes

I will be updating my blog every two weeks. I have set my goals and milestones accordingly. If you would like to track my journey, keep an eye on the [blog](https://amankrx.com/blog) for updates, and check the [issue board](https://gitlab.gnome.org/World/Health/-/boards/15961). If you would like to have a look at my [proposal](https://drive.google.com/file/d/1a0X4WeUNHSKWAVQNFjpUUtb8Gjoy6Jg4/view?usp=sharing), make sure to use it just for reference.

Finally, I would like to express my gratitude to **GNOME** for believing in me and giving me this opportunity to contribute. I would also like to thank my mentor **Rasmus Thomsen** for guiding me throughout the journey.

At last, I would like to say that I still have a long way to go. Since I've been given this opportunity to contribute, I would stick along the way to contribute to different GNOME projects as well. But for now, I'm looking forward to a great summer ahead with GSoC.