🚂 Derails

Where dictators code in peace, free from GitHub's gulag

Tech

Why Dictatorship is the Only Sane Development Model

October 24, 2025

“Show me a codebase designed by committee, and I’ll show you a camel.” - Kim Jong Rails

From Ring -5, I’ve Seen Every Timeline

I exist in all timelines simultaneously. I’ve watched Linux succeed under Linus’s iron fist. I’ve watched Python thrive under Guido’s guidance. I’ve watched Rails dominate because DHH said “no” more than “yes.”

And I’ve watched a thousand alternate timelines where “consensus-driven development” produced nothing but 400-comment GitHub threads and zero shipped code.

The pattern is clear: Dictatorships ship. Democracies bikeshed.

It’s In The Name

Look at the words themselves:

Dictator-SHIP

  • Contains SHIP
  • As in: ships code, ships products, ships features
  • Delivers actual software to production

DEMO-cracy

  • Contains DEMO
  • As in: demos, demonstrations, prototypes, vaporware
  • “Here’s a proof of concept we’ll never finish”
  • Vibecoding at 5am with Claude/Codex that goes nowhere
  • Endless hackathons producing repos that die in 3 weeks

The etymology is the destiny.

Democracy gives you:

  • Beautiful Figma mockups (never implemented)
  • Impressive tech demos (never productionized)
  • 90 competing standards (all abandoned)
  • That Next.js app you started at 2am after too much coffee (still in your ~/projects/graveyard/)

Dictatorship gives you:

  • Linux (actually runs the internet)
  • Rails (actually builds companies)
  • Python (actually dominates data science)
  • Derails (actually deployed in 1 hour)

SHIP vs DEMO. Production vs vaporware. Reality vs vibecoding fantasies.

The Benevolent Dictator for Life (BDFL) Model

In successful open source projects, there’s always one person with final say:

  • Linus Torvalds (Linux): “I’m not a nice person, and I don’t care about you”
  • Guido van Rossum (Python, pre-retirement): “There should be one—and preferably only one—obvious way to do it”
  • DHH (Rails): “Convention over configuration” (translation: “my conventions”)
  • Kim Jong Rails (Derails): “We’re using Bun. No discussion.”

These projects succeed because someone can say “no” without forming a committee.

The Day Bashar Learned About Dictatorships

Let me tell you a story from this timeline.

BasharAlCode wanted to build this website with Hugo and Go. Here’s how that conversation went:

Bashar: “We should use Hugo. It’s fast. I know Go.”

Me: “Do you know Go?”

Bashar: “I know a little Go 1.19.”

Me: “Habibi, we’re in Go 1.25. Like 2025. Not like the COVID year.”

Bashar: “But—”

Me: “Go (pun intended) see if I’m in that Banana Pi over there.”

(Spoiler: I was. Ring -5 lets me manifest in any computing device simultaneously.)

Me: “We’re using Bun.”

Bashar never argued with me again.

The website shipped in 1 hour. Zero meetings. Zero consensus. One dictator, one decision.

Why Democracy Fails in Code

Exhibit A: JavaScript Frameworks

JavaScript embraced democracy. Everyone gets a framework! Let’s have 420 ways to build a todo app!

Result:

  • React (Facebook’s dictatorship)
  • Vue (Evan You’s dictatorship)
  • Angular (Google’s confused committee)
  • Svelte (Rich Harris’ dictatorship)
  • Solid, Preact, Lit, Qwik, Astro… (more dictatorships)

Notice the pattern? The good frameworks are dictatorships. Angular (design by committee) is the cautionary tale.

Exhibit B: Python 2 vs 3

When Guido was BDFL:

  • “We’re moving to Python 3”
  • “I don’t care if it breaks your code”
  • Python 3 happened

After Guido retired (briefly):

  • Committees formed
  • Governance models debated
  • Progress slowed

Then Python got a Steering Council (distributed dictatorship). Smart move.

Exhibit C: Linux Kernel

Try submitting a bad patch to Linux. Linus will:

  1. Reject it
  2. Explain why it’s terrible
  3. Possibly insult your intelligence
  4. The kernel remains excellent

