From micro libraries to full-featured frameworks, web to desktop applications, mobile apps to entire operating systems, the open-source community provides us with exceptional solutions and all thanks to people from all over the world who contribute with code, documentation, translations, etc. on 24/7.
Because of how diverse and the vast amount of projects out there, making your first contribution to the community can be an overwhelming task, for this reason, I decided to build this guide to help you find your way out and take your first steps to become an open-source contributor.
Before we get started, I want to emphasize that open-source contributions, contrary to popular belief, are not necessarily restricted for developers. You can contribute in many ways other than with code, from helping with designs, documentation, translations, testing, specifications, even by providing financial aid, among others. Don’t run shy if you don’t know how to code; all contributions are welcome and help make for a better and more open world.
This is great! Now we are familiarized with the importance of your contributions, but why would you?
This is a great question to get us started. In some cases, people contribute to open-source just for fun, practice, or because they simply want to share with the world what they are doing. However, contributing to open-source projects can be very beneficial, and in here, we will explore a few reasons why this is true.
Getting a job can be very hard when you still have no practical experience, but how do you gain practical experience without first landing a job? Enters the open-source world. The open-source community won’t reject you if you have no experience. Perhaps at first, you would have to level your contributions to match your expertise, but gradually, you can get involved in more complex tasks as you earn knowledge and experience.
You can later showcase as part of your resume or portfolio all your open-source contributions to potential employers or customers to validate your credentials and proof that you know what you are talking about.
Leaving the excellent joke aside, many developers would work on side projects for various reasons; companies often ask during interviews something like, “what do you work on in your free time?” expecting some answer related to working on open-source projects. Companies like candidates who love what they do; because only when you love something, you will do it at your best.
Working on open-source projects will show employers that you have a passion for your job, don’t settle down, and have an aptitude for learning and staying on top of the new technologies and tools.
Utilizing an application or library is one thing, but knowing exactly how it works gives you a whole new perspective. For example, knowing how to create a web component will allow you to create web applications; however, understanding how the component library works will enable you to increase your application’s efficiency and make the most out of the features.
How often did it happen to you that while using an application or library, you noticed that there is one small feature that you would love to see, like having an option to export a PDF or use shortcuts for certain features? The good news is that if you are using an open-source application, you can build that feature yourself and incorporate it into the application for others to use it as well. Isn’t that just great?
Because even developers are human beings, we love being a part of something; it fills our hearts to be recognized, share, and talk about the things we love, and being part of a community is all about that.
Moreover, when we talk about open-source, we can’t only talk about one community, but thousands of them focusing on different projects or technologies, grouped by language or location, with enough options for us to find where we feel comfortable and welcomed.
I can’t cover all the reasons here; I don’t even know them all; I listed a few of the popular options, but I’d love to hear from you; what makes you contribute to open-source projects?
You made it all the way down here; that’s awesome! Let’s then jump into the steps to making your first contribution.
Likely you already have an idea of how you want to contribute, but it is crucial for the next step that you know in advance what type of contribution you will make. Are you planning on contributing with code? Testing? Documentation? Translations?
I want to pause here for an important note, no contribution is too small; all of them help. It is by many small contributions that projects become great!
Maybe you have more than one idea, and that’s fine; just have them in mind for the next steps.
The first ideas that come to mind for most people are projects that they use daily; however, those may not necessarily be the best option to get you started. Depending on the maturity and complexity of a project, it may be hard for someone to start making contributions. Ideally, you would find a project suitable for your experience level and knowledge area.
But how do you find a project then? Luckily for us, a few websites track projects that are known to be beginners friendly, and they do it in different ways, but they mostly focus on specific open tasks that are tagged by the maintenance team as such.
Some of these sites are:
In all of them, you can apply filters to match the projects with your interests and expertise. In addition to those sites, you can use the explore module of GitHub to find relevant projects; However, it is not a curated list of beginner-friendly projects; it’s an excellent tool to find interesting or trending topics.
You can also pick more than one project at this step; this can also be an iterative process over time.
In the previous step, you selected the projects you would love to collaborate on; now, it is time for you to take on a specific issue or task. Many open-source projects live on GitHub, so we will explain the process following the steps for that platform; however, if by chance your project is hosted on another platform is the steps will be very similar.
Depending on your skills level, you may want to start with an easy task, and some project maintainers will make it easier for you to get to those. Even though GitHub doesn’t have a particular feature to highlight a task’s complexity, there are some standard ways in which people label them.
The most common on GitHub is by using specific labels applied to the issues, labels like “good first issue” or “first-timers-only” will be easy enough task to take on at first until you familiarize yourself more with the project and the specifics for the project.
Another standard label often used is “help wanted”; this particular label is applied by maintainers for different complexities where they are looking for external help.
In any case, whether a task contains the labels or not, you should always comment on the issue and talk to the project maintainers about your interest in helping out, making sure they are ok with it and that no one else is currently working on that task.
Here is an example of a project that uses labels according to these standards:
Be aware that not everyone will use the same labels, these labels are configured on a project basis, and they are created from a free text field, so the exact name may vary.
All projects and maintainers are different, and though the rules across the open-source community are pretty much the same, there are exceptions or particularities that the project may require. These particularities may vary from templates to be used, special code linting rules, communication requirements, style guides, etc.
All these particularities for a project will be, in most cases, documented adequately on the CONTRIBUTING.md file at the source of the project.
Here is an example of how that may look like:
Make sure you read it; it can contain helpful information.
You already know what problem you are trying to solve and how to do it thanks to the contents on the issue or task and the contribution guidelines; now, it is time to work.
The usual process for contributing to open-source is to “fork” the project, this will create a copy of the project on your own account, where you can work on the code, test, and when ready, you will be able to move your changes to the main project by a pull request form.
Forking a project to your account and downloading it on your computer is super easy.
After you have forked the project, you can clone it to work on your local computer.
You can clone the project by copying the URL of your favorite option, HTTPs or SSH, and by using the command.
git clone <url copied>
Recently GitHub added a new option called GitHub CLI; if you have it installed, and you choose that option, you can simply copy and paste the full command instead of just the URL.
If you need more details about how to work with GIT, check out my intro to GIT
Once the code is on your computer, follow the instructions to set it up and get it up running, make the changes, and, when ready, push them to your account.
By now, you have already solved the issue or implemented a new feature on your copy of the project; you tested and documented it according to the instructions; it is now the time to merge those changes into the main project.
The process of moving your changes to the main project is done by creating a pull request. A pull request is a form you submit to the main project that contains your changes in commits, a title, and a description.
After you submit a pull request (PR), a maintainer will review it, and either of 3 things could happen:
- The maintainer will accept your PR, and your code changes will be official! Congratulations, and thanks for contributing!
- The maintainer will make comments about your code, giving you tips to improve your delivery quality, changes in the way the code is structured, or things like that. You would have to resolve those comments, and every time you push changes to your repository, under the same branch of the PR, the maintainer will get notified. However, it is always good to respond to his comments and even add an additional response when you are ready with the changes so that he/she gets another look into it.
- Your PR will be rejected; this is rare by heart broker. Don’t get discouraged if ever happens; read, and understand why the maintainers will always provide feedback on the comments section. And remember that if you have been in touch with them already about working on the task as suggested, you will rarely get to this situation.
There’s a special feeling that occurs from the moment you hit create on the PR until you receive feedback; it’s exciting, terrifying, and nerve-wracking. Over time, the frightening feeling may go away, but the other 2 will remain if you are like me.
Fortunately, if you want to get some practice on creating PRs, there’s a cool project that will actually do that. You can submit them PRs, so you get to practice, and they are totally cool.
They also provide step by step instructions of the full process, so make sure you check them out; the repo is called first contributions
Open-source is a topic that fascinates me, perhaps also the reason why I wrote so much about it. In the guide, we covered reasons to get into open-source, the potential of open-source, and its impact on the world.
I really hope that I share my enthusiasm and that you now feel more ready to contribute and help change the world. Remember that regardless of the size of your contribution, you will be helping to make things better, and when we are all doing that, amazing things happen.
Writing this piece has been super fun; thanks for reading!