bug repellent

a blog by @captainsafia

<= go home

How do I get started contributing to open source?

I was recently presenting a keynote at a conference where I shared the story of how I made my first contribution to open source and the journey since then. Afterwards, I got a couple of questions from folks about contributing to open source. I’ve been getting these questions for a while and figured I would just create a blog post where I answered a couple of the questions that I’ve gotten.

How do I get started contributing to open source?

This is the question that I get the most, and it’s pretty vague and difficult to answer. What I’ll do is break down the different detailed variants of it and answer those.

How do I get started contributing to open source if my goal is using it to land a job?

These days, a lot of recruiters evaluate candidates by examining their GitHub activity. The assumption being that if you have more commits on GitHub, you are a more active and developed programmer. I don’t think this assumption is correct and I think the decision to factor GitHub activity into the hiring process is harmful, but I don’t make the rules…

That being said, if you are interested in contributing to open source to improve showcase your development skills for potential recruiters, I would consider another avenue.

There are a couple of reasons for this. The first is that the on-ramp to getting involved in an open source project can be very steep. It can take quite a bit of time before you get to a point where you are making contributions that show your full technical skillset.

Furthermore, if your goal is to use your open source contributions to land a job, you should consider what your long-term involvement in open source will look like. Will you continue to contribute once you are employed? How involved will you be in the open source project? It’s important to answer these questions before contributing to an open source project.

All in all, I would say that if you are trying to improve your GitHub profile for a potential job search, I would recommend that you do personal projects (like building a Twitter clone with a framework you’d like to show skill in) and put them on GitHub. This will let recruiters see the full scope of your technical skillset and allow you to build a portfolio of pseudo-products to showcase your ability to develop a complete software product.

How do I get started contributing to open source if my goal is to find mentors?

If you’re interested in using open source as a space to grow your technical skillset with guided mentorship, I’d recommend contributing to a mid-to-large sized project. Mid-to-large sized is a strange way to describe open source projects. It’s not like they’re soft drinks or anything. The key metric that I focus on when it comes to size, in this case, is the number of active maintainers on the project. Maintainers are individuals who have been contributing to a project for a while and have responsibilities around reviewing pull requests. Projects like Python or Node.JS would be large-sized projects because they have a high volume of maintainers. React, and Babel would be mid-sized projects because while they do have several maintainers, they don’t have as many as the projects mentioned above.

Why is this an important factor in determining what project would be good to contribute to if you are seeking mentorship? Simply put, the more maintainers a project has, the more likely it is you’ll find someone who fits well with your learning and development style.

How do I get started contributing to open source is my goal is to improve my technical skills?

If you’re interested in contributing to open source with the intent of improving your technical skills, it’s essential to establish what part of your technical skillset you are interested in growing. Do you want to be a better Go developer? Do you want to utilize React more effectively in your projects?

If you’re interested in becoming better at using a particular programming language, it would be helpful if you started by making contributions to packages associated with that project and then, eventually, to the project itself. This is effective for two reasons: you’ll gain exposure to the package ecosystem of a particular language, gain a skillset in using that programming language to build a package, and learn about the intricacies of the language itself.

If you’re interested in becoming better at using a particular framework or database, it would be helpful if you contributed to open source web apps that utilized that framework. For example, you can take a look at the collection of open source projects built by Thinkster that showcase how to use different front and back-end web frameworks.

Once you’ve established experience with using a particular framework, you can start contributing to the framework above to gain insights into the intricacies of its strengths and pitfalls.

How do I get started contributing to open source if my goal is to improve my communication and empathy skills?

If you’re interested in contributing to open source to improve your communication and empathy skills, you’re definitely making the right call. A lot of open source tools could definitely benefit from improvements in the documentation, accessibility, and evangelism departments.

The possibilities available here are almost limitless. You don’t even have to start by making a pull request. You can begin by publishing a tutorial on your blog or producing some educational material. In my opinion (and the opinion of many others), that still counts as a contribution to the open source community!

You can also browse the GitHub issue board or StackOverflow for a particular open source project that you have expertise in and answer questions publicly. That also counts as contributions to the open source community.

There are a ton of other opportunities in the communication and empathy space. Here’s a list of a few of them from off the top of my head:

  • Giving conference presentations on a particular open source project
  • Answering questions on StackOverflow
  • Helping triage issues on the issue tracker
  • Creating educational blog posts and tutorials
  • Creating screencasts or YouTube videos
  • Live streaming on Twitch while using an open source project or tool

I hope the insights above were helpful for you! If you have any questions, let me know.