5 Simple Steps to Start Contributing to Open Source
Tags: opensource, tutorial, github, beginners
Published: 2024-04-06 23:25:01

If you are a developer who wants to contribute to open source projects but doesn’t know where to start, congratulations! You’re not alone.

I was in the same situation. When I looked at interesting Github repos, I got intimidated by their complicated codebase, issues, and PRs that made no sense to me at first. I had no idea where to start contributing.

After getting stuck in the beginner dilemma for some time, I decided to spend 30 days breaking into open source. One month later, my result is **15 issues raised and 10 PRs merged** to [Rocket.Chat](https://github.com/RocketChat), the largest open-sourced communications platform with 38k+ Github stars. In this article, I will share 5 steps on how I did it, and I hope they will help you get started with open source.

### 1. Find the right project

The right open source project will make your contribution journey much easier. During your project hunt, look for the following things:

**_1. A tech stack you are familiar with_**

Learning a new technology could take months. Working with a familiar tech stack allows you to quickly understand the codebase and start making contributions. For me, I have been working with React and Node.js for the last two years, so Rocket.Chat is a good choice for me.

_**2. A project you have used**_

This is the best way of finding a project. By switching from a user to a contributor, you would get motivated to contribute and benefit users like yourself. You would have a quick start by being familiar with how the project works. Personally, I have used Rocket.Chat in my previous internship for internal team chat and I love the customization aspect, which sparked my interest in contribution.

However, **be careful about the project's complexity**. Many of the technologies we use are well-established and can be quite complex. Choosing a popular project like Python or React for your first contribution could be challenging. I would recommend starting with smaller projects, like NPM packages in the React ecosystem.

_**3. An active and responsive community**_

Check out the recent issues and PRs. **Are they created frequently? Are maintainers / contributors responding to them in time?** If so, the project has an active and responsive community. This suggests a healthy codebase that is actively maintained, and your future contributions will receive feedback and have an impact on the project.

_**4. Clear documentation and contribution guidelines**_

The documentation and contribution guidelines pave the way for you to onboard the project. The quality of these documents reflects if this community gives open arms to new contributors. If so, you are in the right place.

If you need some project ideas, check out this [organization list](https://summerofcode.withgoogle.com/programs/2024/organizations) by Google Summer of Code. These organizations are very welcoming to new contributors and propose new project ideas every year. You can search for projects with technology or topics you want to work with, e.g. JavaScript, AI.

![Google Summer of Code Organization List](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xfqoh9ldt3c34ao5hby7.png)

### 2. Onboarding

Once you find the right project, it’s time for onboarding. Here is a list of TODOs:

_**1. Read documentation**_

**Don’t go directly to the code!** Trust me, reading the documentation might sound boring, but it will save you hours of time. Documentations usually include concept explanations and walk-through tutorials, which can help you quickly understand how the project works. 

_**2. Read contribution guidelines**_

Make sure you follow the contribution guidelines, such as PR name format and review process. The guidelines could also include code style, testing requirements, language internationalization, etc. Following these guidelines ensures your contributions align with the community’s expectations and standards.

_**3. Set up the development environment**_

Follow the installation guidelines and set up your development environment. Try to use Docker to isolate the environment and update dependencies to the correct versions. Otherwise, you might end up saying, “It worked on my machine.”

![It worked on my machine meme](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3xkoqtsw268vyb1r76ph.png)


### 3. Explore the codebase

After reading the documentation and understanding how the project works, you can get a taste of the code. When it comes to the larger codebases, I would not recommend jumping straight into the code and randomly opening 5x nested folders. This is like navigating through a maze with no direction. 

Instead, pick a simple PR that you find understandable by its name and description. **Trace through its implementation path** (go from references to source definitions) to understand how this PR is implemented to achieve its goal from the inside out. Once you look at more PRs this way, you will understand how different parts of the codebase interact. You might even spot bugs or areas with room for improvement, and here come your chances of contribution.

### 4. Propose your first issue

If you check out other “beginner’s guides to open source”, they would direct you to work on issues labeled with “good first issue”. However, most of these issues are breadcrumbs left by the existing contributors and are usually flooded with beginners asking to be assigned. 

Instead, I would recommend **raising an issue by yourself**. It can be a small bug or a potential feature enhancement that you found during codebase exploration, or while trying out the project as a user. 

![Github Raise Issue](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mezhl6v3y73n34accmn5.png)

**Don’t propose major changes - start small!** The issue should be within your reach and you should have a decent plan on how to solve it. For example, [my first issue](https://github.com/RocketChat/EmbeddedChat/issues/486) is adding tooltips to the message toolbox - just a small UI enhancement. Once you have taken the first step, you will gradually take on bigger tasks. 

If you are still stuck with coming up with an idea, look at recent issues / PRs and propose a follow-up or a similar fix / enhancement. 

### 5. First PR!

Finally, it’s time to code. Follow your plan on how to solve the issue. When submitting your PR, follow the contribution guidelines and kindly ask a maintainer to review it. Once it goes through, **you have successfully made your first PR!** Congratulations 🎉

I hope this article helps you get started with open source. Let this be the beginning of a rewarding adventure. Happy coding!