← Back to context

Comment by athrowaway3z

4 days ago

I think you're both missing the forest for the trees. P2P connectivity is about as solved as it will get, and the last % will stay unsolved.

The final goal for decentralization is something like: no central party should become the irreplaceable master over data, community, feeds, moderation, UI and identity.

We already know the minimum pieces needed to avoid that kind of centralization: hashed, linked, signed records(/packets), so their validity and causal order don't depend on whatever connection carried them or whatever physical server received them.

Once we have that, apps 'transcend' the connection layer, and the parties that control identity, community, feeds, moderation, etc become signing keys that can operate from anywhere.

The real problem for a decentralized internet, or "local-first apps", is that writing applications at this layer, or writing the library that lets you write them, is hard and nobody has solved it.

IIRC Iroh tried this early on, then pivoted to the p2p socket library it is today.

I'm not sure where the Delft stack sits with its ambitions atm.

You're describing atproto. They solved all the problems and it's not hard to build on top of it. Maybe even easier than a traditional centralized app because your server is just a view over the network so don't need to worry about consistency or durability.

There is one last centralized part they built to avoid using a blockchain, the PLC system, but it's designed to be tamper proof and easy to replace with a new server. The only thing a malicious operator can do is censorship in the p2p sense (ignoring a user's actions) but that would break trust and make the community migrate to a new provider.

  • Not atproto specifically. I’m describing primitives that exist in Git, Bitcoin, and plenty of other systems.

    What I’m getting at is that we haven’t nailed the right abstraction. A "sockets" or "HTTP/HTML" moment that collapses the design space, to such an extent we've collectively forgotten there were more complicated alternatives they replaced.

    These links are 2 examples of the problem: https://atproto.com/guides/understanding-atproto and https://atproto.com/articles/atproto-for-distsys-engineers.

    Somebody spend a lot of time and effort to make this as simple as possible. This is the best & simplest version of it.

    Yet its not simple enough. Repositories, event logs, view servers, DID, ...Lexicon RPC (XRPC)? What’s the minimal version of this that still works? Not an SDK hiding the concepts; fewer concepts.

    It’s hard to explain what I want precisely because I don’t think that abstraction exists yet. Maybe atproto gets us closer, but the on-ramp feels like endless links to sub-concepts. The average developer's eyes glaze over.