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!
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!
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.
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 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.
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?
The fork button is placed on the right side, above the tabs section.
git remote add upstream <original-repo-address>
git fetch upstream git merge upstream/master
git add . git commit "your message" git push
Pull request tab on GitHub
Comparing changes between original and fork repo.
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’.
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. Good luck and happy coding!