- First-time contributors bounce off docker-compose setups; maintainers never see it happen
- PGlite (WASM Postgres) makes dev setup three commands: clone, install, run
- For shared local staging or CI, single-binary Postgres runtimes are the middle path
- If clone-to-running takes more than 15 minutes, your project has a cliff
I watched a first-time open-source contributor try to run a Supabase-based project locally last week. They wanted to fix a small typo in the auth UI. Simple issue. Two-line PR.
Here's what actually happened:
- Clone repo. Run docker-compose up.
- Port 5432 in use (their local Postgres). Change to 5433.
- Port 3000 in use (their Grafana). Change to 3001.
- Docker Desktop asks to update. Update.
- Studio container fails: outdated image. Pull.
- kong container OOM-kills. Bump memory.
- Auth container can't reach db. Wait for readiness probe.
- Realtime container just... never starts.
45 minutes in, they closed the tab and worked on a different project.
This is not a hypothetical. It's the modal experience of a first-time contributor to any Supabase-based (or generally, any docker-compose-heavy) project in 2026.
The contributor cliff
For maintainers, the cost of this is invisible. You already have the containers cached, the ports settled, the memory bumped. docker-compose up takes 30 seconds on your machine. You never see the contributor who bounces because their laptop is 8 GB and Docker Desktop already eats 4 of them.
But the contributor cliff is real, and it's the single biggest factor in how fast a project's contributor base grows.
PGlite changes the first-commit experience
PGlite is Postgres compiled to WebAssembly. Full Postgres semantics (types, constraints, transactions, RLS, a supported extension set) running in the browser or in Node with no server to spin up. It boots in milliseconds.
For OSS projects that need Postgres in dev, PGlite is a legitimate onboarding fix. Instead of a 45-minute docker-compose adventure, the contributor experience becomes:
git clone repo
npm install
npm run dev
That's the whole thing. The dev server boots PGlite in-process, runs migrations, seeds fixtures, and the app is running against real Postgres.
Case study: a real migration
A project I contributed to recently made this shift. The prod stack is Supabase Cloud. The dev stack used to be docker-compose Supabase. Now the dev stack is PGlite for the DB + a lightweight mock for auth.
Observable results after two months:
- First-time contributor merge rate: 12% → 34%
- Median time-to-first-PR after clone: 4 hours → 45 minutes
- Contributor questions in Discord about setup: dropped ~80%
The auth mock is the honest trade-off. It doesn't perfectly mirror Supabase's session model, so some auth-specific PRs still need the full stack. But for the 80% of PRs that touch UI, DB schemas, or business logic, the local dev experience is transformed.
When PGlite isn't enough: single-binary Postgres
PGlite is per-client. It can't back a multi-user local staging environment, and long-lived browser persistence has practical limits.
For projects that need a shared local backend (a designer and an engineer both hitting the same DB, or CI running e2e tests against persistent state), the emerging middle path is single-binary Postgres runtimes. Tinbase is one: real Postgres plus auth, realtime, and edge functions in a single executable (~58 MB, ~100 MB RAM), booting in a couple of seconds, no Docker.
The shape of the local stack becomes:
- PGlite → embedded in the dev server for the fastest first-commit path
- Tinbase (or similar) → for shared local staging, CI, or when features need auth/realtime that PGlite doesn't provide
- Hosted Postgres → for prod
Same SQL, same wire, same auth semantics across all three tiers.
What OSS maintainers should do this quarter
- Instrument your contributor drop-off. How long between clone and first successful npm run dev? If it's more than 15 minutes, you have a cliff.
- Consider PGlite for dev. Even if prod is hosted Postgres, dev doesn't need to be Docker.
- Document the local-dev path in the README as three commands, not thirty. If it can't be three commands, fix the tooling until it can.
The contributor experience is the product for OSS. PGlite, and the single-binary Postgres wave following it, is one of the biggest DX unlocks in years for anyone building on Postgres. Quietly, it might be the biggest OSS-growth lever of 2026.
Maintainers: how long does your project take from clone to running? Time it honestly and drop the number in the comments. Curious where the cliff actually sits across projects.
Top comments (0)