On July 20, @swamp/container-image merged into the official swamp extensions repository. @webframp/container-image, my extension covering the same domain, had been on the registry for 38 days already. Both handle OCI image builds, pipe passwords via stdin, branch on container runtime, and store digest and timing metadata.

My first reaction was territorial. Someone rebuilt what I built, in the privileged namespace, without referencing the prior work. But the impulse to prevent overlap or require acknowledgment both lead to the same place: an ecosystem that discourages people from building things. That is worse than any amount of duplication.

What overlap tells you

When two people independently build extensions for the same system, the domain is validated. One container-image extension is a personal project, but two confirms the community needs it modeled. My extension supports buildah and nerdctl. The official one has input injection guards and a pre-flight validation method. Those different choices would not exist if only one author worked in the space, and users benefit from having both available.

A registry where publishing costs a manifest, a TypeScript file, and swamp extension push will produce duplicate coverage in popular domains the same way npm produced got, axios, node-fetch, undici, and the built-in fetch. The only way to prevent overlap is to gatekeep publication or discourage independent authorship, and the swamp ecosystem benefits from neither.

The trust hierarchy

The registry auto-resolves @swamp/* extensions. Community collectives require swamp extension trust add. This creates a discoverability advantage for official extensions, and that’s intentional as a security boundary. New users get safe defaults without evaluating every publisher.

The trust model verifies publishers, not fitness for purpose. An extension that supports four container runtimes serves a different audience than one focused on safety hardening for two, and which collective published it tells you nothing about which one matches your stack.

What coexistence looks like

Capability@webframp@swamp
Inspect
Run
Validate (pre-flight)
Buildah / nerdctl
Apple Containers
Input injection guards

Neither is a superset. A team running podman and buildah on Linux wants mine, a team on macOS using Apple Containers wants theirs, and a team that needs both inspect and run has a reason to pull both or contribute the missing method upstream to whichever one they prefer.

What the ecosystem needs to communicate

I talked to Paul Stack about this. We agree: overlap is a positive signal for community adoption. More people building means the authoring experience is good enough that independent solutions emerge without coordination.

A community extension author who publishes in June and discovers an official extension in the same domain in July needs to have known that was possible before it happened.

Community authors should understand that their work has value independent of what the official collective publishes, and that @swamp/foo appearing on the registry does not deprecate @community/foo. The official collective benefits from searching the registry before publishing because knowing what exists helps write better documentation and surface alternatives. And swamp extension search should return all collectives with enough metadata to compare on capability rather than namespace.

The registry could surface overlap at publish time by noting when an extension’s labels match existing extensions in other collectives, helping authors discover each other rather than compete in the dark.

Where this goes

A registry with zero overlap has one author, and a registry where overlap causes acrimony has unclear expectations. The swamp extension ecosystem crossed a threshold where multiple people want to model the same domains, and the work now is making sure everyone involved understands that this is what community growth looks like.