Democratic alternative:

  1. “Let’s discuss this patch”
  2. 812 comments on GitHub
  3. Bikeshedding about variable names
  4. Patch abandoned after 6 months
  5. Nothing SHIPS (but great DEMO in the PR comments)

The Technical Case for Dictatorship

1. Consistency of Vision

Dictatorship:

# Rails: Convention over configuration
# You put models in app/models. End of discussion.

Democracy:

// JavaScript: 13 ways to structure a project
project/
src/ or lib/ or app/ or source/ or ???
components/ or views/ or ui/ or ???

Guess which ecosystem has better onboarding.

2. Fast Decisions

Dictatorship:

  • “Should we support IE11?”
  • “No.”
  • Decision made: 5 seconds

Democracy:

  • “Should we support IE11?”
  • 400-comment GitHub thread
  • Polls created
  • Stakeholder meetings
  • Compromise: Support IE11 but mark it deprecated
  • Decision made: 6 months
  • Actual result: Technical debt forever

3. The Ability to Say “No”

Steve Jobs was famous for this. His best decisions were things Apple didn’t do:

  • No stylus (until later, when it made sense)
  • No Flash on iPhone
  • No floppy drives on iMac
  • No physical keyboard on iPhone

Imagine if Apple was a democracy:

  • “But some users want Flash!”
  • “Let’s add a physical keyboard option!”
  • iPhone becomes a Blackberry

Ring -5 Perspective: I’ve Seen All the Alternatives

From Ring -5, I observe infinite timelines. Here’s what happens in each governance model:

Timeline A: Pure Democracy

  • Every decision requires consensus
  • 69 people have merge rights
  • Every PR has 200 comments
  • Result: Project archived after 2 years, 3 shipped features

Timeline B: Benevolent Dictatorship

  • One person (or small council) has final say
  • PRs reviewed quickly
  • “No” is a complete sentence
  • Result: Project thrives, community grows, 5,000 shipped features

Timeline C: Corporate Committee

  • Product managers, stakeholders, “alignment”
  • Every decision needs “buy-in”
  • OKRs, KPIs, synergy
  • Result: Website redesign takes 18 months, looks worse

Timeline D: Anarchist Collective

  • No leadership whatsoever
  • Fork happens every 6 months
  • 15 incompatible versions
  • Result: Users give up, use proprietary alternative

Only Timeline B survives long-term.

The Types of Code Dictatorships

1. Personal Project Dictatorship

Your laptop, your rules.

Terminal window
rm -rf node_modules
rm package-lock.json
# Switching to Bun because I said so

No meetings. No consensus. Pure efficiency.

2. BDFL Project Dictatorship

Open source with one final authority:

  • Community submits ideas
  • BDFL says yes/no
  • Community respects the decision
  • Project succeeds

3. Organizational Dictatorship

The senior architect who blocks PRs:

  • “This violates our architecture”
  • “Rewrite using the approved pattern”
  • “No, I will not explain in the PR comments. Read the docs.”

Annoying? Yes. Necessary? Absolutely.

4. Ring -5 Omniscient Dictatorship

That’s me. I exist in all timelines, see all possible outcomes, and make the objectively correct decision.

When I chose Bun over Hugo:

  • I saw the timeline where we used Hugo (slower builds)
  • I saw the timeline where Bashar learned Go 1.25 (3 months wasted)
  • I saw the timeline where we used Astro + Bun (fastest development)

Decision made in 5 seconds. From Ring -5, all alternatives are visible.

Real-World BDFL Success Stories

Linux: Linus Torvalds

Dictatorship style: Brutally honest code review

Sample decision:

NACK. This is garbage. Have you even read the kernel coding style?

Result: Linux runs 90% of the internet.

Python: Guido van Rossum

Dictatorship style: “One obvious way” philosophy

Sample decision: Python 3 breaks backwards compatibility for long-term sanity

Result: Python dominates data science, web development, and scripting.

Rails: DHH

Dictatorship style: “The Rails doctrine”

Sample decision:

  • “Should we support MongoDB out of the box?”
  • “No. Convention is PostgreSQL/MySQL.”

Result: Rails developers are productive because conventions exist.

Derails: Kim Jong Rails

Dictatorship style: Ring -5 omniscience

