My Hacktoberfest Experience For The Third Time: 2022 Edition
Tags: hacktoberfest, opensource, codenewbie, community
Published: 2022-11-03 04:25:18

It is my 3rd time joining Hacktoberfest. This time, I chose to join the event as both a maintainer and a contributor.

## Being a contributor

[Last year, I was quite active as a contributor](https://blog.esteetey.dev/my-second-attempt-at-hacktoberfest-2021-edition). However, this year, I went on a 3-week holiday and couldn’t access the computer as much.

Since I didn’t have too much time to code, I picked up some simpler issues to work on that still give me some room for learning - since I’ve not implemented the features to be worked on are stuff that before.

### My contributions

![My progress in Hacktoberfest as a contributor - as listed below](https://cdn.hashnode.com/res/hashnode/image/upload/v1667237175632/K8MylAcUL.png)

This year, discounting the 1 PR counted to my own project, I have merged 6 PRs to other open source projects. These are the open source projects that I've contributed to:

1. [Fig Autocomplete](https://github.com/withfig/autocomplete): A tool that adds autocomplete to your terminal
    - Autogenerated Supabase Fig autocomplete specs using Fig's integration with golang CLI framework, Cobra.
2. [supabase](https://supabase.com/docs/reference/cli): An awesome open source alternative to Firebase, where it provides you with a Postgres database, Authentication, instant APIs, Edge Functions, Realtime subscriptions, and Storage.
    - Updated docs for Supabase Fig autocomplete specs
3. [nodejs.dev](http://nodejs.dev): Nodejs.org website
    - Added a simple GitHub action to sync auto-generated docs daily, and added prettier formatting for .yml files
4. [octo](https://github.com/voracious/octo): A minimal knowledge system app like Obsidian
    - Added import and export markdown documents functionality

It was nice to learn how to do different things as a developer by being a contributor 😊 However, being a maintainer is another story. 

## Being a maintainer

While I do not fully understand the concept of open source in its totality, I really like the idea of **building**, **collaborating** and **learning together with other developers** to write better quality code that also translates into features. In my free time after work, I have created a few open source apps using tech stacks that I was keen to learn about and these apps usually also help to serve a specific use case for myself. I have usually worked on these projects by myself, so I thought it will be a nice idea to leverage on Hacktoberfest this year to work together with the GitHub community on these projects.

### Projects participating in Hacktoberfest

For Hacktoberfest, I have chosen to open up 4 of my open source side projects for contributions.

![hacktoberfest projects as listed below](https://cdn.hashnode.com/res/hashnode/image/upload/v1667237531907/_c6K5I7cX.png)

- [Billy](https://github.com/lyqht/Billy): a mobile expense tracker application made with React Native, with a simple Docsaurus documentation website
- [Octokit-lite](https://github.com/lyqht/Octokit-lite): a web app to perform GitHub operations on multiple repositories easily, made with Next.js. Inspired by GitHub's [Octokit](https://github.com/octokit) and Hacktoberfest's [hacktoberfest-repo-topic-apply](https://github.com/Hacktoberfest/hacktoberfest-repo-topic-apply)
- [generate-supabase-db-types-action](https://github.com/lyqht/generate-supabase-db-types-github-action): a GitHub action to create PRs for creating/updating Supabase type definitions file in the project
- [awesome-supabase](https://github.com/lyqht/awesome-supabase): an awesome-list of official+community starters & resources. *This project is created during Hacktoberfest itself as a way to encourage non-code contributions!*

### How I decide the issues to be created

To make my project easier for contributing for newcomers, I tried to **restrict the scope** of most issues I create to simpler frontend issues.

In every issue, I also give a simple **suggested solution**, where **they can propose suitable alternatives**. I also try to provide relevant code e.g. which method or files to modify, but not to give them too much details on how to implement the logic so that they get the chance to practice problem solving themselves. 

### Getting contributions

*Octokit-lite* is my **most active project** for Hacktoberfest in terms of contributions received and the time/effort that I’ve invested in collaboration.

- 5 people picked up issues within the **1st day of sharing this project** on [Hacktoberfest Discord](https://discord.com/invite/hacktoberfest)
- 3 PRs are merged over the **1st weekend**
- Total of 10 PRs merged to *Octokit-lite* **during the entire event**

Contributions to *Octokit-lite* vary in size and below are some examples of how I gauge the size

- XXS: adding a Code of Conduct file ([Sumit Bisht](https://github.com/lyqht/Octokit-lite/pull/17))
- XS: Input reset after deleting repos at *Unfork* (**[najeebkp](https://github.com/lyqht/Octokit-lite/pull/26))**
- S: Improve History Logs Page layout ([LoftyBrambles](https://github.com/lyqht/Octokit-lite/pull/19))
- M: Sort repos by last push date at *Unfork* ([ilikepizza2](https://github.com/lyqht/Octokit-lite/issues?q=is%3Apr+author%3AIlikepizza2))
- L: Add *Unlabel* to *Octokit-lite*: functionality of removing label(s) from selected repositories ([Dolir](https://github.com/Dolir))

I usually create L size issues for my own personal tracking of what to work on next, so it was **a pleasant surprise** for me to see that there would be developers from the community who would volunteer to pick up issues of this scale! ✨

Aside from Octokit-lite, I also merged 1 PR to fix styling on bullet points & video rendering for Billy’s docsaurus website, 1 PR for updating generate-supabase-db-types-action to use the latest [supabase CLI](https://github.com/supabase/setup-cli) to generate types, and 4 awesome-supabase PRs merged that added online courses, starters & update links for Supabase resources.

### An unexpected collaboration

While sharing my project on Twitter, I got to know of [Gregor Martynus](https://twitter.com/gr2m), the maintainer of [the JavaScript Octokit](https://github.com/octokit/octokit.js/) – GitHub's official JavaScript SDK and his project *[Octoherd](https://github.com/octoherd/octoherd)*. He [tweeted a reply](https://twitter.com/gr2m/status/1575883757034184711) that it will be nice to have a GUI like *Octokit-lite* for *Octoherd*, and that sparked an inspiration for me ✨

I thought that having an Octoherd integration will be really promising and useful since *Octokit-lite* was intended to be a compilation of microapps to help users perform handy GitHub operations on repositiories in bulk, and this meant achieving **a similar goal** as Octoherd. In fact, *Octokit-lite*’s name is inspired by Octokit, so it is no surprise that the two have similar goals 😊

Then, I tried to think about how technically feasible this integration is and wrote down some tasks down in [an issue](https://github.com/lyqht/Octokit-lite/issues/15). There, I also seeked Gregor’s advice on how we can go about adding Octoherd functionality. 

While I was worried that the implementation plan isn’t perfect before executing it, he said something that felt really assuring.

> I'd say go whatever path works for you right now. Make it work, then make it great, and let the community help. - Gregor Martynus

Being a creator of an open source project has made me feel *very obliged* to be the expert who can answer every question about how to go about doing anything, but that didn’t necessarily have to be the way. While I’m already standing on the shoulders of giants who provided cool open source libraries to use in my project, I can still continue to tap on many other sources of knowledge — and that’s **the beauty of open source**.

This also brings me to talk about my Hacktoberfest experience as a whole.

## Overall Experience

### It turned out better than expected

![A pretty Level 4 Contributor Badge by Hacktoberfest awarded on Holopin for having 4 merged PRs](https://www.holopin.io/_next/image?url=https%3A%2F%2Fassets.holopin.io%2FeyJidWNrZXQiOiJob2xvcGluLWFzc2V0cyIsImtleSI6ImFzc2V0cy9jbDhkOHVrb3MwMDk0MDlqbnVuaGRhcDd3IiwiZWRpdHMiOnsicm90YXRlIjpudWxsfX0%3D&w=1920&q=75)

Despite the 3-week holiday, Hacktoberfest was still a refreshing experience for me. Being a contributor this year was much more relaxed since I wasn’t as ambitious as [last year](https://blog.esteetey.dev/my-second-attempt-at-hacktoberfest-2021-edition).

On the other hand, it is my very first time being a maintainer so I was pretty afraid I would screw up a lot, but the experience turned out better than expected 😊. To be honest, I thought no one would even volunteer to help out on my side projects but I'm glad that I was proven otherwise 😄! 

As I learn to work with my contributors, I understand better how to write better setup instructions (big thanks to my first contributor [LoftyBrambles](https://github.com/Lofty-Brambles) for pointing out problems and helping other contributors!) and learn how to give clearer review comments to work together with my contributors on pull requests. 

However, some things didn’t go as well as I wanted as a maintainer during Hacktoberfest.

### Confusion with the event rules

The rules for Hacktoberfest was slightly different this year, which has caused some confusion for me as well as the contributors that helped out with my project. 

Last year, it was required for the issues/PRs has the **label** `hacktoberfest`, to be counted. This year, as long as the project has the **topic** `hacktoberfest`**,** any PR merged for that project will count for users that have signed up for Hacktoberfest. This has led to me/other contributors asking for project maintainers to add the label to the issue & PR. 😂

On the other hand, the `hacktoberfest-accepted` **label** on PRs is only meant for keeping track of PRs merged **for maintainers.** However as a maintainer, I don’t really see the website helping me to keep track of this even though I signed up as both a contributor and a maintainer - so honestly I don’t know how well I’m doing as a maintainer. Even though I have over 10 merged `hacktoberfest-accepted` PRs, I don’t know if that is good or not.

### It is difficult to be a maintainer

Although my project can be considered as a relatively small scale project, however, I do experience some troubles as follows:

1. **Ghosting by contributors**: This is a quite common thing that happens for open source projects. However, this is not ideal during the Hacktoberfest period because hoarding these issues and not working on them meant that other contributors who were keen to contribute to the project would be turned away due to the lack of open issues to be worked on. I had quite a few issues that got ghosted by my assignees and had to be reassigned. This could also happen multiple times for the same issue.
2. **Getting spammed by contributors to merge PRs**: I wish that I didn't have to manually point out that I was on holiday, but there was an instance where a contributor pinged me quite frequently to review the PR. I hope the open source community understands that maintainers are also normal people living out their lives and often have other priorities on hand. 
3. **Getting questions on non-project-specific problems**: I had contributors asking me for help on very basic problems such as having a outdated node version causing package prroblems, not knowing how to use `.env` file to set environment variables. While I’m not sure how to ensure that the contributors have a basic understanding of these things before jumping into the issues, it’s a little frustrating when I get these sort of questions because it shows a significant lack of effort on the contributors’ side in troubleshooting problems and it also wastes my time.
4. **Contributions start to decline after the 2nd week**: Probably because many contributors have already completed Hacktoberfest by then, there’s a significant drop in activity on my projects thereafter. 
5. **Lack of discord community:** I took the time to look up on how to create an ok-ish discord server with project specific channels, however aside from my friend, no one else joined it 😂This is also attributed to the fact that I created this discord only after the 2nd week of Hacktoberfest where contributors have become less active.

## That’s a wrap!

![https://c.tenor.com/eoM1uCVuXtkAAAAM/yay-excited.gif](https://c.tenor.com/eoM1uCVuXtkAAAAM/yay-excited.gif)

Thank you for reading, hope you enjoyed the article!

Did you joined Hacktoberfest too? Share your experience below in the comments, I would love to hear it!

If you find the article awesome, hit the *reactions* 🧡 and *share* it 🐦~

To stay updated whenever I post new stuff, follow me on [Twitter](https://twitter.com/estee_tey).

> To support me on content creation, you can [buy a cup of tea](https://blog.esteetey.dev/sponsor) for me ✨