Getting started with Open Source contributions - What, Why, How
Tags: opensource, roadmaps, beginners, career
Published: 2022-05-03 14:17:16

The number of people contributing to Open Source is increasing every year because people care about it. What about you? Wait! What exactly is Open Source? Why should I contribute? I am completely new to Open Source, so where should I start? If you have these questions, then read this article for answers.

### Let's get started

## What is Open Source software?
Keeping formal definitions aside. In simple terms, Open Source means anyone can read, modify and use the "Source code" of any software. The source code is publicly available somewhere like GitHub, bitbucket etc. For example, the well-known code editor "Visual Studio Code" is Open Source. You can see the source code on GitHub [here](https://github.com/microsoft/vscode).

Below is the piece code for the VSCode help menu from "Join Us on Twitter" to "Privacy Statement". 

> Codeblock on GitHub - [here](https://github.com/microsoft/vscode/blob/46257aae7a8ab974b067bdf65df3d51feb9e0098/src/vs/platform/menubar/electron-main/menubar.ts#L128-L160)

```js
		const twitterUrl = this.productService.twitterUrl;
		if (twitterUrl) {
			this.fallbackMenuHandlers['workbench.action.openTwitterUrl'] = () => this.openUrl(twitterUrl, 'openTwitterUrl');
		}


		const requestFeatureUrl = this.productService.requestFeatureUrl;
		if (requestFeatureUrl) {
			this.fallbackMenuHandlers['workbench.action.openRequestFeatureUrl'] = () => this.openUrl(requestFeatureUrl, 'openUserVoiceUrl');
		}


		const reportIssueUrl = this.productService.reportIssueUrl;
		if (reportIssueUrl) {
			this.fallbackMenuHandlers['workbench.action.openIssueReporter'] = () => this.openUrl(reportIssueUrl, 'openReportIssues');
		}


		const licenseUrl = this.productService.licenseUrl;
		if (licenseUrl) {
			this.fallbackMenuHandlers['workbench.action.openLicenseUrl'] = () => {
				if (language) {
					const queryArgChar = licenseUrl.indexOf('?') > 0 ? '&' : '?';
					this.openUrl(`${licenseUrl}${queryArgChar}lang=${language}`, 'openLicenseUrl');
				} else {
					this.openUrl(licenseUrl, 'openLicenseUrl');
				}
			};
		}


		const privacyStatementUrl = this.productService.privacyStatementUrl;
		if (privacyStatementUrl && licenseUrl) {
			this.fallbackMenuHandlers['workbench.action.openPrivacyStatementUrl'] = () => {
				this.openUrl(privacyStatementUrl, 'openPrivacyStatement');
			};
		}
```

![VSCode help menu](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jjgdujx5r088ogut4x41.png)

_**Note:** My intention here is to show you we can see the source code of any Open Source software. I don't know the whole codebase of VSCode so the above code may not be the exact code for the help menu but plays some sort of role in the help menu._

## What do you mean by contributing to Open Source?
Contributing to an Open Source project means improving the project by fixing bugs, adding features, improving documentation, doing code reviews, opening issues etc. For example, let's imagine in VSCode you noticed a bug that makes clicking on "Join Us on Twitter" take people to Instagram instead of Twitter, now you can open an issue on the VSCode GitHub repo, describe the bug and tell them you will fix that. There are lots of ways you can contribute to an Open Source project.

The two main ways:

**1. Code contributions**

If you are a developer then you can make code contributions.
  - Fix bugs
  - Do code reviews
  - Add new features

**2. Non code contributions**

If you are not a developer or don't have much dev knowledge then you can do non-code contributions.
  - Improve project documentation
  - Work on translations
  - Write articles

If you don't want to contribute directly to the project and still want to help your favourite projects then you can:
  - Sponsor the project
  - Spread the word about the project on social media
  - Star the project on GitHub (If the project is on GitHub)

## Why should I contribute to Open Source?
Why should I care? Why should I work for free? Again there are many reasons why you should contribute to Open Source.

**1. Give back**

Almost every developer used Open Source software at least once in their life. So it will be great if you take some time and contribute to your favourite project.

**2. Improve your skills**

If you are a self-taught developer then this is a great way to get production level dev experience/knowledge. Not only technical skills but also collaboration, teamwork and communication skills will be improved.

**3. Grow your network**

Networking is one of the greatest skills anyone can have to land opportunities and stay away from the crowd. By contributing to an Open Source project you interact with lots of people, and you will join their community and ultimately grow your network.

**4. Earn stipend**

One thing you should know **Open Source doesn't always mean FREE**. Some companies earn billions of $$$ with Open Source projects. Some programs like Google Summer of Code (GSoC), Google Season of Docs (GSoD), Microsoft Reinforcement Learning Open Source Fest, etc pays stipends to contribute to Open Source projects. But again remember **money should not be your first priority** in Open Source.

Watch this video to know more:
[25+ Paid Open Source Programs and Internships](https://youtu.be/x4hsV_q_YQc)

## How should I start?
Now, you have zero knowledge of how to get started and that's why I wrote this article.

### Prerequisites
- Git and GitHub - because most of the Open Source projects use "Git" as their version control system and "GitHub" as their collaboration platform.

Read this article for learning resources:

{% embed https://dev.to/itsrakesh/git-github-ultimate-developer-tools-32kb %}

- Your tech stack - no need to be an expert

### Contributor Roadmaps
To get started with Open Source contributions some talented folks at [Aviyel](https://aviyel.com) came up with an initiative called **Contributor Roadmaps**.

![aviyel.com](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvitphskmci402fidjr9.png)

#### Steps to get started

**Step - 1**:
Join Aviyel's [discord server](https://discord.com/invite/mB5w2D59za) - this is where all the communications happen like asking doubts, interacting with project maintainers, having fun and lots of other things.

**Step - 2**:
Go to [aviyel-first-pr](https://github.com/aviyelverse/aviyel-first-pr) GitHub repo and make your first contribution. (Don't worry if you don't know how to do it)

**Step - 3**:
Explore onboarded projects. Aviyel has currently onboarded 7 amazing Open Source projects. Every project has a Roadmap and resources like videos, blogs etc. Choose a project that matches your tech stack.

1. BoxyHQ - BoxyHQ helps startups enable enterprise features in any SaaS app with just a few lines of code.
  - [Roadmap](https://aviyel.com/post/2949/contributor-roadmap-for-boxyhq)
  - [Resources](https://aviyel.com/projects/11/boxyhq/resources/discussion)

2. Medusa - Medusa is an open-source headless commerce platform.
  - [Roadmap](https://aviyel.com/post/2950/contributor-roadmap-for-medusa)
  - [Resources](https://aviyel.com/projects/10/medusa/resources/discussion)

3. Docz - Docz makes it easy to write and publish beautiful interactive documentation for your code.
  - [Roadmap](https://aviyel.com/post/2490/contributor-roadmap-for-docz)
  - [Resources](https://aviyel.com/projects/9/docz/resources/discussion)

4. Typesense - Typesense is a fast, typo-tolerant search engine for building delightful search experiences.
  - [Roadmap](https://aviyel.com/post/2471/contributor-roadmap-for-typesense)
  - [Resources](https://aviyel.com/projects/8/typesense/resources/discussion)

5. MobSF - Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static and dynamic analysis.
  - [Roadmap](https://aviyel.com/post/2481/contributor-roadmap-for-mobile-security-framework)
  - [Resources](https://aviyel.com/projects/7/mobile-security-framework/resources/discussion)

6. Chatwoot - Chatwoot is an open-source omnichannel customer support software.
  - [Roadmap](https://aviyel.com/post/801/how-to-contribute-to-chatwoot-on-github)
  - [Resources](https://aviyel.com/projects/6/chatwoot/resources/discussion)

7. Hoppscotch - Open source API development ecosystem. An alternative to [Postman](https://www.postman.com/).
  - [Resources](https://aviyel.com/projects/5/hoppscotch/resources/discussion)
  - Roadmap - Looking for contributors to prepare roadmap

**Step - 4**:
Don't worry if you get stuck 🙂. Open Source people are so nice and always ready to help you.

---

Hope this article helped to make your first contribution. Feel free to ask your doubts in the comments.

---

I write every week. Follow for more 🚀.