How to Start Contributing to Open Source
My Journey of getting started with open source contributions
How I got to know about open source
Back in March 2022, I was searching for some remote internships. After multiple rejections, I got selected for an unpaid internship. It was even worse. Within two days I realized that I am simply wasting my time. I left it. ๐ฅ
That's when Google Summer of Code came to my mind. I watched a few videos about it in my first year. I knew that it was completely remote (something that I was looking for). When I started researching it, only two days were left to submit proposals. But as expected neither the proposal nor the codebases made any sense to me. Hence, I left it and started researching about open source and what are other opportunities there. ๐
Decoding Open Source as a Beginner
Upskilling myself
I started to research more about open-source by watching YouTube videos and reading articles and blogs. That's when I came across this video on YouTube about various other open-source programs.
This is where I got to know about MLH Fellowship and the application process was simple enough. So I decided to apply for it. When I applied for the first time, I reached the final interview and it gave me a lot of confidence. Also, along with the rejection they mentioned the reason which gave me guidance on where to improve.
I referred to these videos for learning Git and GitHub:
FreeCodeCamp also has some amazing tutorials on Git and GitHub.
I also referred to GitHub docs.
Then I started upskilling myself, working on my presentation skills, and improving my projects and application. Here are a few YouTube channels that helped me a lot in this whole process:
MDN Web docs and W3Schools to learn HTML, CSS and JavaScript.
WeMakeDevs Roadmaps also has some amazing resources.
Whatever I learnt, I started applying it by either doing some personal projects or contributing to open-source.
Joining communities
I got to know about a lot of open-source communities and organizations from the Google Summer of Code website. I was mainly into web development. The GSoC website also has an amazing feature to apply filters based on various topics. But almost every organization had some web development-based projects. Here are some ways in which I got involved in the communities:
Joined their public channels
Read the code of conduct properly
Introduced myself in the public channels
Added their community meetings to my Google calendar and started attending them
Subscribed to their newsletter or took up a free membership if they had any.
Started volunteering at some of them
Attended their events. As a student, I couldn't pay for the tickets to the paid events. Hence, I attended only the free ones. I also applied for scholarships to get free tickets for attending events and conferences.
Started observing the various activities going on like the code reviews, merged and open pull requests, how people communicate with each other and many more.
I learnt a lot by looking at the merged pull requests. It gave me an idea of the codebase structure and how to solve issues.
Contributing to big open-source projects
โ You don't need to be a part of any program to contribute to open source.
One of the best things I like is that Open-source is for everyone. While applying to internships we have so many restrictions. I missed a lot of opportunities that were only for 1st, 2nd or 3rd-year students as I was not aware of them. I was very sad that I could never again apply and be a part of them. But that's not the case in open source. Open-source communities are warm and welcoming to people from diverse backgrounds. Diversity and inclusion are something they strongly believe in. We can contribute to open source irrespective of our age, branch, college, grades, gender or anything. Open source has something for everyone to contribute to.
AnitaB.org
I got to know about Open Source Hack from their community newsletter and applied for it. When I got selected I mainly worked on raising issues, reviewing PRs by giving constructive and respectful feedback, guiding participants in making contributions, helped them with debugging and setting up the projects on their local systems.
Open Source Hack is a virtual open source program by AnitaB.org Open Source Community. This program aims to help participants begin contributing to various Open Source Projects by highlighting non-coding paths to contribute to open source.
Here are a few examples of some simple issues that I raised that anyone can raise and solve by submitting a PR.
No coding knowledge is required to solve them but still adds value to the project.
I also got a free ticket to attend the Grace Hopper Celebration. Currently, I am also a member of their Software Engineering Committee.
Microsoft
I contributed to Microsoft open-source by correcting some grammatical errors in the Web-Dev-for-Beginners repository. It is something that can be easily done with tools like Grammarly.
WeMakeDevs
I contributed to WeMakeDevs by converting their Roadmaps to README format.
I referred to these roadmaps when I started my open-source journey. It was very fulfilling for me to be able to give back to the community from which I learnt so much. Do check out the WeMakeDevs Roadmaps to get started with learning some of the latest technologies.
CNCF
I contributed to the CNCF Glossary project by working on translating some of their documentation into other languages. It is very simple and can be easily done with Google Translate. Here are examples of some of my PRs that got merged:
Initially, it was a large codebase. Although, solving the issue was very simple but I was confused about where to make the changes. So, I referred to the previous PRs on translations which were merged. This gave me an idea about which file I should change and how.
EddieHub
If you have a lot of confusion about how to make a PR, this is the best place to get started with. The best part is their README where all the steps are explained clearly for anyone to easily understand.
Raise an issue in the support repository to join this awesome GitHub org.
Add your name and GitHub link in the hacktoberfest-practice repository
Join the EddieHub discord to geek out with some amazing people from around the world.
Take the course on How to customise your GitHub Profile
Add your GitHub profile to the list of awesome-github-profile
Hacktoberfest
Hacktoberfest is a month-long celebration of open-source projects, their maintainers, and the entire community of contributors. Everyone was sharing their badges on LinkedIn after registering for Hacktoberfest. I was a bit afraid to share as I was unsure whether I could get 4 PRs merged or not to be able to complete the program. ๐ฅบ
But I finally got 28 PRs merged as quality contributions. ๐ฅณ
Some of the PRs that I made were very simple like:
- Adding some learning resources to various repositories.
- Convert links to hyperlinks so that they look good on the docs
- Uploading my projects or project links in some repositories that were accepting past projects as contributions
- Improving docs by adding diagrams, improving clarity by reconstructing paragraphs into clear and concise points, correcting spelling and grammatical errors and many more
โญ๏ธ Here are some resources to help you make your first contribution:
first-contribution: Follow the steps in README.md to add your name and make your PR
Good first issue: A website to help you find good first issues
Your-First-Open-Source-Project: Follow the README.md to make a PR to add your name and raise an issue to join the org
PUGroups/beginners-arena: Contribute by adding a project
PUGroups/Awesome-Github-Profiles: Add your GitHub profile README image and make a PR
bluelearn-open-source/blue-quotes: Add emoji, quote and your name by following the steps in the README.md and make a PR
bluelearn-open-source/Git-and-GitHub-session: Add your name to the contributors.md file following the format mentioned in it, commit changes and make a PR
If it still confuses you, have a look at the previous PRs and issues to understand how to structure them. ๐
This should give a very good idea of Git, GitHub, how to make PRs, how to raise issues and other basic things. ๐
Getting started with solving complex issues
These are a few things that helped me shift from solving simple issues to solving complex issues:
Using the product well.
Read the project documentation
Set up the project on your local system. Generally, the README.md or the CONTRIBUTING.md file has instructions for setting up the project in your local system. If you are getting errors while setting up and are unable to resolve them then ask in the public channels for help. There is a high chance that someone else also faced similar errors and will help you out.
Listen to the past conference talks on that project.
I contribute mainly to web-development-based projects so inspect element is my best friend. Check out my article on Debugging CSS with Chrome DevTools to know how to navigate codebases using the inspect element.
I also refer to merged PRs to see how the previous issues have been solved. This gave me an idea of the types of bugs and feature requests that have been addressed in the past, and how they were addressed.
Shifting from Windows to Linux.
Solve at least 2 to 3
good first issue
in a project. It can even be improving the docs or adding margin, padding, changing some messages on the application, working on making it responsive or anything simple. This helped me a lot in adding value to the project and at the same time understanding the repository structure. Also when I could get the PRs merged it uplifted my confidence. Here is an example:
After solving a few simple issues, I took up a bit difficult one in the same project.
Communicate with the other contributors. Ask for help when required in the public channels or mailing list. In open-source we should always ask our doubts in public channels instead of messaging anyone. This also helps to get a better understanding of the development process and the goals of the project. If I was stuck in the same place for a day and couldn't get any clue on how to proceed I asked my doubts in the public channel.
Doing a bit of research before asking is a good practice. If I couldn't understand an issue, most of the time it is because I have no clue about some technical terms used in the description. So, I googled them. I also referred to the project docs. If I was still stuck in the same place then I asked in the public channels.
Here is a Twitter thread to understand better how to ask good questions:
Have patience. It might take some time to get back the answer to a question or get a review on a PR. It can also take months to get a PR merged.
Try to break down the task into small chunks and focus on a small piece of code at a time.
Make sure to follow the project's code style and submit your contributions in a way that is consistent with the project's development process.
Here are a few examples of my PRs from the MLH Fellowship (Prep):
Layer5
I got to know about it during Hacktoberfest and started contributing. I made around 100+ contributions to the organization and git around 10 PRs merged. I wrote articles as a part of their Writing program. I also got an invite to join it. ๐คฉ
Speaker at Google DevFest, Kolkata
Growth through collaboration and contributing to open source helped me in getting selected as a speaker at Google DevFest, Kolkata. This was the first in-person event I attended and I was also a speaker there.
DevFest is a global, decentralized tech conference hosted by the Google Developer Groups (GDG) community. Here, I gave a talk on how and why to contribute to open source.
Blogging
Coding is not the only way to contribute to open-source. You don't have to be an amazing developer to be able to contribute to open-source. Blogging, writing articles or making video tutorials are also some ways to contribute. Any way in which you are adding value and helping the community grow is an open-source contribution. I started blogging in December as a part of the Blogging contest by WeMakeDevs on Hashnode. Here is a video to help you get started:
Yay! It was my first blog and I couldn't believe that I won the contest. This motivated me a lot to continue sharing my experiences and learnings through blogging. Growth with collaborations is the blog that won me this amazing prize.
You can also win such amazing prizes by participating in them.
Checkout my 2022 wrap up blog to know more about the open-source programs and communities that I have been a part of. ๐
Some other ways to contribute to open-source
Applying for good ambassador programs like GitHub Campus Expert, Google Developer Student Club lead, Microsoft Learn Student Ambassador, CNCF Ambassador, EddieHub Ambassador and many more. It should help you grow your skills and network. Avoid applying to random ones just for the certificate
Raise issues and Review PRs
Answer questions, and be active and involved with the community in the public channels.
Volunteering: It can be very rewarding and meaningful as it allows giving back to the community and making a positive difference in the lives of others. It is a great way to grow skills through collaboration. It helps in growing your network, gaining valuable experience and also making good memories.
Improving the existing designs or making logos.
Volunteer for organizing events and conferences
Upload the code of your personal projects to GitHub.
Collaborate with others to make some awesome projects in Hackathons and upload them on GitHub
Conclusion
A journey of a thousand miles begins with a single step.๐ฃ
You don't have to solve really difficult issues to add value to a project. Leaving a comment can also add a lot of value to a project. You don't have to give a lot of time to open-source. Small contributions done regularly can help you grow a lot and can be extremely beneficial. โจ