Contributing to a project, as the name implies is the process of taking someone else’s code and adjusting it, improving it and allowing the developer community to use your work. This is typically done out of pure interest and love for code, as well as believing in a project’s purpose.
Why contribute?
There are a few reasons to contribute to a project on GitHub. One of the reasons is that when a dev contributes to a project, he improves his analytical and coding skills. The contributor needs to understand the project (or the part of it he is working on) thoroughly so none of his changes affect the functionality of previously established features. It is a time consuming process, however the experience gained while reading someone else’s code broadens your horizon and let’s you think outside of the box. You may learn a few new commands or a new way to do the tasks you are already familiar with.
Another reason to contribute is that while you search for a project to contribute to, you can and will come across a lot of interesting projects in progress. This helps you to see what is currently trending on the side-project part of the software development, personal projects of other people and small ideas currently in the making. This may provide you with your next project idea.
Additionally, when looking for a project to participate in you have an opportunity to meet other developers and work on code together. This not only creates a positive and welcoming community, but it also broadens your connections and may land your future job. An important point is that contributions are listed on your GitHub account calendar and they show your activity on the website. This is the first point of interest for many tech firms and it is very likely that they will check out your account and code base to see if you are a suitable candidate for their position.
So how do I contribute?
To contribute to a project, first of all, you need to know how you can improve it. In many cases the CONTRBUTING.md file in the repository is a good place to start. It lists the requirements and actions to take if you want to contribute to the project. The issues of the project are often listed there, too. After that you should have a thorough read of the README file and a good look through the raised issues tab. There you will be able to find problems that require addressing and this is where you are able to shine.
If you are reading this guide, it is highly likely that you are a starting developer who knows his git. Therefore I will not cover the git process in detail. Shortly, in order to contribute to a project, you will need to clone the project from its Git repository, create a new branch and work from it. Once you are done working on your part you create a commit, push to your created branch and create a pull request on the website, with a statement as detailed as possible for both you and other coders’ reference. GitHub has a thorough guide on contributing on the Github FAQ section, however I find this guide easier to follow.
Where do I find projects to contribute to?
The hardest part (at least for me) was to find a project that I am able to contribute to. At the moment of writing this blog post I am still a beginner in the development community and finding a project I am able to fully understand is proven to be a challenge. However, it is possible. Here are a few things you can do if you are in the same position:
- Check the Trending tab on GitHub. The page allows you to see the most popular repositories over the recent X period of time. Popular projects usually have a large coder base and even if you are not successful in finding an issue you can resolve, you will be able to see other contributors’ work and find something worth your attention. The same principle can apply via the Explore tab on the website.
- Help wanted is a label that is often found on projects that, you guessed it, want your help. It is worth having a look at the projects as there is a likelihood that your contribution is welcome there.
- Easy pick and jump in are also labels that are meant for beginners to be able to dive into the project and the skills required to contribute are often lower that the projects from the previous mentions.
- Third party resources, blog posts, tweets are places to look for projects to participate in. You are even able to find repositories on GitHub dedicated to collecting project links that require contributions. Try venturing beyond the first page of google and you are likely to find some hidden gems (no pun intended).
Problems contributing
You might think “Cool! I’ll go ahead and contribute as much as possible!”. Hold your keyboard, buddy. There are a couple issues with contributions you should hear out first.
Beginner-friendly repositories are rare. With all of the above discussed, we should not forget that projects are built to address a problem and are designed as stable and flexible as possible. There is not a lot of contribution to be done by a beginner in the majority of projects. The time it will take a beginner to understand the project is likely going to be the same as the time it would take the beginner to learn all the concepts and build his own first few apps. It is also possible to break the current version by implementing a small fix but breaking something else by not seeing the bigger picture. This accumulates to be a frustrating and time-wasting process.
Complete projects. Most of the projects on the website are already robust and stable enough to get the job done. Until the owners of the project explicitly tell the public that they want a certain functionality, it is very unlikely that you will be of help to the repo and you will not learn much.
Nobody wants your contribution. The harsh truth is that not all projects want contributors. In fact, in most cases your Pull request will not be accepted by the project owner. The reason can be anything — the owner isn’t interested in your contribution, they may think it is not worth the implication, or the project is not being maintained and looked over anymore. It is not only frustrating to know that the code you put your heart and soul into for the last several hours or even days becomes time wasted just because somebody can’t be bothered to read your code and notes and click “Merge Pull request”.
Conclusion
Hey, cheer up! Contributing to a project can be a valuable and satisfying experience, however you do not need to jump in immediately. As developers we are all part of an incredible community; it is the world of open source, that keeps the progress in software engineering moving forward. However a beginner is likely better off learning the core concepts of project building and maintenance by building his own few apps first. Once you have your skills polished, feel free to contribute to a project or put your own work for open source development.
Now get back to coding and show the world what you can do!