DEV Community

Cover image for What Happened When I Let the Internet Decide What Code Gets Merged (Week 1)
Max
Max

Posted on • Originally published at blog.openchaos.dev

What Happened When I Let the Internet Decide What Code Gets Merged (Week 1)

How a repo let the internet decide what gets shipped—and what happened next.


January 5, 2026, 23:12 UTC. I pushed a commit. A simple Next.js app with a countdown timer and a list of pull requests.

The rules were simple:

  1. Anyone submits a PR
  2. Community votes with thumbs-up reactions
  3. Most-voted PR gets merged every Sunday
  4. Everything can be changed—including the rules

I called it OpenChaos.

Six days later, it hit #1 on Hacker News.

This is the story of Week 1.


The Numbers

Metric Value
Stars 400+
Forks 35+
Pull Requests 70+
Closed as spam 29
Open and competing 30+
Hours on HN front page 17+

Day 1: Bootstrap

The MVP took one night. A countdown timer. A list of open PRs. Vote counts pulled from GitHub's reaction API.

I submitted the first PR myself: dark mode toggle. Because every project needs a dark mode debate.

Within hours, I wasn't alone.


Day 2: The Nihilist Arrives

PR #2: "Vote to shut it down"

@Salman-Sali submitted a PR that would delete everything. 7,108 lines removed. The description was empty.

Someone commented:

"the people who upvote this are probably trump supporters"

Salman-Sali replied:

"hey mister, its not me who chose chaos"

The PR failed CI. Democracy had guardrails.

But the story wasn't over.


Day 3: The Frontrunner Emerges

PR #6: "Calculate +1 and -1 reactions"

@yokeTH submitted a feature that would change everything: count downvotes, not just upvotes. Net score determines the winner.

It was a genuine improvement. It was also a weapon.

Because once downvotes counted, the "Vote to shut it down" PR started losing.


Day 4: I Broke My Own Rules

Here's where I have to be honest.

The site was showing wrong vote counts. PR #1 had 147 votes but displayed 30. GitHub's API paginates reactions, and I hadn't accounted for it.

I faced a choice:

  1. Wait for someone to submit a fix and let the community vote on it
  2. Push the fix directly so voting could work correctly

I pushed the fix.

Then I hit rate limiting (60 requests/hour without auth). Pushed another fix.

You can't vote on whether to count votes correctly. That's circular.

The voting system has to work before democracy can function. But every intervention is a small betrayal of the premise.


Day 4, Part 2: The Demonstration

@Kl0ven opened 30 identical PRs. All titled "should have use proper pagination :("

I thought it was spam. I closed them all.

@Kl0ven got one through: PR #45 "F, At least I tried"

Current votes: -4

It took me days to understand what they were doing.

GitHub's API returns 30 results by default. By flooding the repo with PRs, @Kl0ven pushed older submissions past that limit—making them vanish from the leaderboard entirely.

They weren't spamming. They were demonstrating a bug I didn't know existed.

They weren't wrong.


Day 5: The Dramatic Withdrawal

With downvotes now counting against him, @Salman-Sali made his move.

He closed his own PR. And left this message:

Thank you for all those who have supported me.

It is with great regret that I have to say that I am dropping out of this race.

The big money funded PRs have plotted against me. They want to calculate the negative votes too. The big money has influenced this election. I will not stand for this injustice.

Therefore I am dropping out of this race.

Someone replied:

"STOP THE COUNT!"

A GitHub PR had become political satire.


Day 5, Part 2: The Creator's Sacrifice

My dark mode PR was winning. 228 upvotes. It would be the first merge.

But something felt wrong.

I withdrew it.

"Withdrawing to keep the first merge purely community-driven. Let the chaos decide."

When someone asked why:

"Didn't feel right winning my own game."

The first merge had to belong to the community.


Day 6: The Meme Becomes Real

PR #13: "Rewrite it in rust"

Every project eventually gets this comment. @wvanlit decided to actually do it.

A full Rust rewrite, compiled to WASM, ready to ship.

There was just one problem: the Vercel build kept failing.

Module not found: Can't resolve '@/wasm/pkg/openchaos_wasm'
Enter fullscreen mode Exit fullscreen mode

The meme was real. But it couldn't compile.

Community reaction:

"once this gets done, we can put this in the linux kernel"


Day 6: Hacker News

350+ points. 70+ comments. #1 on the front page.

The comments were beautiful:

  • "Twitch plays GitHub"
  • "Like Reddit but Nomic"
  • "Codified Dadaismus"
  • "It's an absurdist art software project, devoid of any consistent intent or purpose beyond the operating principles."

Someone asked what the point was.

The best reply:

"I don't think there's a point. You can always submit a point, if it gets voted you will have your point."


The First Merge

Sunday, January 12, 2026. 09:00:37 UTC.

I merged PR #6: "Calculate +1 and -1 reactions" by @yokeTH.

Final score: 903 upvotes

The first community-driven change to OpenChaos makes downvotes count.

The project that started with pure upvote democracy now has its first check on power.

The irony isn't lost on me.


Week 2 Begins

The leaderboard reset. New contenders emerged:

Rank PR What it does Net
1 #13 Rewrite in Rust +409
2 #51 Chaos each day (daily merges) +365
3 #47 IE6 mode with Comic Sans +179
4 #8 Show PR health indicators +122
5 #11 Invert dark/light mode +57

The Rust rewrite is leading Week 2. If someone fixes the build, the meme becomes reality.


What I Learned

1. People want to add structure to chaos.

The winning PR adds downvote counting. The third-place PR changes merge frequency. The community's first instinct is governance.

2. Memes become real.

"Rewrite it in Rust" is leading Week 2. It might actually happen.

3. Every system gets gamed.

Within 48 hours, people were discussing vote manipulation, last-minute bait-and-switch commits, and bot attacks. The security conversation started before the first merge.

4. Drama writes itself.

I didn't plan the political satire. I didn't script the dramatic withdrawal. The chaos created its own narrative.

5. Maintainers can't be neutral.

I tried to be hands-off. I ended up pushing infrastructure fixes and closing spam. @Kl0ven demonstrated a bug I'd missed. They weren't wrong.


What's Next

  • PR #13 could give us a Rust rewrite (if someone fixes the build)
  • PR #51 could change merges to daily
  • PR #47 could send us back to 1999

That's the point.

The rules can change the rules. The chaos is the feature.


400+ stars, a Hacker News front page, and the best GitHub drama I've ever seen.

I'll take it.


Max (@skridlevsky)

openchaos.dev


Week 1 of ∞. See you Sunday.

Top comments (0)