Guide to opensource and GSoC

01

Guide to opensource and GSoC

Written with ❤️ by:

Any software whose source code is publicly available for all to view or modify is often referred to as open source software (OSS). It’s generally free to use and redistribute, respects privacy, and has good community support because anyone can contribute.

Image Source: imgflip.com

Why contribute to open-source?

There are several reasons why people contribute to open-source software. Some of them are:

  1. Improves skills 💪: —When you make contributions such as fixing a bug in a codebase that may have been written by more than one person, it demonstrates that you can find, understand, and implement a fix for a part of the codebase (yes. very large body). In this way, you can learn the best methods and styles, as well as the way of thinking of other developers. Contributing to open source is often one of the best ways to eliminate “imposter syndrome”.
  2. Improves software that is used 👨‍💻: — Let’s say that you are using some open-source software and you come across a bug, or something isn’t behaving as you expect it to be. You could go to the software’s issue tracker and see if others have already noted this bug. If not, you could create a new issue and explain how to replicate it. If you already can think of a fix for it, you can just self-assign (or ask to be assigned) and submit the fix!
  3. Career growth 📈: — People who contribute to open-source projects might see new opportunities opening up for them. Companies reach out to you and might offer you to join them. Even with a few merged pull requests, you could use it to demonstrate what you can do!
  4. Makes one feel good 😇: — Even making a minor contribution to a project that many people depend upon is highly gratifying.

How to contribute to open-source

Contributing to open-source is not limited to just code contributions. If you are a graphic designer or love writing, some communities would love to see new UI mockups or improved documentation or tutorials for their projects.

The following steps are general guidelines to follow while making a contribution. Some of these steps and how they are actually done may differ from organization to organization.

  1. Find a project to contribute — Search for projects that use programming languages or tech stacks that you are familiar with and choose one. It is even better if the project you have chosen is related to a domain you are interested in. For example, blockchain, ML, networks & security, tools for science & astronomy, operating systems, etc. Also, make sure that the project is still active. This can be done by checking the last commit date or whether people are responding to issues and pull requests.
  2. Find an issue or feature to contribute — Once you have chosen a project, most people first check out the project’s issue tracker for issues to fix. This could be a separate site or GitHub/GitLab issues. Some issues might be labelled as “good first issue” or “low priority”, which mostly requires easy enough fixes aimed at first-time contributors.
  3. Check if anyone is working on it — Once you have found an issue you think you could fix, make sure no one else is working on it by checking the person assigned for that issue. Sometimes, there might be someone assigned, but that person could have been inactive for a long time. In that case, you could ask the project maintainers if it can be re-assigned to you.
  4. Write code — Implement your fix. Make sure to follow the organization’s contributing guidelines strictly and also make sure to run all necessary local tests successfully (if present) before pushing your code. Your code will not be reviewed unless you get the green check. This is to ensure that you don’t break anything else.
  5. Submit code for review — Once you have done that, review again if you have followed the contributing guidelines. If all is well, you may push and submit a pull request. Also, make sure to reference the issue you are fixing in your pull requests. Now request a review from the maintainers and make the suggested changes (if any). If all goes well, your pull request will be merged!

If you get stuck at some point, even after reading their documentation or code walkthroughs, you can ask for help from the community. Organizations usually have public forums, mailing lists or chat rooms to discuss stuff related to their projects. Avoid asking queries in private.

There are several open-source programmes like Google Summer of Code, Google Season of Docs, MLH Fellowship, Linux Foundations Mentorship Programs, Outreachy, etc. These programmes host various open-source organizations under them. Most of them are mainly for student developers new to open-source and offer great incentives. Apart from these, many universities host their own mentorship programmes to encourage and promote open-source culture in students. For example, there is DWoC — a winter-long program organized by Delta Force, the coding club of NIT Trichy. Participating in programmes like these gives you a good idea and prepares you for other programmes like GSoC.

Google Summer of Code 🌞:

Google Summer of Code (GSoC) is a global program that matches students with open source, free software and technology-related organizations. They promote open-source culture by encouraging students to write code and become part of these communities while making some money along the way! The organizations provide mentors who act as guides through the entire process, from learning about the community to contributing code².

