GSoC Blog - Week 1
Tags: gsoc, vue, webdev, opensource
Published: 2022-06-19 20:46:37

Hey everyone! Hope you're doing well and drinking enough water!

#### Introduction
So - a small introduction of me - I am Yash Kandalkar, an IT undergraduate from Maharashtra, India. I started my programming journey when I was 16, with Python as my first language. It taught me a lot of important programming concepts. Currently, I love doing frontend web development.

Recently, I got selected into [Google Summer of Code](https://summerofcode.withgoogle.com/), an open-source program for students and working professionals. 
This was a dream come true. I am working on making a User Interface for configuring the simulation run for the [Generic Carbon Budgeting Model (GCBM)](https://moja.global/flint/flint-pilot-projects/#:~:text=The%20Generic%20Carbon%20Budget%20Model%20(GCBM)%2C), a model to generate detailed maps of carbon changes and emission associated with land use change.

#### The Beginning
I got to know about [Moja Global](https://moja.global) from [Shloka Gupta](https://github.com/chicken-biryani/), the UI working group lead at Moja Global. Shloka and [Soham Shah](https://github.com/sohamsshah), a past contributor and an LFX Mentee at Moja Global, helped me a lot during my initial contributions in the organisation.
The Moja Global community is very welcoming and all the members help new contributors in getting started with the projects. All you have to do is show interest, attend weekly meetings, and play around with the projects of your interest to have an understanding of the existing code. 
There is also a Documentation Working Group which works on writing technical documentation of the sciences involved in these models and working of the [documentation website](https://docs.moja.global/).

#### The Proposal
The proposal writing process for the GCBM Simulation Project was a lengthy task. I joined the organisation just a few weeks before the GSoC projects list was published, so I was still getting to know how the things worked. I read lots of documents, and watched the [Introduction GCBM Simulation](https://www.youtube.com/playlist?list=PL_WECUlMWiUmZYoPHNn6RnMSia5Naj5gE) to have a deeper understanding of the project. Before the deadline I had already made a lot of contributions to the [FLINT-UI](https://www.github.com/moja-global/FLINT-UI) project, and had a fair understanding of what was to be done. 
The final few days was pretty hectic as we had our college journal submissions too. While everyone else were getting their journals checked, I had most of them incomplete. :)

The mentors at Moja Global ([Andrew](https://github.com/aornugent) and [Harsh](https://github.com/HarshCasper)) helped a lot with the proposal with their reviews. I was satisfied with the proposal and submitted it on the final day. 

You can have a look at [my proposal here](https://summerofcode.withgoogle.com/media/user/5be392b58636/proposal/3YjYnht7mQH1qWW7.pdf) if you want.

#### The Acceptance
After the long wait, I was filled with joy seeing this from Harsh. ![Harsh congratulations](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/50t8awst1osbvm4uhg6h.png)
And of course, Shloka hyping me up XD:
![excited Shloka](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uwdn6jcz76q6b1ux94wn.png)
 
#### Community Bonding Period
I could not do a lot of work during this time as I had my finals going on (killed it). But I still managed to discuss a few things with Andrew, attend the working group meetings and work with [Padmaja](https://github.com/padmajabhol) and [Namya](https://github.com/Namyalg) (community members working on the [FLINT.Cloud](https://github.com/moja-global/FLINT.Cloud) project) on some inputs for the simulation.

Just after my exam, we decided in a meeting that we should migrate the project from Vue 2 to Vue 3 due to better support from libraries and the community. For the first week, I worked on migrating all the libraries used, to their Vue 3 supporting version and making changes as necessary. After the initial steps of migration were done, and everything was functional with Vue 3, [Palak](https://github.com/Palaksharma23) worked on migrating all the components that used the Options API to using the new Composition API which is recommended in Vue 3. 

After this, I couldn't work for another week and a half due to personal reasons. 

#### The Coding Begins
I started the actual coding of the new UI from 15th. I removed the old code and made the landing page first. Adding a sidebar with the configurations parameters was necessary for the ease of navigation for the user. Andrew also gave a great suggestion during this time - of having collapsible groups inside each configuration, so that the user can have a bird's eye view of all the options inside a parameter.

Currently, I have worked on the landing component, sidebar, and the local domain configuration. The tricky part here was having nested children components in vue-router. It took me more time that it should've (I still don't know many things in Vue projects, googling my way through :)).

I plan on adding the Modules configurations tomorrow (June 20th). There are still some things that needs to be worked on which I realise while I'm working on these configuration components. Things like showing previous simulation runs, providing an option to continue these runs, and load their previously completed configurations. These configs also need to be stored in the local-storage of the browser so that if the user leaves the page without running the simulation, there changes aren't lost.

#### Continuation
These were my updates till now, I'll be writing more mini-blogs in the coming weeks about the progress. 

Stay tuned, and again, drink enough water.