Hacktoberfest and Contributing to Open Source Software

Posted by Andrew Schutt on October 14, 2020 · 5 mins read

In the spirit of October and the annual Hacktoberfest celebration I wanted to share my experience and thoughts around contributing to Open Source Software.

Beginnings

When I first began to learn about modern development processes (git, RESTful APIs, web application development, etc.) I also began to rub elbows with more open source libraries and tooling. After this first brush with consuming open source software I set out to try and contribute back.

My first foray into contributing was overwhelming. At the time I was learning Ruby on Rails and wanted try my hand at getting a commit into the Rails codebase. My line of thinking being that this a fundamental piece of software for my skill set, surely I can contribute easily! This was incorrect. I was immediately overwhelmed by how to even begin. Browsing through the codebase was taunting and reading through the issues left me feeling further lost. Trying to find what to work on was hard enough but the process entirely was lost on me at this time. I had never worked on a codebase on Github and my git skills were beginner at best.

Feeling defeated and lost I hung my head and continued to work on learning Rails (I was using Agile Web Development with Rails 4 and would recommend it as a Rails learning resource). Thankfully our story doesn’t end here. I do think that this is where a considerable amount of folks do stop though. Being overwhelmed and scared of contributing is normal. It’s a lot to take in and learn and some repos have considerably steeper learning curves before you can dive in. Not knowing git and Github norms is a good first spot to start. This course from Egghead.io is a good resource that I wish I had when first getting started with git. It will walk through from the beginning of how to contribute.

Run it back and try again

Failing is always ok. Giving up is it.

After a little over a year I gave a second attempt at contributing to open source when October rolled around again. This time I was more diligent in selecting a project that would suit my abilities at the time. I had gained the knowledge needed to make a contribution to a public repository. My selection process was much mor nuanced this time. I looked for a project that was…

  1. Looking and open to new contributors
  2. Participating in Hacktoberfest
  3. A Rails application to help me hone my development skills
  4. Had a meaningful misson

I was able to track down a project that fit these criteria. Having this set of project qualities ensured that I was able to track down make contributions still being beginner. I would highly recommend creating a list of what you want to find in a project to narrow down where and how you can make a contribution. Searching on Github for the hacktoberfest topic is a good start and tools like CodeTriage can also be used to help find projects.

The community that that I found was warm welcoming and extremely helpful for someone still trying to tip a toe into the world of open source contributions. Had some labels that pointed out good first issues, strong documentation, and Slack community to help answer questions.

Giving back beyond a PR

This year around I am participating in Hacktoberfest again and trying to do more then simply opening a pull request and fading away for a project. I curated an issue and did some discovery around an issue. Inspired by the creator of CodeTriage and videos where he dives into a project and starts to triage issues for the project. Beyond that I am improving documentation for projects, expanding Wikis, giving reviews of work, and trying to help out first time contributors on the Slack channel.

Helping with these processes often can be the most time consuming aspects of a maintainers work. Helping and enabling others to contribute or use a tool can eat up valuable time to actually do the work. It’s about being a member of a community and that’s what open source software is all about at the end of the day. Being an active member of a software community.