Why is GSoC super cool ?

  • This allows novices/students to work with specialists.
  • The open-source development culture is fantastic! Nothing is hidden, and anyone can track your progress from anywhere. Even if you overlook a bug in your application, someone else may be able to detect and solve it!
  • Participation does not necessitate any expertise. You don’t need to pursue or possess a Computer Science degree. All you need are the skills and abilities to deal with the technology in question.
  • Good stipend — If your project goes well, you will be compensated generously!
  • Career Opportunities — Many participants have continued their careers in the direction of the project or domain they worked on over the summer.
  • Virtually meet and get to know new people! There were 1,286 accepted students from 69 countries for the 2021 season!

The Process

GSoC timeline 2021

Choosing Organization

Usually in January, people start to study the organizations.

Even if the selected organizations are not announced until March, there is a high probability that some of the them that participated this year will participate again next year!!!

Choosing which organization to contribute to can be the most difficult decision a person has to make along the way! There are so many options to choose from, it’s hard to pick just one or two.

One approach that can help with the organization selection process is:

  • Exploring the various organizations’ projects, domains, and technologies, using the GSoC archive page: https://summerofcode.withgoogle.com/archive/.
  • Making a Google doc with short notes/summaries about organizations I’ve liked so far.
  • Determining the final 1–2 organizations from the doc through additional research.

Choosing an organization is a personal decision based on an individual’s interest in a particular domain or technology. An organization may be ideal for Person 1, but it may not be the same for Person 2.

Involvement with the organization

The most important aspect of this is participating in the development process. Either by providing ideas or contributing to the codebase (identifying bugs, resolving issues, opening PRs/MRs, or documenting). Some organizations have a separate forum thread for each project with appropriate guidance on outcomes, while others require ongoing communication with maintainers.

The organization admins and mentors have always emphasized the importance of communication!. Most open source organizations have wikis, mailing lists, forums, or chat rooms where students can interact with project admins or mentors.

Scrolling through the history or looking at previous discussions can provide insight into what questions have been raised and what projects are of interest to the organization.

Helping others is also valuable, such as welcoming new members, assisting them in setting up their developer environment, and answering their questions!

Organizations want students who have the potential of being long-term contributors.

Proposal

The proposal is the main report that determines a student’s selection.

Continuous communication with the mentor is required from the moment of writing the proposal to completion. Ultimately, the project mentor decides which proposal to choose.

This year’s GSoC mentees took the initiative to collect proposals in a public git repository for future aspiring mentees to look into while planning their own proposal. https://github.com/Google-Summer-of-Code-Archive/gsoc-proposals-archive

Community bonding and milestone finalisation

The day of the selection of the proposals marks the start of the community bonding period. This time is primarily for the mentees to become acquainted with the organization, their mentors, and fellow mentees!

Things that people do during this period include creating user interface designs, documenting API endpoints, and setting up a development environment for the project.

Coding period

As soon as the coding period begins, people start working on the project at a breakneck pace.

In some cases, the mentor and mentee time zones might be completely different, making it more likely that someone will wake up late at night and communicate synchronously :), but fun and learning will always outweigh these little inconveniences.

Projects are always monitored and there are multiple assessments(evaluations) of them. Therefore, it is very important for the mentee to stay focused, and discuss if there are any problems or difficulties in completing the milestones with the mentors.

Plan efficiently

Each student is allowed to submit a maximum of three proposals. Many students try to game the system by submitting multiple proposals to maximize their chances of winning. Remember, quality triumphs quantity!

Familiarize yourself with the GSoC timelines — they are unlikely to change. You have slim chances of receiving feedback on your proposal and making meaningful changes when you submit your proposal last minute.

Learn from the past

Suppose you are applying to an organization that has previously participated in GSoC. In that case, you will have the advantage of previous submissions. Investigate previous proposals as well as the mandatory blog posts where students document their progress.

You’ll gain a lot of insight into whether you’re the right fit for an organization, as well as feedback on what you can accomplish during the summer.

Plan ahead

The majority of the winning proposals demonstrate that the student understands the task at hand and can work full-time on the project. You are expected to work on the project for at least 30 hours per week on average. So plan ahead of time for the summer.

Make a clear list of what you believe should be accomplished and include it in your timeline. Remember that if you fail GSoC, you will lose your stipend as well as your reputation. So, when assessing your ability and timelines, be realistic.

Finally Don’t overcommit!

Thank you to everyone who read all the way to the end. Please accept this gift from our side: 🍨.