Why you should contribute to open source software right now

For a budding software developer, contributing to open source seems exciting but daunting. I know this because I felt this way for some time. My goal for this post is twofold:

  1. Convince you that contributing to open source is not intimidating
  2. Convince you that you should start contributing to open source right now

Before I dig into the meat of it, I’ll quickly explain some background to help you understand my perspective a little bit better. I had a very structured and sequential plan to learn software development. Since I was learning web development, my plan was something like this:

  1. Learn beginner CS concepts, HTML, CSS, and JavaScript (a lot of JavaScript)
  2. Start building more and more complex projects
  3. Build polished, portfolio projects
  4. Refactor to add intermediate/advanced concepts: testing, modularity, better state management, linting, etc.
  5. THEN start contributing to open source software

Why did I wait so long? I was scared. Well, maybe that’s an exaggeration, but I viewed the open source community as a dark creature that would destroy my code and knock me unconscious.

Everyone always said “just start with documentation”, but how can I contribute to documentation if I don’t know what I’m doing? Certainly my pull request (what’s a pull request) would be kicked to the curb…what do I know? And even if I moved past that mental block and felt I was ready to update a README, why would I want to update a README? That’s not a real contribution! I want to make a real contribution on a real project. I want to contribute code to React!

Woah, slow down there. Though I think it’s great to set lofty goals for yourself, it is also important to be logical and practical. You don’t want your first contribution to be some great contribution to some great codebase. You want your first contribution to be now. That will help you reach your lofty goal more efficiently. You could spend months, years planning an awesome first contribution to an awesome codebase. Or you could start small, work your way up, and make that awesome contribution in half the time.

Start with documentation. Why? Well, it is a great way to get a feel for the process, and all projects need better documentation. Pick a framework/library that you use and look at open issues to see if there are any pertaining to documentation. Look at the documentation, and think about if there are any mistakes or missing features.

“But they aren’t going to like my beginner language. It will be so bad, they will ban me from GitHub. They want some one who is more advanced to update their docs.”

They would love for advanced developers to update their docs. But advanced developers don’t want to update docs, so the maintainers will gladly settle for you! Based on my experiences, they will merge your pull request, and you will be very happy. They will then re-write a large portion of it. You will notice this and you will be less happy but still happy. Congratulations!

That’s not scary, right?

It seems like a trivial thing, updating documentation. But in my opinion, it’s less about the actual value you added to the project and more about entering the OSS Club.

Now that you have entered “The Club”, you’ll start watching some projects, reading through issues, answering questions, providing examples to solve issues. These things will require you to learn more about the codebase without trying, and soon you’ll feel confident enough to make “real” contributions to the codebase. Depending on where you are in your journey to learn programming, this process might take some time. But starting earlier is much better than starting later. You should be doing this while you’re building your projects.

Now let’s fast forward to code contributions. Before you do anything at all, watch this tutorial by Kent C. Dodds:

One of the main points I took from that tutorial is that it’s okay if your code isn’t perfect! It’s even okay if your code is incomplete. Obviously, you should be thorough and try your hardest to get as far as you can without help, but if you are still not there, you can create a pull request as a work-in-progress. Also, understand that it might take a couple iterations to get the code the way that the maintainers want. Try not to get down on yourself, just be happy that you are getting your code reviewed. A positive attitude goes a long way. If you show enthusiasm to learn the codebase, help others, and add value, others will see that and give you the benefit of the doubt.

Hopefully, you now understand that contributing to open source should not be intimidating and that it’s okay to start slowly and work your way up. Open source, like most things in life, is all about your attitude. Even if you encounter some grumpy open source contributors or users, try to stay positive and take it all in stride. Then maybe some day when you’re a hotshot OSS maintainer, you will help a newbie make their first PR!