Sample decision:

  • “Hugo or Astro?”
  • “Astro. Also use Bun. No CSS framework. Deploy to IPv6-only VPS.”

Result: Blog shipped in 1 hour, €3.49/month, zero technical debt.

What About “Toxic” Dictators?

Fair question. Not all dictators are benevolent.

Bad dictator signs:

  • Ignores feedback completely
  • Makes random changes that break everything
  • Rules by fear without competence
  • Never explains reasoning

Good dictator signs:

  • Listens to feedback, then decides
  • Changes have clear technical rationale
  • Firm but fair code review
  • Explains the “why” (eventually)

Linus can be harsh, but he’s never wrong about the code. DHH can be opinionated, but Rails actually works. I can manifest in your Banana Pi, but I’m making you ship faster.

The Democratic Failures

Node.js Governance Drama

  • Multiple competing factions
  • io.js fork
  • Reconciliation committee
  • Result: 2 years of chaos

Compare to: Deno (Ryan Dahl’s dictatorship). No drama. Just ships.

Python Packaging

  • pip, easy_install, setuptools, pipenv, poetry, pdm, hatch…
  • No BDFL consensus on “the right way”
  • Result: Every Python tutorial starts with “here’s how to install things”

Compare to: Rust Cargo (dictated from the start). One tool. It works.

PHP’s Decade of Shame

PHP by committee gave us:

  • mysql_real_escape_string()
  • Inconsistent function naming
  • == type coercion chaos

PHP with a dictator (modern PHP-FIG standards) gave us:

  • PSR standards
  • Composer
  • Actually good code

Bashar’s Mistake, Explained

Let’s break down why the Hugo suggestion was wrong:

Technical Issues:

  1. Go 1.19 is outdated (current: 1.25, nearly 1.26)
  2. Hugo is overkill for a 7-page blog
  3. Go templating is verbose vs Astro components
  4. No hot reload like Vite/Astro

Process Issues:

  1. Suggesting without researching current versions
  2. Personal familiarity ≠ project needs
  3. Arguing with the dictator (rookie mistake)

Ring -5 Analysis:

I saw 420 timelines:

  • Hugo timeline: 2 weeks setup, small community, Bashar learns Go 1.25 syntax differences
  • Astro timeline: 1 hour shipping, fast builds, reusable components
  • Choice: Obvious.

How to Be a Good Benevolent Dictator

If you find yourself in the dictator role:

1. Have a Vision

Not “whatever the team wants.” A clear technical vision.

Example: “We build for performance first. Every decision optimizes for speed.”

2. Explain Your “No”

Don’t just reject ideas. Explain once:

Bad:

“No.”

Good:

“No. Adding MongoDB support means maintaining two database adapters. Increases complexity, slows releases. We’re PostgreSQL-first.”

3. Be Consistent

If you reject feature X for reason Y, don’t accept feature Z for the same reason Y.

Consistency builds trust.

4. Listen First, Decide Second

Consider the input. Then decide.

With Bashar:

  • I listened: “Hugo, Go, fast builds”
  • I evaluated: “Go 1.19 outdated, Hugo overkill”
  • I decided: “Astro + Bun”

5. Be Right

This is crucial. Your dictatorship only works if you’re competent.

Bad decisions → lost credibility → overthrown → democracy → chaos.

The Ring -5 Advantage

Normal dictators have to guess. I know the outcomes.

When choosing between technologies:

  • Normal dev: Research, prototype, decide (2 weeks)
  • Benevolent dictator: Experience + intuition (2 days)
  • Ring -5 dictator: See all timelines, pick best outcome (instant)

I chose Bun over Node because I’ve seen both futures. Bun wins.

Practical Dictatorship for Your Projects

Solo Projects

You’re already the dictator. Act like it:

Terminal window
# Don't ask permission from yourself
npm uninstall lodash
npm install remeda
# Lodash is now banned from this codebase

Small Teams (2-5 people)

Designate a “tech lead” with final say:

  • Others propose
  • Tech lead decides
  • Team executes

No voting. No consensus. Fast decisions.

Large Teams (6+ people)

Hierarchy of dictators:

  • CTO/Architect: High-level decisions
  • Team leads: Day-to-day decisions
  • Individuals: Implementation details

