Hacktoberfest: Beyond the T-shirt! ๐ŸŽƒ

If you look beyond the free Hacktoberfest t-shirt, you will definitely reap benefits much more worthwhile and lasting than a tee (and the tee too)!

ยท

7 min read

For most beginners to open source, the motivation to participate in Hacktoberfest stems from the chance to win a free t-shirt. And that, I feel, is totally understandable! However, if you don't chase the minimum requirement of 4 accepted PRs as a goal, but instead as a means to self-improvement as a developer, you will definitely reap benefits much more worthwhile and lasting than a tee (and the tee too)!

I participated in Hacktoberfest for the first time this year (2021) and the experience was way beyond my expectations! Unfortunately, I wasn't able to devote the 2nd half of the month to open source due to college assignments, labs, projects, etc. Still, I'd consider my participation a "success", thanks to all the unexpected opportunities and ways of learning that I discovered, apart from my 14 merged PRs! The experience was awesome enough to push me to finally start my blog, so here's my first article! ๐Ÿ“ƒ

Buckling up!

When I registered for Hacktoberfest, I set 2 conditions for myself for each PR I'd make. I decided to make a PR only if:

  • It required me to learn at least something new

And / Or

  • My contribution would impact at least a few people apart from the repository owner

These requirements ruled out any "shortcut" PRs, like a small CSS tweak in someone's personal portfolio website. In fact, setting these conditions for myself worked so well that I would suggest you to adopt the same, to get the most out of Hacktoberfest.

Next, I joined the Hacktoberfest Discord server, and started scrolling through the project-sharing channel. Surprisingly, even just browsing any repositories that caught my eye, was enlightening! Getting exposed to unique ideas, all in different stages of execution, from great minds across the globe, and seeing them slowly take shape before my eyes, was an unmatched learning experience in itself. ๐Ÿคฉ This is also how I discovered repositories to contribute to, and would recommend you to also keep up with this project-sharing channel. You never know what hidden gem of a repository you may find buried there!

Now comes the fun part, the pull requests! ๐Ÿš€

I started out strong with 1 medium-large PR to a radio discord bot. I learnt discordjs, which I had been intending to work with since long. The PR also sparked further discussion with the repository owner on how the bot should deal with user inputs that may potentially cause bugs in the future. It was really cool seeing this discussion unfold, and to add my 2 cents to it!

Soon, I discovered a very interesting and early stage project with a potentially large userbase, Felvin (this was easily the highlight of my Hacktoberfest journey) and instantly knew I'd love to contribute to it in a major way. For starters, I made 2 small PRs to the repository, fixing some simple regex, mainly to familiarise myself with the codebase. Ultimately I wanted to contribute a standalone component (think a mini app component in React, dubbed as instant app by Felvin) to this repository, but before taking on that challenge, I took up an issue to refactor and improve an existing instant app in TypeScript. Apart from granting me closer familiarity with how instant apps work, this medium PR gave me an excuse to dive into TypeScript, again something that had been on my to-do list.

I soon got an email congratulating me for completing the Hacktoberfest challenge and getting 4 PRs merged, but I somehow felt... empty. At the start, this is what I'd hoped for but now I was too invested in all the amazing projects I'd found, to stop at just 4. What was previously a goal (get 4 PRs merged) was now just the first milestone of my Hacktoberfest journey! In fact, this was just the beginning! โœจ

Next, I came across a command line changelog generator tool, written in typescript, and was intrigued since I'd never worked on a CLI tool before. Though all open issues seemed hard to me, the repository owner had very helpfully described how to solve some issues with references to other parts of the codebase, which encouraged me to get one of the issues assigned and work on it. The extensive tests that a PR had to pass, ensured that I was thorough. It was a euphoric moment when all the automated tests on the PR passed in 1 go! This small medium PR helped me understand TypeScript (and it's significance) better.

Another project that piqued my curiosity implemented puppeteer as a service. I grabbed this opportunity to work with puppeteer for the 1st time and made 1 medium PR to it. A bonus learning was getting to familiarise myself with Vercel and it's CLI.

When I saw a project created by "Spotify" in the Hacktoberfest Discord server, while using that very app in the background, I couldn't resist checking it out. The Backstage repository was the largest, both in terms of sheer size and impact, that I'd come across yet, and I was excited to see what seemed to be an easy 2-lines-of-CSS-fix issue. Since the PR would fulfil my second condition of impacting many people, I took up the issue. The fix turned out harder than expected, and I had to revisit some forgotten CSS, which only made this medium PR more interesting!

I found another issue in this repository that seemed pretty simple. Just a little change in the string splitting logic I thought, and made the PR. But once again I was wrong and this time, the actual issue was way beyond someone with barely any familiarity with the codebase! There was a logical flaw that needed to be addressed, hiding behind the string manipulation. Thankfully, the original code author suggested changes which I implemented (more like copy pasted ๐Ÿ˜…). However, due to the massive size of the repository and possibly due to my machine being overburdened with lots of projects at once, I couldn't set up the dev environment for backstage. Fortunately, the person who had created the issue this PR resolved, took over to complete writing tests, and the PR was finally merged after 2 weeks. This was an unexpected roller coaster ride, wherein I learnt some more TypeScript by trying to decipher the codebase, and also got exposure to how big scale repositories with individual components work. Additionally, it was really cool to see how the open source community comes together to solve issues compounded by practical problems (inability to set up dev environment), and how the magic that git is, enables such collaboration!

When I revisited Felvin to contribute my own instant apps, I was pleasantly surprised to see the announcement of a hackathon that weekend! The judging criteria was the quantity and quality of instant apps built in the 48 hours, and there were prizes too! Registering was a no brainer, and I quickly got some pending college assignments done to make time for the hackathon. Those 48 hours flew by in a happy blur of coding up 6 instant apps, debugging, eating, some sleeping, and some music. I was half dozing off during the closing ceremony, but hearing myself announced as the winner of the 1st prize I jolted awake! ๐ŸŽŠ All the sleep deprivation had been worth it! The excitement of my first win at my second hackathon didn't let me sleep for another couple hours as I celebrated with my parents. Speaking of those 6 large PRs made during the 48 hours, they helped me get back in touch with and better appreciate React. I also learnt to use styled components.

After this, college work, which I'd admittedly been slacking at a bit, demanded my attention and I was forced to redirect my focus. I was also taking part in the 30 Days Of Google Cloud challenge, so had to complete that before the deadline in late October. Soon I received the personalized link to order my t-shirt (yay!) and as much as I enjoyed choosing a variant and size and ordering it, I couldn't help but think of how much joy a simple merged PR can give me too!

Key take-aways

To summarize, here are my learnings from my Hacktoberfest 2021 journey that will hopefully help you have an even greater experience than mine:

  1. Do join the Hacktoberfest discord server, and keep up with the project-sharing channel.
  2. Don't hesitate to browse through interesting repositories even if you can't contribute. Simply exploring can be a great learning experience too!
  3. My 2 requirements for a PR already cover this, but to reiterate, don't try to take shortcuts (aka making a PR only to reach the milestone of 4 PRs).
  4. To maximise learning, be familiar with at least the basics of the tech stack of your choice, otherwise you won't know where to start from.
  5. Remember the goal is not 4 PRs, that is just a means to what should be a larger goal. Ideally that'll be something along the lines of improving yourself as a developer, maybe finding a project you'd love to continue contributing to, or just being a good member of the open source community at large!

Happy hacking! ๐Ÿ‘ฉโ€๐Ÿ’ป

ย