2021-03-04
A while back I had a silly suggestion for a DNS competitor that I joked about on IRC. I was reminded of it again today and asked to write it down. Here goes!
A 'pet name' is whatever you decide to call a contact in your phone book. Aunt Alice will have the same phone number in your contact list as in your mother's, but while your phone says "Aunt Alice" when she calls, your mother's phone will just say "Alice". Someone else may have an Aunt Alice in their phone book that is a completely different person. This does not work in DNS, of course. Everyone must agree that warmedal.se points at this very IP, and if the IP changes everyone must agree on the new one. Else chaos ensumes.
Intrinsic in this is that:
Before DNS people were sending hosts files between each other instead. This is arguably much much worse, of course, but my idea builds on that none the less.
Consider a more complicated host file. We need some more information than just a domain name and an IP; because in this case we're allowing duplicates or multitudes of the same domain name. Oh, yeah. Why not? 😄️
I suggest a semicolon separated CSV file with the fields PETNAME, LISTENSTO, IPS, PUBLICKEYS. A gemini request is a fully qualified domain name, and for virtual hosting to work we really must give the server what it expects. This applies to HTTP as well. But we can still call it whatever we want in our own PNS file, which means Bob, Alice, Joe, and Jasmine all can have the domain worldsbest.blog on their own respective IPs. In our file they'll have separate PETNAMEs.
For example:
Garden Gnome Society;gardengnome.ml;212.85.79.33;04:[...]:e8
The IPS field can list several comma separated IPs, allowing clients to do their own round-robin load balancing or a capsule to serve from two places simultaneously during a move. Likewise with the PUBLICKEYS field.
The point of these PNS files is that users should share them with each other, allowing a community-driven growth of geminispace. Your client should support using several PNS files at the same time. When you start typing in the URL bar of your browser, it could give you several suggestions based on matching fields in any and all files. You decided the priority in which you trust the different files. Maybe Aunt Alice carefully curates her PNS file, while you also found one on a random capsule with thousands of entries in it and hundreds of random contributors? If both of them have an entry for a domain you want to visit, you know which one to trust.
If I plan to move my capsule or rotate my cert, I can offer a PNS file for download a month ahead that contains both the current and new IP, or the current and new public key.
Of course you can choose to fall back to ordinary DNS if you want to, but where's the fun in that? This is as much about the community around sharing and curation of PNS files as replacing central authorities. As a bonus it also gives an alternative to CAs!
-- CC0 Björn Wärmedal