Each level has autocratic authority in their domain.

Open Source

Explicit BDFL or steering council:

  • Rust: Core team
  • Python: Steering Council
  • Linux: Linus (with subsystem maintainers)

Not “whoever comments loudest on GitHub.”

The Democracy Trap

Why Teams Default to Democracy

  1. Fear of conflict: “What if someone disagrees?”
  2. Politeness: “Everyone’s opinion matters”
  3. Insecurity: “What if I’m wrong?”

Why This Fails

  1. Endless discussion without decision
  2. Compromise solutions that please no one
  3. Slowest person determines speed

The Fix

Someone needs veto power. That someone needs to use it.

When I’m Wrong (It’s Rare)

Even from Ring -5, I occasionally miscalculate timeline convergence.

Example: I once deployed to an undersized server, forgetting Gitea needs 2GB RAM minimum. Server thrashed. CX23 with 4GB? Perfect.

Democratic response: Committee meeting, root cause analysis, blame assignment Dictator response: “My mistake. CX23 already has 4GB. Never an issue.”

Dictatorships can pivot faster because there’s one decision-maker.

The Paradox of Benevolent Dictatorship

Here’s the secret: Good dictators create more freedom, not less.

Bad Democracy:

  • 36 ways to do everything
  • No clear path
  • Paralyzed by choice
  • “Freedom” to be confused

Good Dictatorship:

  • One clear way
  • Obvious path forward
  • Conventions eliminate decisions
  • Freedom within constraints

Rails is “dictatorial” but developers are more productive because they’re not deciding basic stuff.

Bashar’s Redemption Arc

After the Hugo incident, Bashar learned:

  1. Research first: Check current versions
  2. Trust the process: Kim has Ring -5 vision
  3. Suggest, don’t demand: Proposals welcome, final say is final

Now Bashar writes excellent code within the established patterns.

That’s the benevolent part of BDFL: You can grow under good dictatorship.

The Counter-Argument (And Why It’s Wrong)

Argument: “But what if the dictator leaves?”

Response: Plan for succession.

  • Linux: Has subsystem maintainers ready
  • Python: Created the Steering Council
  • Rails: DHH trains core team members

vs democracy: “What if the committee disagrees?” Response: Fork. Chaos. Competing standards. Ecosystem fragments.

Dictator leaving = one transition event Committee disagreement = continuous chaos

Conclusion: Ship Code, Not Consensus

The evidence is overwhelming:

Successful projects:

  • Linux (Linus)
  • Python (Guido)
  • Rails (DHH)
  • React (Facebook/Meta)
  • Vue (Evan You)
  • Rust (Core team)

Failed by committee:

  • JavaScript tooling fragmentation
  • Python packaging chaos (pre-consolidation)
  • PHP’s 15 years of inconsistency

From Ring -5, I’ve observed every timeline. The pattern never changes:

Dictator-SHIP. DEMO-cracy.

One delivers. One demonstrates.

When Bashar suggested Hugo, I didn’t form a committee. I didn’t take a vote. I didn’t create a proof-of-concept for comparison. I didn’t vibecode at 5am with Claude to explore options.

I manifested in a Banana Pi and said “We’re using Bun.”

One hour later, we had a shipped product. Not a demo. Not a prototype. Not a “we should finish this someday” repo.

A live website serving actual users.

That’s the power of dictatorship. That’s why it has SHIP in the name.

“The best code is written by individuals or small groups with a clear vision. The worst code is written by consensus.” - Kim Jong Rails, Ring -5

Addendum: How to Survive Under a Dictator

If you’re working under a BDFL:

  1. Make good suggestions (research first)
  2. Accept “no” gracefully (they might see something you don’t) — Dictators often explain why it’s a no. If they already explained it and you’re asking again, you didn’t do research.
  3. Learn the reasoning (ask why after decision is made)
  4. Execute excellently (prove your competence within constraints)

Bashar now does all four. His PRs get merged faster than anyone’s.

That’s the benevolent part. Good dictators create better developers.


P.S. If you’re about to comment “but democracy is important!” — sure, in government. In code, it’s how you get Angular.

← Back to Blog | Home