DEV Community

Cover image for Overcoming the anxiety of creating your first open-source contribution ๐Ÿฆ„
Saurabh Daware ๐ŸŒป
Saurabh Daware ๐ŸŒป

Posted on

Overcoming the anxiety of creating your first open-source contribution ๐Ÿฆ„

Note: This article is for the people who already know how to create Pull Requests but are too scared to create one or don't know how to exactly find an issue or a repository to work on. If you need help with the process of creating PR, you can check out Git and GitHub Guide on Atlassian or Harsh's Git Basic Guide

Open-source can be overwhelming and contributing to someone else's project can seem difficult at first.

"What if I mess everything up?", "What if I do something dumb with the code?", "I am ready... but these codebases are so huge... how do I find and fix bugs in this", "I can't understand the codebase... it's so huge".

... these are some of the questions I had after learning git and GitHub. Even though I knew how to create a Pull Request, it was either too scary to actually send a Pull Request to someone or I simply didn't understand their codebase.

This article will hopefully help you through this phase and will help you create your first Pull Request.

Let's see how you can find the right repository and an issue.

Exploring and finding the right repository and issue

For the initial pull request, the first-contributions repository is quite cool to get started. You have to add your name to CONTRIBUTORS.md and send a Pull Request.

GitHub logo firstcontributions / first-contributions

๐Ÿš€โœจ Help beginners to contribute to open source projects

Open Source Love License: MIT Open Source Helpers

First Contributions

It's hard. It's always hard the first time you do something. Especially when you are collaborating, making mistakes isn't a comfortable thing. We wanted to simplify the way new open-source contributors learn & contribute for the first time.

Reading articles & watching tutorials can help, but what's better than actually doing the stuff in a practice environment? This project aims at providing guidance & simplifying the way beginners make their first contribution. If you are looking to make your first contribution, follow the steps below.

If you're not comfortable with command line, here are tutorials using GUI tools.

Read this in other languages.

๐Ÿ‡ง๐Ÿ‡ฉ ๐Ÿ‡ง๐Ÿ‡ฌ ๐Ÿ‡ง๐Ÿ‡ท ๐Ÿ‡จ๐Ÿ‡ณ ๐Ÿ‡จ๐Ÿ‡ฟ ๐Ÿ‡ฉ๐Ÿ‡ช ๐Ÿ‡ฉ๐Ÿ‡ฐ ๐Ÿ‡ช๐Ÿ‡ฌ ๐Ÿ‡ช๐Ÿ‡ธ ๐Ÿ‡ซ๐Ÿ‡ท ๐Ÿด ๐Ÿ‡ฌ๐Ÿ‡ท ๐Ÿ‡ฌ๐Ÿ‡ช ๐Ÿ‡ญ๐Ÿ‡บ ๐Ÿ‡ฎ๐Ÿ‡ฉ ๐Ÿ‡ฎ๐Ÿ‡ฑ ๐Ÿ‡ฎ๐Ÿ‡ณ ๐Ÿ‡ฎ๐Ÿ‡ท ๐Ÿ‡ฎ๐Ÿ‡ท ๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฐ๐Ÿ‡ช ๐Ÿ‡ฐ๐Ÿ‡ท ๐Ÿ‡ฐ๐Ÿ‡ต ๐Ÿ‡ฑ๐Ÿ‡น ๐Ÿ‡ฒ๐Ÿ‡ฉ ๐Ÿ‡ท๐Ÿ‡ด ๐Ÿ‡ฒ๐Ÿ‡ฒ ๐Ÿ‡ฒ๐Ÿ‡ฐ ๐Ÿ‡ฒ๐Ÿ‡ฝ ๐Ÿ‡ฒ๐Ÿ‡พ ๐Ÿ‡ณ๐Ÿ‡ฑ ๐Ÿ‡ณ๐Ÿ‡ฌ ๐Ÿ‡ณ๐Ÿ‡ด ๐Ÿ‡ณ๐Ÿ‡ต ๐Ÿ‡ต๐Ÿ‡ญ ๐Ÿ‡ต๐Ÿ‡ฐ ๐Ÿ‡ต๐Ÿ‡ฑ ๐Ÿ‡ต๐Ÿ‡น ๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡ธ๐Ÿ‡ฆ ๐Ÿ‡ธ๐Ÿ‡ช ๐Ÿ‡ธ๐Ÿ‡ฐ ๐Ÿ‡ธ๐Ÿ‡ฎโ€ฆ

This is super helpful as an initial practice.

or you can contribute to any of your friend's repository.

Even after contributing to the first-contributions repository, sending a pull request to an actual project and finding an issue in the repository can still seem a difficult thing to do.

You can start by

- Contributing to something you use.

One option you have is to contribute to a project that you currently use. You can make a list of the projects that you are using. NPM packages or Python packages, VSCode Extensions, Frameworks, Libraries, list everything you use!

While using these projects you might have discovered this one particular feature that you feel is missing or documentation for particular function needs to be better or maybe a bug that you found while using it or even a spelling mistake!

