Hacktoberfest: Stop Spamming, Start Contributing (And Actually Get PRs Merged) π
Hacktoberfest: Stop Spamming, Start Contributing (And Actually Get PRs Merged) π
Hot take: The worst thing that ever happened to open source was also the best thing. That event is Hacktoberfest.
Every October, thousands of developers suddenly discover the existence of git clone. They rush to GitHub, find the nearest popular repo, change colour to color in a README, and submit a PR with the message "fix typo". Then they do this three more times and wait for their free T-shirt.
And maintainers? They spend the entire month wanting to quit the internet. π€
I know this because I WAS that developer in my first Hacktoberfest. I'm not proud of it.
As a full-time developer who contributes to open source, I've now been on BOTH sides β the clueless newcomer spamming documentation fixes AND the exhausted maintainer closing 47 drive-by PRs in a single weekend. Let me save you from both experiences.
What Hacktoberfest Is (And What It Actually Should Be) π€
What most people think it is:
Open 4 PRs anywhere β Get free shirt β Done!
What it was designed to be:
Discover open source β Make meaningful contributions β
Fall in love with the community β Keep contributing year-round
What it usually becomes:
October 1st: "Oh it's Hacktoberfest!"
October 1st (5 minutes later): *submits PR adding a period to a sentence*
October 1st (10 minutes later): *submits PR removing the period*
October 4th: "I've completed Hacktoberfest!"
November 1st: "What was that thing I did last month?"
The event has noble intentions. Digital Ocean and GitHub created it to lower the barrier to open source contributions. That's genuinely lovely! The problem is the T-shirt incentive turned it into a competition to submit the minimum viable PRs. π
My Hacktoberfest Journey (It's Embarrassing, Sorry) π¬
Year 1: I submitted four PRs fixing markdown formatting in READMEs. Two were merged, two were closed as "invalid." I got the T-shirt. I learned nothing. I contributed nothing.
Year 2: I tried harder. I found "good first issues" and submitted four PRs with actual code changes. Only one was merged. The others were closed because I didn't read the contribution guidelines, my code style was wrong, and I'd reinvented a wheel that already existed in the codebase. Progress, but still mostly chaos.
Year 3 (the breakthrough): I changed my approach completely. I spent the first week just reading code and documentation of three projects I actually USED. Then I contributed. All four of my PRs were merged. One of them got me listed as a contributor in the project's CHANGELOG. That felt better than any T-shirt.
Balancing work and open source taught me this: quality always beats quantity. Four thoughtless PRs will get you a shirt. One great PR will get you a relationship with a project you love.
Finding Projects You Actually Care About π
The wrong way:
GitHub search: "label:good-first-issue"
*opens first result*
*has never heard of this library*
*submits PR anyway*
The right way:
Think about your package.json, composer.json, Cargo.toml, or requirements.txt. Those files are a list of projects you ALREADY depend on. You already know their API. You already have opinions about their documentation. You're already a user.
Start there.
# Your actual open source treasure map
cat composer.json | grep -A 100 '"require"'
# β Every package here is a potential contribution!
Questions to ask about each project:
- Have I ever hit a confusing error message from this library?
- Have I ever wished the documentation explained something differently?
- Have I ever worked around a missing feature?
- Have I ever fixed a bug locally that I never upstreamed?
If you answered yes to any of these, you have a contribution waiting. That confusion you experienced? That's valuable knowledge that future users will thank you for sharing.
In my Laravel work, I contributed a documentation improvement to a popular package because I'd spent two hours debugging an edge case that the docs never mentioned. My PR description included a link to a Stack Overflow question with 847 upvotes from people hitting the same wall. That PR was merged in 14 hours.
The "Good First Issue" Trap πͺ€
GitHub's good-first-issue label is simultaneously the most helpful and most misleading thing in open source.
What it means: "This issue doesn't require deep knowledge of our entire codebase."
What people think it means: "This is easy and fast, perfect for a drive-by contribution!"
The difference matters. A good first issue might still require you to:
- Read several files to understand context
- Write tests (yes, tests!)
- Follow a specific code style
- Handle edge cases
- Understand the project's philosophy
How to ACTUALLY approach a good first issue:
Step 1: Read the issue completely (not just the title)
Step 2: Read the linked code (even if it's scary)
Step 3: Comment on the issue: "I'd like to work on this,
can I have some guidance on approach?"
Step 4: Wait for maintainer response
Step 5: THEN start coding
That Step 4 is crucial. Asking for guidance before coding shows respect for the maintainer's vision and saves you from implementing something in the wrong direction. Maintainers LOVE contributors who ask smart questions. It's the signal that separates "person after a shirt" from "person who might become a long-term contributor."
Reading the Room (And the CONTRIBUTING.md) π
Every project has a personality. Some are formal with strict code review processes. Some are casual and welcoming. Some have strong opinions about code style. Some are happy-go-lucky. The CONTRIBUTING.md tells you everything.
Red flags in contribution guidelines you should respect:
- "Please discuss changes in an issue before opening a PR"
β DON'T open a PR without an issue first!
- "All PRs must include tests"
β Write the tests. Yes, all of them.
- "We follow [specific code style]"
β Run their linter. Don't fight their style.
- "Check if a PR already exists for this change"
β Search first. Always search first.
I once submitted a perfectly good PR to a project that explicitly said "We are not accepting external contributions during our v2 rewrite phase." It was right there in the README. I just didn't read it. The maintainer's response was polite, but the embarrassment was real.
Pro tip from the security community: Treat the CONTRIBUTING.md like documentation for an API. Read it fully before you write a single line of code. It's the contract between you and the project.
The Anatomy of a Hacktoberfest PR That Actually Gets Merged π―
After years of doing this wrong and then right, here's what separates merged PRs from closed ones:
The PR That Gets Closed Instantly β
Title: "Fixed typo"
Description:
Fixed a typo in README.md
Changes:
- Changed "teh" to "the"
Every maintainer during October: closes without reading π
The PR That Gets Merged and Remembered β
Title: "Add error message when database connection fails silently"
Closes #247
## Problem
When the database connection times out, the library currently
returns an empty result set with no indication of failure.
Users (including me!) spend hours debugging thinking their
query is wrong.
## Solution
Added explicit error throwing when connection state indicates
failure, with a descriptive message pointing users to the
troubleshooting docs.
## Testing
- Added unit test for connection failure scenario
- Added integration test with a mock connection timeout
- Tested manually with actual timeout configuration
## Notes
I noticed this issue in production last week and spent 3 hours
debugging it. This change would have saved me that time.
Happy to adjust the approach if you have a different preference!
The differences:
- β References an existing issue
- β Explains WHY this matters (personal story = credibility)
- β Describes the approach
- β Includes tests
- β Stays humble and collaborative
Projects That Are Actually Great for Hacktoberfest π
Rather than gaming the label system, here are types of projects worth your October:
Security tools (my personal favorite lane):
nuclei-templates- Add detection templates for new CVEssemgrep-rules- Write static analysis rulesawesome-sec-talks- Curate security resources- Security documentation for frameworks you know
PHP/Laravel ecosystem:
laravel/docs- Documentation improvementsspatie/*packages - These are extremely well-maintained and welcomingpestphp/pest- Test framework contributions
Dev tooling:
prettier,eslintplugins - Add language support- CLI tools you use daily - Find and fix papercuts
- Your language's package manager docs
Node.js ecosystem:
sindresorhus/*repositories - Excellent maintainer, great for learners- Framework documentation (Express, Fastify, etc.)
In the security community, contributing detection templates is one of the highest-value things you can do. A well-written nuclei template can protect thousands of organizations from a vulnerability. That's more impactful than fixing 47 README typos combined.
The Hacktoberfest Mindset Shift π‘
Old mindset: "I need 4 PRs to complete Hacktoberfest."
New mindset: "I want to make something 1% better for the developers who will use this after me."
The T-shirt (when they still gave shirts) was never the point. The point was:
- You discovered that open source is just software written by people like you
- You realized you CAN contribute, even if you're not an expert
- You maybe made a connection with a maintainer who appreciated your work
- You started seeing the software you use differently β as living projects, not static tools
When I got my first "thank you, merging!" on a real code contribution (not a typo fix), I understood why people contribute to open source for free. That dopamine hit is REAL. The feeling of knowing your code is running in other people's production systems? Genuinely amazing.
Surviving October as a Maintainer π‘οΈ
If you maintain a project and Hacktoberfest is your personal nightmare, you have options:
Label management:
# Add this to prevent spam
Label: "hacktoberfest-avoided"
β DigitalOcean won't count PRs to repos with this label!
Set expectations early:
# In your README or CONTRIBUTING.md for October:
We love contributions! During October (Hacktoberfest), we
get an increased volume of PRs. To help us review efficiently:
- Please comment on an issue before opening a PR
- Trivial formatting PRs will be closed without review
- We prioritize issues labeled "help wanted"
- PRs without tests will not be merged
Being upfront saves everyone time. Contributors know what to expect. You don't feel like a villain when you close drive-by PRs. It's honest project governance.
TL;DR: Your Hacktoberfest Game Plan πΊοΈ
Week 1: Discovery
- List 10 packages you actually use
- Read through their issue trackers
- Star issues that resonate with you
- Read their CONTRIBUTING.md files
Week 2: Engage
- Comment on 2-3 issues with questions or ideas
- Ask if issues are still valid
- Introduce yourself in their discussions/Discord
- Don't code yet! Build relationships first.
Week 3: Contribute
- Open your first PR based on an issue where you already talked
- Small and focused is better than big and ambitious
- Include tests and documentation
- Ask for feedback proactively
Week 4: Follow through
- Respond to all code review comments promptly
- Make requested changes quickly
- Thank reviewers regardless of outcome
- Keep contributing even if it doesn't count toward Hacktoberfest
The secret: Projects don't care what month it is. A great PR in October is the same as a great PR in February. But the connections you make in October? Those can last years.
Final Thoughts π
Hacktoberfest at its best is a gateway drug to one of the most rewarding habits in software development. At its worst, it's an annual spam festival that burns out maintainers.
The choice of which version you participate in is entirely yours.
As a full-time developer who contributes to open source, I've seen firsthand what a genuine contribution feels like to receive. It feels like someone cared. Like someone looked at your work, understood it, and made it better because they believed in it.
That's the whole point. Not the shirt. Not the PR count. The moment when a stranger on the internet says "thank you, this is exactly what we needed" and merges your code into a project that thousands of people depend on.
Chase that feeling. The rest follows.
Contributed to an open source project this Hacktoberfest? Tell me about it on LinkedIn or check out my own contributions on GitHub!
P.S. If you're a maintainer who survived October β you deserve a medal. Seriously. Thank you for keeping the open source ecosystem alive while the rest of us learned what a CONTRIBUTING.md was. π