How to contribute to the open-source project?

Dominika Zając
5 min readOct 1, 2019

The IT community is an amazing group. It doesn’t matter if you are a specialist with years of experience or a beginner, who just started learning how to code. There is always a place for you and your skills in our family. And you can always help others with something. Welcome to the open-source world!

Photo by Kobu Agency on Unsplash

The story behind

Last week I was a mentor at the Angular Girls workshop in Cracow. I love sharing my knowledge with others and that unique combination — hard work and full concentration mixed with a supportive, fun atmosphere. Additionally, the mentors’ team decided to do something crazy — extend the original tutorial by completely new chapters. And here the story begins. As always the first version of the tutorial wasn’t perfect — there were some typos, some sections were a little unclear, etc. Participants very fast detected weaknesses and proposed changes. But they didn’t know how to send proposals to tutorial’s GitHub, so they did nothing with that. It made me think — how many improvements we skipped that way? How much time did we waste on communication when somebody was mailing about typo instead of creating a pull request? Let’s imagine that fixing one small issue (easy to detect but breaking compilation of code) takes 2 minutes. When we multiply it by a number of readers, we score many wasted hours that could be spent on something much more interesting and important. The question is — why newbies are so afraid of contributing? After many conversations I got two main reasons — people feel not good enough to commit and they don’t know how to do it. This article was created to fight with those limitations — let me explain why you can (and should) contribute and how to do that!

You are awesome

Photo by Mohamed Nohassi on Unsplash

Sounds lofty, don’t you think? But it’s true. You are the only person with your unique skillset and perception. You see the details the others miss. When you are a beginner you see more potential problems and misleadings that professionals — they might get used to some conventions or patterns. Your fresh view and feedback are irreplaceable — maybe you have some experiences from other areas that could be implemented here? Or you are an expert from e.g. linguistic part and see possible improvements? Don’t be afraid to propose your ideas — owners’ checks ensure your changes cannot break anything. Even if they’ll be rejected you will learn why it is handled that way. And what if your changes will help dozens of people like you? Just imagine that pride when your nick will be visible in the original, very popular repository! Sounds great, isn’t it? So stop worry and start doing — just from today.

So… How to do it?

When you decided to start, it will get easier. The majority of open source projects have their repositories on GitHub. Just go there and find the repo. Now you have two options: to open an issue or create a pull request with your proposal.

Opening an issue

Opening an issue is just like sending a message to authors that something is wrong (or may be improved). It is a perfect mechanism, when you have no idea how to fix something. Issues are visible to everyone, so not only authors but also a community can help you with the problem.

Adding issue in GitHub.

To open an issue:

  1. Go to the repository page on GitHub.
  2. Click on the Issues tab in the project (second tab, just after Code).
  3. Click the green button ‘New issue’.
  4. Fill in the form with title and description. Make your text as detailed as possible — add step by step instructions on how to reproduce the problem, code snippets if needed, etc. Thanks to that resolving your issue will be easier and faster.
  5. When you finish, click the button ‘Submit new issue’ — that’s all! Bravo!

Creating a pull request

Creating a pull request is a little bit more difficult but also more valuable than opening an issue. In that scenario you are not only informed about problems — you are solving them exactly in code and sending changes to accept. Remember — you don’t have to be an expert to contribute to code — the smallest changes very often are the most useful. How technically does it?

  1. Go to the repository page on Github.
  2. Click the ‘Fork’ button (on the right side, above tabs section) to create your copy of the repository. Sometimes you have to wait some minutes to finish that action.
The fork button is placed on the right side, above the tabs section.

3. Clone the repository to your computer.

4. Create a new branch and make your changes locally (the same way as in your repositories).

5. Configure remote to original repo typing in a terminal

git remote add upstream <original-repo-address>

6. Get the latest version of the original repo and merge changes from their master to your actual branch by commands:

git fetch upstream
git merge upstream/master

7. Commit your changes to your fork (the same way as in your projects):

git add .
git commit "your message"
git push

8. Go to the web version of GitHub and click on the ‘New pull request` button in your fork repository (in Code tab, on the right from the dropdown with branch name).

Pull request tab on GitHub

9. Choose to which branch you want to contribute. Take care to choose the correct base repository (original ones). Compare files and click the green button ‘Create pull request’.

Comparing changes between original and fork repo.

10. Add a title and description to your pull request (write down what you want to change and why). Send PR by click green button ‘Create pull request

Example of the fulfilled pull request form

Your changes were sent to the authors of the original repo for approval. Congratulations! Now, you can call yourself ‘contributor’.

Summary

Photo by Matt Duncan on Unsplash

After reading this article you know why you should contribute to open-source projects and how exactly do that. I hope you’ll stop worrying and start improving open source projects, tutorials, etc. And if you have any questions don’t bother to ask me — here on medium (Dominika Zając) or my twitter (@domi.zajac). Good luck and happy coding!

--

--

Dominika Zając

Full-stack developer from Cracow, Poland. Google Developer Expert in Web. Passionate about a11y, best coding practices and singing.