One of the nicer events we have as a software industry is Hacktoberfest, which helps Open Source projects around the world during October. In fact, a lot of those projects allow the modern Internet to function and provide content for you everyday.
As a company we love to get people interested in Open Source, since it’s deeply connected to our values. And for this reason, we want to provide a quick guide on how to contribute to some of the projects you can find online.
Where do I start?
One of the main things you might feel the impulse to do when starting in Open Source is to create a new library or framework. However, since this is your first time trying to contribute to the community, we recommend looking for issues in any of the libraries or frameworks you use in your daily work. Starting small is a great way to start working with your chosen language’s community!
Every time we work with frameworks or libraries made by others, there is a chance that we run into errors. Or maybe the tool we’re using doesn’t fulfill all of our needs. For these cases we can open an issue in the repository we’re using. The idea behind this is to either show the error and the steps to follow in order to replicate it, or to propose new ideas for the library, and the motivation for the proposed changes. Here are a couple of examples in Stack Builders’ repositories.
- Bug: https://github.com/stackbuilders/hapistrano/issues/206
- Feature Request: https://github.com/stackbuilders/hapistrano/issues/12
I’ve found something that I want to tackle! Now what?
You can find virtually anything online. This also applies to libraries and their feature requests. The world is very big, and most likely some other developer in the world has your same requirement, or is having the same particular issue you’re having. In any case, if you find that something catches your eye and you think you can solve it, you can start working on the changes.
To start doing the changes you will need to do a fork of the repository. A fork allows you to obtain a copy of a repository on your account, in which you will start applying your changes. This way anyone who has done a fork of the original repository will have his own copy to modify it according to their needs. Also, the original repository won’t be affected by the changes until those are approved by the maintainer. You can find a GitHub guide to fork a repository in this link
Once you have your fork of the original repo, you have to create a new branch, in which your work will be located. Now you can start working your magic, and implementing the changes that you want for the library.
Okay, it works on my computer. Now what?
Once we have our commits ready in our fork and local branch, we can create a pull request (or merge request in GitLab) that has to be reviewed by the original repository’s maintainers. In some cases they will leave some feedback about your changes, and ask you for some modifications. This is a great way to learn new things, and to really express your opinions. Always keep in mind to be polite and respectful of other developers’ opinions, and try to work with them to reach a common goal. Remember that both of you want the same thing: To improve the product.
Once the pull request gets approved by the maintainer you’re good to go! Your changes will get merged to the main branch of the project, and you and thousands of users will be able to use the new features for the project.
Is there anything else I could help with?
If you don’t feel like coding or haven’t encountered any bugs or ideas, there are libraries that might need some translations for their documentation or even could use a how-to file which will allow the tool to reach more developers and letting them use it at its fullest, or even discover new features that they weren’t aware of.
On a day to day basis we’re using several free and open source tools to do our best work. Why not give back to them freely as well? Doing Open Source is not only a great way to make the ecosystem for your particular language grow, but it will also give you exposure to production-ready code and an awesome learning opportunity, and will definitely help you showcase your work to the world.
So what are you waiting for? Go look for opportunities to give back to the software community!