Google Summer of Code '24: My introduction to OmegaUp
Hey everyone, I'm Aritra, a sophomore pursuing an M.Sc. degree in
Computer Science at CMI. This summer, I am working on migrating the
unofficial CDP
to the official site of OmegaUp (here) as a part of GSoC 2024. I also participated in GSoC '23 with
Mathesar, you can find the related blogs
here. In this blog, I will share my GSoC
acceptance experience with OmegaUp.
A little bit about Myself:
I love Mathematics and Algorithms. My favorite subject is Complexity
theory. Besides, I spend my leisure time playing football, watching
soccer matches, enjoying anime and reading manga. I also (less
frequently) contribute to the open-source repositories.
If you want to know me better, you might want to visit my
LinkedIn profile,
GitHub profile
or go through my portfolio. There you
will find numerous ways to get in touch with me. I will write more
blogs on GSoC '24, you can find them
here.
Phew! Enough introduction. It's time to share my GSoC acceptance
experience again.
Pre-GSoC period:
When I planned on applying for GSoC this year, it was already a bit late. While browsing through the organizations, I selected some of them (that aligned with my interest) like OmegaUp, Keploy and Oppia to start contributing. After going through the selection criteria of OmegaUp, I was a bit amazed as it required the candidates to attend a programming contest first. An applicant needed to solve 2 out of 3 problems to be eligible for further rounds.
- Round 1: Solve 2 out of 3 in a programming contest :3
- Round 2: A Merged PR.
- Round 3: Writing a (good) proposal.
- Round 4: Interview, yay!
My Introduction to OmegaUp:
My first introduction to OmegaUp was through the
official discord server
of OmegaUp. The channels were (are) super-active and
contributor-friendly. From the very beginning (setting up OmegaUp
dev env) to the selection process, the admins and the candidates
helped me a lot.
The contest was pretty interesting. I initially managed to solve two
questions (1st and 3rd), though out of interest, I solved the 2nd
one later. After clearing the first round, I started trying to
contribute to the codebase. There were many good first issues to
start with and maintainers were super helpful in assigning us the
perfect one. After 3 of my PRs were merged, I started writing
proposal. Once I have written a draft proposal, I've submitted it to
the mentors for review to get their feedback. After some days of
waiting, I received an email requiring me to schedule an interview.
Carlos and Juan took my interview (which lasted for 45 minutes) and
asked me some non-technical and 2 technical (development-related)
questions.
One more thing, PRs not only make you eligible for selection but
also give you a greater understanding of the codebase, which will
help you later anyway. So my suggestion will be to work on solving
as many issues as possible.
Here
are my PRs, that are already merged.
An overview of my project:
So, what is OmegaUp?
omegaUp is a non-profit organization (501c3) aimed to increase
the number of talented Software Engineers in Latin America.
OmegaUp had 5-6 projects related to the online judge of OmegaUp.
Among those, I chose the
migration of the CDP
project as I personally had difficulty using the unofficial CDP. You
can find the official announcement
here. Also,
here
is the proposal that I submitted and will use throughout the
project.
One of the main components of the OmegaUp platform is the
competitive programming online judge. An online judge has 3 main
components: problem, code and the verdict of the code on that
problem. Currently, to create a problem on OmegaUp, we have to rely
on the zip file that can be created through the expertise of the
problem creators (which makes it difficult for the new users ) or
via the unofficial CDP. The Github repo that deployed the site is
public and now a Public Archive. So, it can’t be an official tool
for OmegaUp. Moreover,
- If a user finds a bug on the website, as it’s a public archive, it’s not possible to make a pull request.
- No newer feature can be added to the website.
- The fate of the site largely depends on the author's availability.
Currently, after a problem is created, if we need to modify the
same, we need to again upload the zip file to the CDP, modify it and
upload the modified zip file on the problem-edit page on OmegaUp.
Enabling users to directly generate a problem (without generating
the intermediate zip file) may help a lot of users and make the edit
problem action much easier and intuitive.
So, the motivation behind this project is migrating the whole CDP to
the OmegaUp website. This project aims to make the OmegaUp problem
creation easier, more intuitive and more versatile as well as
backwards-compatible.
Thanksgiving:
All of these wouldn't be possible without the support of my parents,
friends and teachers. Thanks to Nandini for never letting me lose my
hope. I'm thankful to them.
I am immensely grateful to Juan for such good mentoring. With every
comment and suggestion of him in my PRs, I have learnt a lot. He
assigned me some of the issues which gave me an in-depth
understanding of the codebase.
Carlos was super helpful during my interview. There were a lot of
bad things that happened in the interview (my VSCode got uninstalled
at the very beginning) and Carlos supported me throughout. With
every question, he mentioned the answer he was expecting.
I would also like to thank Hugo and Vanessa for reviewing and
merging my PRs. Lastly, I would like to thank all the mentors and
applicants (specifically Ahmed and Kartik) of the OmegaUp
organization for their constant support.