Replying to Avatar fiatjaf

this is what happens in the future if the "outbox-is-broken-let's-use-smart-proxy-relays" people win:

- people start relying on "caching services" to fetch their notes. now every client must run their own caching service to remain competitive.

- as the network grows, syncing from all relays becomes more and more prohibitively and databases grow to the infinite.

- less and less caching services exist, but a "local best scenario" would be if we had like 4 different clients/caching-services to read from, but then if one of them banned alex jones that would mean 25% of users lose access to alex jones. there is nothing alex jones can do to change that.

- users could switch from app A to app B that hasn't banned alex jones, but app B had already banned donald trump, so that move is questionable and uncertain. anyway, it's too much friction for a user who doesn't know how to find this caching-service setting buried deep in their settings (because UX specialists said that's the best place to put it).

- eventually it makes no sense to switch anymore and as one of the caching services gains more market share they merge with the others, saving costs and regulatory burden (these caching servers are so big they need to do spam moderation, find and delete pornography and scam bots, comply with government takedowns, defend themselves against lawsuits, it's a huge cost), so it's much better to just have a single caching-service.

- everybody still publishes to their own relay, so nostr becomes exactly like bluesky and the central service can censor anyone. eventually people give up the stupidity of using intermediary relays and just publish directly to that central service.

- that central service now can serve you ads and blue checks, shadowban everybody who doesn't pay, modify your feed with amazing AI techniques to keep you engaged and prevent you from seeing anything they don't want you to see but keep you nourished with memes.

> as the network grows, syncing from all relays becomes more and more prohibitively and databases grow to the infinite.

I think the main flaw in the reasoning here is that caching services don't have to cover the entire network. A caching service that only serves a few users can stay very small. The caching service selection might be buried in settings as you say, or it might run within the client (which is compatible with outbox model purism — what is a client but a local cache?)

In any case you have to trust your service provider, whether they're a FOSS client you run on your device, or an opaque web service sitting out in the ether. The key is redundancy. We have this on the relay level, but we would need it on the indexer level, the caching level, and the client level. This can be done to some extent by asking users to use multiple services, but that's pretty unrealistic from a UX perspective. Other mechanisms could exist for reporting on clients/services, like lightning watch towers, Wallet Scrutiny, or client-side stats which can infer censorship scores for different external services.

Reply to this note

Please Login to reply.

Discussion

What do people generally mean by "caching service" or "global state"? In my understanding they are meaning strictly a server that has _all_ the data in the network.

That's definitely what the only existing caching server does. But I think you can have a meaningful cache that covers only part of the network, depending on the users it serves.

Are you referring to Primal? And if so, does it/can it cover the whole network? Can't someone have their own private relay or npub that only they can see?

Yeah, of course, but they at least attempt to get full coverage. You make a good point, private indexing/search is useful and can't be accomplished by big providers