I just wrote a blog post about what happens when you make URLs immutable: mapping from a hash to a NixOS configuration of that hash. Turns out “nice” deployments (fast, zero-downtime, atomic) become much easier, without the complexity of something like Kubernetes. Blog post here, feedback appreciated!
That’s really cool!
I was having similar crazy thoughts:
If file paths are pointers, so are urls.
Why not push nix to start taming them!
PATH variable = dns suffix list (avoid)
file path = dns A record
inode number = ip address
symlink = dns CNAME record
signature = cert/pub key
centralized version of zooko triangle:
(half-baked thoughts, please be lenient)
- human friendly name (dns records)
friendly name CNAME record to hash of service A record - centralized number (ip addresses)
with ipv6, there should be enough bits to truncate hash of service to an iid…
(got to be aware of birthday problem though…) - secure identifier (public keys)
still have to trust public keys, but signature games ease the burden.
I can’t wait to read about how persistence gets handled!
This discussion went even further at least as early as 2021: Announcing Nomia, a general resource manager inspired by Nix
To summarise: What if any operating system resource was immutably addressable?
I very much subscribe to this view, and would go even further: What if any computation state was immutably addressable?
Racket – one of the most alive and relevant Lisps – pretty much goes in this direction with its first-class treatment of continuations.