How to contribute to open source as a beginner
Tags: opensource, beginners
Published: 2023-01-09 13:53:25

I was unsure of how to contribute to open source projects for a very long time. Even when I started, I would not successfully make a contribution. Luckily, through different research and tips from different people, I was able to make my first contribution. In this blog, I hope to inspire and support those who are interested in starting their open source adventure. 

## Table of Content

1. [What is open source software and benefits](#what-is-open-source-software-and-benefits). 

2. [The basic knowledge required to contribute](#the-basic-knowledge-needed-to-contribute).  

     a. [How to find and create an issue](#how-to-find-and-create-an-issue).  

     b. [How to make a pull request](#how-to-make-a-pull-request-pr).  
 
     c. [An Open Source License](#an-open-source-license)

3. [How to find open source projects](#how-to-find-open-source-projects).
 
4. [Open source programs to get started](#open-source-programs-to-get-started). 

5. [Final thoughts](#final-thoughts). 

## What is Open Source Software and Benefits

An Open Source Software(OSS) is project whose source code is accessible to anyone to see, modify or improve.  Designers, developers, technical writers, testers, and other professionals can all contribute to open source. Basically, you can make meaningful contributions to open source projects according to your interests and skills.

As a beginner, contributing to open source projects has a lot of benefits: 

- **Gain experience:** To contribute, you do not need to submit an application. Therefore it is easy to put what you learnt in school or online courses into practice and make your resume stand out. 

- **Improve your soft skills:** By collaborating and communicating with other developers while contributing, you enhance your soft skills. 

- **Mentorship:** Through asking questions and requesting help, you get to learn and improve your knowledge from experts in the field. 

- **Community:** By consistently contributing to OSS, you come in contact with a wide range of people with varying backgrounds, skills, and cultural perspectives, fostering a supportive environment for exchanging ideas and experiences.

- **Flexibility:** You can contribute to an OSS project remotely without relocating or commuting to another location. 

- **Earn salary and benefits:** The majority of the programs I will share below pay, although a few also offer benefits like t-shirts, internship opportunities with partners, and subscriptions.

## The Basic knowledge needed to contribute

### How to find and create an issue

An issue identifies a problem in a project that needs a fix. You can start contributing by solving exciting issues. Issues can be found under the project repository on the issue page and you can filter using different labels. As a beginner, you can filter using a good-first-issue label for newcomers as shown in the ChRIS project issues page below. Those issues are usually easy to solve and useful for learning the code base. If you find an issue that you are interested to solve, comment on it so that it can be assigned to you. 

You might sometimes run across a problem when using the project and be eager to fix it. Then, using the new issue button shown in the image below, you can create an issue. For others to comprehend and offer support, it's essential to provide sufficient details about the issue, including the problem, the anticipated outcome, screenshots, and steps to reproduce the problem.

![ChRIS UI issues](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uanrd3pq0gcp2qz4rb2e.png)

### How to Make a Pull Request (PR)
 
A PR is a method of submitting a contribution. There are primarily 7 steps involved in creating a PR: Fork Repo -> Clone Repo -> Create a Branch -> Make a Change -> Commit -> Push -> Open a PR. If you have not made any PR before, you can follow the [first contribution project](https://github.com/firstcontributions/first-contributions) guide to create one.

![First contribution project pull requests](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hxiaiqkuryqs8ro7lvjb.png)

Congratulations on creating your first PR 🥳. After you open a PR, the maintainers review it, offer feedback if necessary, which may require you to make some changes, and then merge it.

### An Open Source License

A license ensures that contributors are permitted to use, copy, edit, and contribute to the project without facing repercussions. A project without a license is subject to the default copyright, which grants only the owner the authority to alter, duplicate, or use the project. 

In order to avoid repercussions, it is crucial to confirm that a project is licensed before you contribute. There are various licenses available, including the MIT, Apache, and Mozilla Public Licenses, and each provides terms and conditions that serve as a guide for contributors. Therefore, reading them before contributing is crucial.
## How to Find Open Source Projects

You now possess the fundamental knowledge required to contribute to any project. It's time to select a real project and employ your newly acquired skills. Bellow, I will share some of the web apps that show good first issues from different OSS projects to help beginners make their first contribution. Using the filter option on those web apps, you can easily find an issue to solve or a project to contribute to based on your skills and what you want to improve. 

- [First Contributions Project List](https://firstcontributions.github.io/#project-list): A list of OSS projects with good first issues to help you make your first contribution in 5 min. 
- [Good First Issue](https://goodfirstissue.dev/): A beginner friendly web app to find good first issue from popular OSS projects and make your first contribution. 
- [Codetribute](https://codetribute.mozilla.org/): A Mozilla web app to find good first issue to make your first contribution on their products. 

## Open Source Programs to Get Started

They are various open source programs, run entirely remotely, to help beginners start contributing to open source.

- [Outreachy](https://www.outreachy.org/): A three-month paid internship program  by Software Freedom Conservancy to increase diversity in open source. Please see my recent blog for more information [here](https://dev.to/ciradu2204/how-i-got-into-the-outreachy-program-39fa). 
- [MLH Fellowship](https://fellowship.mlh.io/): It's a three-month paid internship initiated by Major League Hacking. The participants learn to collaborate on real open source projects with peers and engineers from top companies.
- [Google Summer of Code](https://summerofcode.withgoogle.com/): A three-month paid internship organised by Google. It is focused on bringing new contributors into open source software development.
- [She Code Africa Contributhon](https://sites.google.com/shecodeafrica.org/contributhon/home/program-overview?pli=1): A two month paid bootcamp for African women by She Code Africa. It aims at increasing diversity and inclusion in the open source ecosystem of Africa.  
- [GirlScript Summer of Code](https://gssoc.girlscript.tech/): A three month non-paid open source program by GirlScript foundation to foster diversity. Everyone can participate including men and people from outside India.  

## Final Thoughts 

Back in 2021, when I was trying to find a project and ways to make my first contribution, I would comment on the issue and start working on it. However, I would get stuck in the middle and be afraid to ask for help since I used to think that doing so would be a sign of weakness, meaning that I might not have the necessary skills to contribute or haven't done enough research. As a result, the issue would be assigned to someone else.

If you face a challenge while trying to solve an issue, first do some research using different resources such as project documentation, stack overflow, or the web. However, if you continue to get stuck for 1 to 3 hours, consider asking for help. When asking for help, ensure to always mention the research you have done on that particular challenge and the result from trying what you got from the research to get a response from the maintainers. Moreover, when you ask for help, you not only get advice on how to solve the challenge, but also get an opportunity to connect with the maintainers/mentors.

I wish you all the best on your open source adventure. If you find the blog helpful, don't forget to like, share or bookmark  it. You may find me on [Twitter](https://twitter.com/IraduCynthia) or [LinkedIn](https://www.linkedin.com/in/ciradu2204/), and I'll be pleased to assist you if you need help.