On October 10th, 2019, I submitted my 4th pull request (PR) for Hacktoberfest, and a week later, on October 17th, my pull requests passed the review period, and I was officially eligible for my Hacktoberfest t-shirt. This was my first time participating in Hacktoberfest, and I wanted to write a bit about my experience.

I first heard of Hacktoberfest two years ago, when I was in my coding bootcamp. One of my cohort-mates mentioned something where you could put in PRs to two repositories and get a free t-shirt. At the time I felt like I was working hard enough to keep up with my bootcamp work, and wasn't really interested in outside projects. The following year, October came around, and I was dealing with a stressful job and apartment hunting and starting marathon training, so I just didn't feel like I had the time to commit.

Fast forward to late September 2019. I was in the middle of a very stressful job hunt and I needed a distraction, so I decided to commit to Hacktoberfest. I've always thought that open-source software (and allowing anyone to contribute to projects) was an interesting idea, and this seemed like a good way to finally push myself to be involved. I also felt like it might help me get comfortable working with larger repositories, something that I didn't get as much as I wanted at my last job. And of course, I was really most interested in the free shirt (which I honestly probably will never wear since I rarely wear t-shirts).

This year's rules required 4 pull requests, and I knew it would be tough. The first half of my month was full of holidays, so I figured I'd deal with life stuff early in the month and worry about Hacktoberfest later in the month. I did try glancing at an issue or two early in the month, but anytime I looked at an issue, I felt like I had no idea how I would even start to resolve it, and I started to feel overwhelmed and like Hacktoberfest was not going to happen.

But then ... my first PR happened. Somewhat unintentionally. As part of my job search, I was fortunate to be asked to complete technical challenges by a few companies. I was working on one such challenge during the first week of October, and when I finished the challenge, I followed the instructions and submitted it via pull request ... and when I looked at my Hacktoberfest profile later that day (I thought looking at my empty profile would motivate me), I was surprised/excited to see that my technical challenge PR had counted towards the challenge.

I may not have intended to make an open source PR, but there it was, my first PR. I was 1/4th of the way done with the challenge. But I still had an uphill battle ahead of me - 3 more PRs to submit.

My next PR was another "surprise". I do my best to post a new blog on my personal website every week, and the first step in getting that blog live is creating a PR from the branch on which I write the blog to the master branch, which is where I keep all of my current changes. I do this via PR instead of a merge to encourage myself to re-read the blog after I've written it to make sure there are no major mistakes (although I do miss a decent number of typos). After creating my PR for my October 7th blog post, I checked my Hacktoberfest profile and saw that it too counted towards my 4 PRs.

This was a game changer for me. Each of my blogs involves two PRs (more on the second one in a bit), but even with only one PR, with four weeks in the month, I knew I would definitely get my four PRs. Finally, the pressure was off. I knew I would get my free t-shirt.

But getting the t-shirt was not the only reason I wanted to participate in Hacktoberfest. While doing a technical challenge and updating my blog were technically pull requests to open source repositories, I knew I wanted to contribute to something that is truly open-source software. Knowing that I could complete the challenge with blog posts alone took away a lot of the pressure, because now I was now contributing to an open source repository because I wanted to, not because I needed it to complete the challenge. This gave me an opportunity to hunt for the issue that felt right for me instead of just trying to tackle something because I needed PRs.

While I was trying to figure out my open source contribution, I put in my third pull request of the month, which was another PR on one of my repositories. I keep a deploy branch on my personal website, which is the code that gets automatically deployed to the site. After I merge one or more branches into master, I make sure all the code is playing nicely together, then merge that into the deploy branch. For a blog, merging master to deploy is pretty easy, but if I'm adding new pages or redesigning the site, it gets a little more complicated. In this case it was a pretty easy merge (a few typos that I missed, but no merge conflicts), and it was my third of four required Hacktoberfest PRs.

Once I had PR #3 done, it was time to figure out my "big repo" contribution. I've always enjoyed writing and considered myself a writer, so I thought that my best bet might be writing a README for a small repository that didn't have one. As I was looking for a good project, I decided that I actually would be happier working on something that I use - which probably meant a documentation contribution, not a full README. I use Gatsby for my personal website and I really like it, and from what I've seen they're being very Hacktoberfest-friendly, so I went to their GitHub repo and found a docs style guide issue that was encouraging small PRs. People seemed to be claiming small parts of the documentation to work on, so I claimed all the files that started with a particular letter and got started.

Gatsby has great documentation on how to get started contributing to the docs (and to Gatsby itself), so I opened that page, forked the repository and cloned it to my local machine, and set it up according to the instructions from the documentation. There were a lot of files that started with my chosen letter, so I decided to divide the work into two smaller PRs. I created a branch for the first PR and opened my code editor.

... And then life happened. It turns out, I picked a very bad time to work on my PR. I had some things I needed to take care of, including helping a family member with something, a technical challenge, and preparing for an interview the following morning. All things considered, I didn't really have a huge amount of free time to be working on open source. But I decided to just take an hour and knock out as much as I could in that hour. If I didn't finish all the work then, I'd worry about it after I finished everything else I had to do.

I managed to make all of the changes for my first PR in that hour. I ran the site to make sure it was still working properly and I didn't break anything, then committed the changes, pushed my branch up to github, and put in my PR. And my fourth Hacktoberfest PR was officially done! After putting in this PR, I checked my Hacktoberfest profile, and I was officially in the review period. Maintainers had one week to mark my PR as invalid if they felt that it was not in line with the rules of Hacktoberfest, and once that review period ended, (assuming all of my PRs passed review) I would be eligible for my free t-shirt. I knew that the two PRs to my repositories would be okay, and I knew my Gatsby PR was okay, so my only question was about the technical challenge PR. I knew I'd be putting in another Gatsby PR, so I wasn't very worried (and that PR ended up passing review anyway, so it was fine).

Back to that Gatsby PR. I was my first attempt at contributing to an open source project that's heavily used, so I want to share more about my contribution and what happened after I put in that PR.

I submitted my PR, and a few hours later, I saw that it had been approved. I was ecstatic to have my PR merged into the repository (and to earn my swag). Shortly thereafter, another maintainer left comments on the PR with some suggestions that she didn't get a chance to make before it was approved (and I ended up submitting another PR to address those comments). At first, seeing those comments erased the excitement I had from having my PR merged. I submitted something that clearly wasn't good enough. I felt like my foray into open source was a failure, and I didn't want to finish what I was working on. I clearly had done a bad job on my PR, so why would I keep trying?

After I submitted my second PR (which addressed the comments made on my first PR), I took some time to think, and realized that I did want to keep working on this. Yes, I made some mistakes in my first PR. But I tried to learn from those mistakes for the next PR. And to be honest, I did feel like the comments were made in an informative way, and were not meant as criticism, just suggestions. Overall, I felt that the Gatsby team was very welcoming and encouraging, so I decided to keep working on the rest of the files for my next PR. I submitted one more PR on that same issue, and while I would have gladly done more, I decided to step back and allow other Hacktoberfest contributors to finish working on the issue. I would like to eventually contribute more to Gatsby (I earned my Level 1 swag, but I really want to make it to the Level 2 swag and get some JAMstack Jammies), but I plan to wait until after Hacktoberfest ends.

I'm very glad that I was able to complete Hacktoberfest, and I think it has motivated me to continue to contribute to open source. I'm definitely going to contribute to Gatsby again, and I would like to also contribute to other software that I use. I know Hacktoberfest 2020 is almost a year away, but I am looking forward to this challenge again.