An alternative to URLs
Why treat the string you typed as the thing itself? Pretty URLs stay for people — systems need another way to find, cite, and depend on a resource.
Why would anyone need an alternative to URLs?
Because the web taught a bad habit: treat the human-readable path as the thing itself. Rename the path, and every project that baked the string becomes a broken promise. Pretty URLs are fine for people. They are a poor sole address for systems.
If you already feel that ache, start with Broken links after a URL rename (and the demo). This essay is the diagnosis: what went wrong, and what to stack instead. Full diagrams and the treatment ladder live in the docs: An alternative to URLs.
Two naming problems, not one solution
Named Data Networking (NDN) and similar information-centric designs attack location: fetch by name without depending on a host IP.
Dr. Lan Wang’s Networking Research Lab at the University of Memphis is one known node in that NSF-shaped research community.
NDN routers care whether an Interest can be satisfied from a nearby cache.
They do not rewrite your Markdown when /docs/v1 becomes /docs/v2.
Those are different names.
Application reverse-dependency tracking attacks semantic life cycle: when a symbol, path, or doc label changes, who breaks?
Kythe/Sourcegraph graphs, OpenRewrite recipes, Unison’s content-addressed definitions, and a humble producer-owned CONSUMERS.md all live here.
Architecturally orthogonal. Complementary in UX: both serve “I should not have to care where it lives or what we currently call it,” if we stack them instead of collapsing them.
The stack
- Content-addressed identity (CAS) — bind to
hash(bytes)(or a graph node id). Moves and renames with identical content do not break fetch: . - Mutable human pointer — a stable semantic name resolves to the current hash when content updates. Without this, CAS freezes you on because .
- Reverse consumer graph — producers list who still holds the pretty names (
CONSUMERS.md). Agents search those trees instead of guessing. - Absorb layer — redirects, Antora aliases, “cool URIs don’t change.” Required on today’s IP web.
Unison shows the destination for code identity. connectome-fs aims at the filesystem and association plane underneath many languages and non-code artifacts — path as projection, graph as truth.
Near-term practice
Until CAS is ordinary:
- Prefer aliases over renames for anything public.
- Put reverse deps on the producer.
- Record coupling type (package vs URL vs Antora vs secret name).
- Teach tools and agents: read the list, search those trees, open PRs.
- Leave redirects forever.
Pretty URLs stay. They just stop being the only address.