How can I start contributing to open source software?
Just start
Really, just start! Just like going into cold water, actually getting in is the hardest part. Once you do, you’ll likely want to stay because you’ve adapted and became acclamated to the temperature of the water.
Just like the stress of getting into cold water and getting used to it, I feel like open source is the same way (in most cases). When you first decide to start contributing, you may feel scared or intimidated by the project, the existing contributors or both. Am I too inexperienced to start contributing? Will I look stupid? What if I don’t know what I’m doing? Will they be annoyed by my newb questions???
Well, forget all of that nonsense! I can’t stress it enough when I say, get out of your own head! You’re assuming too much and even if your assumptions are correct, you can’t control what’s in another person’s head. As long as they are respectful and help you when you ask and you’re learning along the way, who cares what they think. One thing that’s important to remember is that more often than not, you won’t be able to guess a person’s attitude or thoughts about you through text alone(e.g. PR comments), so don’t try to…
Another thing I’ve noticed, is that when you’re new to a project, collaborators and/or maintainers are really excited to get you working on their project. I mean, it makes sense if you think about it because, at the end of the day they really want people to work on it. You probably won’t know what you’re doing and everyone expects that! That’s why practically every project has a CONTRIBUTING.md or DEVELOPER.md file to help get you ramped up. The documents are usually tailored specifically to new contributors to help get them going as fast as possible.
The key takeaway is that the best way to get that coveted experience is to actually go out and experience what it’s like to work on big, open source projects. Find those beginner issues and start hacking away! Documentation, bug fixes, tests, anything… Just start!
But, where do I start
This part is really up to you to decide. The way that works best for me, is to think of what interests me and Google it. Chances are, the technology you are into, is open sourced or has facets of it that are. Find those projects and work on it. You can even look up your favorite language or company and filter on projects that way. I use GitHub and their platform has a filtering mechanism that allows you to look for projects by company or by programming language.
Once you find the project, jump straight to the CONTRIBUTING.md or DEVELOPER.md file and use that as your guide. Each project is different, so this step is pretty important. Next, you’ll want to find the mediums of communication that this project’s collaborators use. Slack is pretty popular nowadays. Despite the popularity, some projects may differ on this, so knowing what they use is good. Especially if you have questions about anything regarding the project, existing issues or how to even begin understanding the work needed to complete your PR.
Finally, looking for issues labled help-wanted, beginner-friendly, good-first-issue or hacktoberfest (yes, I still see hacktoberfest labeled tickets lying around occassionally) could help you out in the search for that initial issue to get you started contributing. Every project uses labels differently, so some may do this and some may not. Ask around as well, sometimes a collaborator would love to delegate some work to you, usually low hanging fruit or monotonous work, to clear off their plate. It helps them out while helping you get the experience you need to be a contributor.
Some resources for finding projects to work on
I’m not too familiar with GitLab but here’s a link where you can explore existing projects
Oh and here’s a really good link that contains a lot of info for finding beginner issues