Become an Open Source contributor

How to find, develop and make your first pull request, and become a contributing member of an open source project

Gabriel Hicks

December 29, 2020 - 7 min read

•  •  •

Abstract art showing people floating in a cyber forest

https://sendthewholebattalion.files.wordpress.com/2020/10/open_source.jpg?w=1024

•  •  •

What is Open Source?

Open Source Software (OSS) can be defined as any software that has been released for the purposes of giving other people the rights to study, use, change, contribute to, and distribute the software. There are often licenses and documentation accompanying the source code that detail specific rights and information regarding the open source project.

If you are familiar with GitHub, you are familiar with the concept of open source collaboration. The technology Git was designed precisely for this purpose. With Git and GitHub, developers have a version-control system as well as a platform to collaboratively develop and share software solutions in public.

Think of the idiom two heads are better than one. With open source software, a project idea or software feature can rapidly develop with the only requirement being that the person contributing be able to come to understand the technologies involved. GitHub repositories enable this type of collaboration through creating "issues", as well as enabling developers to comment and reply to code submissions.

•  •  •

Guy on computer with clouds connecting people

https://www.synopsys.com/blogs/software-security/wp-content/uploads/2020/04/tips-working-remotely-open-source-community-header.jpg

•  •  •

Why should I contribute / what do I have to offer?

There are many reasons to contribute to open source projects:

  • Increase your knowledge and skills with a particular technology
  • Collaborate at an international level with people you may otherwise never meet
  • Learn about Git workflow and how to navigate many personal skills at the intersection of coding
  • Contribute meaningfully to projects while supporting communities and causes you care about

I made my first contribution in October duringHacktoberfes presented by Digital Ocean. My older brother encouraged me to participate even though I was in the midst of my coding bootcamp. The first pull request I made was to add alt text to images, improving accessibility for an application. During this event I was even able to tackle an issue for a Python/Flask project, a language in which I was not familiar. With the help of my brother, as well as other sources on the internet, I developed, tested, submitted and had my request merged to the main branch!

If you are able to see a problem, then develop and test a solution to a problem, you are ready to start contributing to open source projects. However, most projects will have CONTRIBUTING.md and README.md documentation that outline how contributions should be made. It is possible to make a bad contribution. Hacktoberfest, which celebrates open source contribution, this year had to make some major changes. There was an influx of meaningless or negligent contributions being submitted as people sought out the t-shirt that comes with 5 successful contributions during the event. Before you submit a pull-request on an issue, be confident that you are providing a thoughtful addition to the codebase.

•  •  •

How to find Open Source projects

Hacktoberfest, where my open source journey began, has an amazing list of resources and detailed information how to make quality pull requests. I will list some of their curated resources all of which I used to begin contributing.

The following resources share repositories that curate tasks for beginners:

  • [Awesome for Beginners](https://github.com/mungell/awesome-for-beginners)
  • [Up For Grabs](https://up-for-grabs.net/#/)
  • [Issuehub.io](http://issuehub.io/)
  • [First Timers Only](https://www.firsttimersonly.com/)
  • [Good First Issues](https://goodfirstissues.com/)[Good First Issue](https://goodfirstissue.dev/)

Once you start feeling more comfortable, you can find more open source projects that can use your help through the following programs:

  • [CodeTriage](https://www.codetriage.com/)
  • [24 Pull Requests](https://24pullrequests.com/) (like Hacktoberfest, but in December)
  • [Discover by DeepSource](https://www.deepsource.io/discover/)[Visit this guide to find out more about how you can contribute to open source.](https://opensource.guide/how-to-contribute/)

More resources:

  • [GitHub Training Kit](https://github.github.com/training-kit/)
  • [Understanding the GitHub Flow](https://guides.github.com/introduction/flow/)
  • An [Absolute Beginner’s Checklist](https://dev.to/cockroachlabs/an-absolute-beginner-s-checklist-for-hacktoberfest-p2k) for Hacktoberfest
  • [How open source contributions can boost your career](https://opensource.com/article/19/5/how-get-job-doing-open-source)
  • [Contributor’s Guide](https://www.digitalocean.com/community/tutorials/hacktoberfest-contributor-s-guide-how-to-find-and-contribute-to-open-source-projects)to Open Source Projects
  • [How to write a good commit message](https://dev.to/chrissiemhrk/git-commit-message-5e21)
  • [GitHub Desktop](https://desktop.github.com/)
  • [Community help in our Hacktoberfest Discord server](https://discord.gg/hacktoberfest)

•  •  •

Pull Request flow chart

https://3kllhk1ibq34qk6sp3bhtox1-wpengine.netdna-ssl.com/wp-content/uploads/bitbucket411-blog-1200x-branches2.png

•  •  •

How to make a pull request

The first step in contributing is finding a project that you want to work on with issues open. Many major frameworks and libraries will have hundreds of issues open at a time. You will notice tags below the issue number, many will rank the urgency of the issue and display the issue’s nature.

•  •  •

Guide how to open a PR

https://github.com/Rahat-ch/The_Sylar_Project/issues

•  •  •

In the photo above, it shows issue #23 asking for help creating unit tests. Next to the title of the issue are indications that they want help solving this issue, as well as indicating it is good for first time contributors to tackle.

•  •  •

Guide how to open a PR

•  •  •

When you further inspect the issue, you can read a longer description of the issue’s nature as well as some direction in how to address it. You will also notice contributors commenting and suggesting how they can help. This kind of open and friendly communication has been my experience when working on open source projects.

•  •  •

Guide how to open a PR

•  •  •

Finally, when you have written code that solves the issue, and in accordance with the CONTRIBUTING.md documentation, you will open a pull-request and provide the desired information. After a review, the code may be merged into the project, or the creator of the issue may give further direction to improve the code. Once the pull-request has been approved, it is merged to the main branch and you have successfully become a contributor!

•  •  •

Check out this Open Source Project

Last, I’d like to shoutout an open source project started by a friendly developer, it is also the project in the images above. The Sylar Project is a repository that helps users more easily find mental health resources in their local area. Below I have linked the project itself as well as the blogs Rahat has written about the inception and the progress that has been made!

The Sylar Project

[**Rahat-ch/The_Sylar_Project** *Production Link 👉 https://the-sylar-project-6avzk.ondigitalocean.app/ You will need Node.js version 8.0 or greater…*github.com](https://github.com/Rahat-ch/The_Sylar_Project) [\*\*The Sylar Project Blog Series — Rahat Chowdhury](https://dev.to/rahatch/series/10239)\*\*

Find a project that is meaningful to you, whether it is a popular framework or library you enjoy using, or for a company or cause that you believe in. Any contribution, no matter how small it may seem, helps that project move in a positive direction. You will gain valuable and practical experience and continue growing as a developer.

This is my final blog of 2020, I am excited to see what 2021 will bring! Feel free to contact me any time through my personal website, or connect with me on LinkedIn and Twitter!

GitHubLinkedInTwitterMediumYouTube
me@gabrielhicks.dev