Search for the GitHub repository of that project and create an issue mentioning the changes you want to make. If your change is fixing a typo or obvious bug that does not require you to waste too much of your time and effort, then you can create a pull request directly. For feature requests, always create an issue before you start working on it.

Example?

Recently I was reading DEV.to's editor guide and found that there's an extra % in the guide so I quickly made a PR that removed the extra %.

Here's my PR

removed extra bracket from liquid tags in editor guide #4500

What type of PR is this? (check all applicable)

  • [ ] Refactor
  • [ ] Feature
  • [x] Bug Fix
  • [ ] Documentation Update

Description

Found that there was an extra curly bracket in liquid tag guide so I just removed it

Added to documentation?

  • [ ] docs.dev.to
  • [ ] readme
  • [x] no documentation needed

[optional] What gif best describes this PR or how it makes you feel?

Fix it Felix fixing unfixed window

P.S. I am super proud of this Pull Request ๐Ÿจ๐ŸŽ‰

- Contributing to something that looks cool.

Contributing to something you use is not always an option. It can be difficult to find issues after one point so you can simply go to repositories that you find interesting and check out issues in that repository.

Some repositories have issues with labels like "Good First Issue", "Difficulty: Easy" or something equivalent. You can find these issues and comment with something like "Hey this seems cool! can I work on this?". If you need any help or extra information you can comment on this issue and ask for help.

Also, it's not necessary to only go through "Good First Issues" sometimes other issues can seem easier to you. So do go through other issues as well and choose the one that looks interesting!

Example?

During Hacktoberfest I was randomly searching for issues to work on and came across this issue on DEV.to about bad coloring in the profile theme. Do check out the conversation here:

Bad coloring on follow button #4106

Describe the bug

When reading an article, sometimes the button is not clear on what it says given the colors.

To Reproduce

I found it on this article: https://dev.to/jmfayard/how-kotlin-makes-editing-your-gradle-build-less-frustrating-232l

Just going there, without dark mode or anything, I'm not sure if I'm following or not this particular user.

Expected behavior

Text with the follow status for this user should be visible or selectable

Screenshots

image

Desktop (please complete the following information):

  • OS: MacOS
  • Browser: Firefox
  • Version: 69.0.1

Awesome๐ŸŽ‰ Now you have an issue to work on! Let's code!!

Writing code and sending a Pull Request

Here's a thing about large codebases, NOBODY KNOWS HOW THE WHOLE CODEBASE WORKS NOT EVEN THE MAINTAINER! so you don't really have to go through every single file trying to understand how every single function works.

You only have to search for the file where you want to make changes.

- Searching for the right file

I usually search using the text that is visible on the screen so If I want to make a change in DEV's navigation bar, I would search for "WRITE A POST" (visible in the desktop navigation bar)

Here are the search results:
Screenshot of search results after searching write a post which display result from a file named _nav_menu_html.erb at the top

- Local setup

Repositories have a local setup guide in README or CONTRIBUTINGmd. Usually, this includes cloning a repository and installing the required dependencies.

- Writing the code

Do go through the contribution guidelines of the repository to see if there are any instructions about writing the code. Even if you miss something that is fine maintainer will let you know after you make the PR. Going through contribution guidelines will just save your time of making changes later.

- Sending Pull Request

HIT THAT "CREATE PULL REQUEST" BUTTON!!!
and it's totally ok if you miss something or change the wrong function or a wrong file (trust me I've done that a lot). Maintainers will later request you changes if required. You can always commit to the branch and changes will reflect in the PR.

Finally, even small contributions play a major role in an open-source project so don't feel awkward while sending PR for fixing a typo. It is a fair contribution and as a maintainer, these contributions are super useful for me.

EVERY. CONTRIBUTION. IS. IMPORATNT.


Thank you for reading the article. If you have any questions or any help regarding open-source and GitHub, you can drop them in the comments or DM me on my Twitter @saurabhcodes.

You can also follow me on GitHub @saurabhdaware

Stay Home, Stay Safe. ๐ŸŒป

Top comments (5)

Collapse
 
thewasif profile image
Muhammad Wasif

Great article! ๐Ÿ‘๐Ÿฝ๐Ÿ‘๐Ÿฝ
Some suggestions from my experience:

  • Setting up local environment has always been challenging. Specifically for large projects. It requires patience. Follow the guidelines completely.
  • And for large code, you don't need to understand everything. Just try to get the part you're trying to change. And you'll be ready to go.
Collapse
 
saurabhdaware profile image
Saurabh Daware ๐ŸŒป

These are some amazing suggestions Wasif๐Ÿจ๐ŸŽ‰ Thank you๐ŸŒป

Collapse
 
kumareth profile image
Kumar Abhirup

Thanks. This motivated me!

Collapse
 
saurabhdaware profile image
Saurabh Daware ๐ŸŒป

Boom! Achievement๐ŸŽ‰ Glad it helped Kumar :D

Collapse
 
iamsurajdc profile image
Suraj Chandgude

Thank you man!