logoalt Hacker News

__MatrixMan__today at 6:56 AM0 repliesview on HN

Well, at the base layer I think we need a CRDT of some kind. For my prototype I'm using a GSet of tuples, union for merge.

Overtop that, an API which ensures that applications conform to the CALM theorem. This is a major restriction, but it buys us a lot. CALM violations are nucleation sites for enshittification. They're the points where platform owners exert their influence.

Going without them means going without DNS, for instance, because which bits which name resolves to is the kind of coordination problem that, in our previous attempts, we allowed centralized control to solve for us. And centralized control means presenting a target to corrupting forces.

So I figure we go content addressed. And we gossip tuples of hashes around which we will use to decide which content is which, which is trustworthy, which is malicious, etc. We'll get these from humans that we've met in real life, shook hands with, etc.

We won't have to use a globally unique human friendly name to communicate about content because we won't be blindly trusting content on the basis of it having come from a server with a trustworthy name in the first place. Instead, the act of sharing will be part of the protocol: an attestation about a hash. Instead of "go to Netflix and search for foo" we'll say "here, I've recommended a movie to you" and then you can find it under the list of movies I've recommended to you. It'll have a name for humans, but its the hash that the protocol will operate on.

The lack of a need for a name resolver means we can be partition tolerant. Apps will get smaller if they're just on a LAN with two peers and no internet, but they won't break.

We can gossip this peer to peer over Bluetooth or WiFi, or we can treat Twitter or whatever as our transport protocol: just a dumb wire full of ads nobody sees.

It might never support video calls, because you're gossiping messages opportunistically and there are no service providers involved: nobody to demand that their hardware stays online and conforms to some SLA.

Latency to the other side of the planet might measure in weeks, might require the right person who happens to be taking the right flight to have gossipped the right tuple.

But these are constraints I can live with. Mostly I want to know about local goings on anyway. If it takes my peers a few days to get distant news to me, so be it.