Table of contents
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. 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.
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:
- Fig Autocomplete: A tool that adds autocomplete to your terminal
- Autogenerated Supabase Fig autocomplete specs using Fig's integration with golang CLI framework, Cobra.
- supabase: 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
- nodejs.dev: Nodejs.org website
- Added a simple GitHub action to sync auto-generated docs daily, and added prettier formatting for .yml files
- 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.
- Billy: a mobile expense tracker application made with React Native, with a simple Docsaurus documentation website
- Octokit-lite: a web app to perform GitHub operations on multiple repositories easily, made with Next.js. Inspired by GitHub's Octokit and Hacktoberfest's hacktoberfest-repo-topic-apply
- generate-supabase-db-types-action: a GitHub action to create PRs for creating/updating Supabase type definitions file in the project
- 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.
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
- 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)
- XS: Input reset after deleting repos at Unfork (najeebkp)
- S: Improve History Logs Page layout (LoftyBrambles)
- M: Sort repos by last push date at Unfork (ilikepizza2)
- L: Add Unlabel to Octokit-lite: functionality of removing label(s) from selected repositories (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 to generate types, and 4 awesome-supabase PRs merged that added online courses, starters & update links for Supabase resources.
An unexpected collaboration
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. 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.
It turned out better than expected
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.
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 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:
- 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.
- 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.
- 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
.envfile 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.
- 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.
- 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 there are not more new contributors to most of my projects.
That’s a wrap!
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.
To support me on content creation, you can buy a cup of tea for me ✨