Replying to Avatar phil

I created a quick diagram to illustrate the Primal cache issue in a simplified way that may help some people understand what is going on and help with choices about which client to use. There are many ways to build clients and there are advantages and disadvantages of each.

In Primal’s case, notes are served from Primal’s cache server which gets notes from the relays rather than the client getting them directly from the relays. The advantage to this is that much of the processing can be done on the server side resulting in a very smooth and consistent experience for users.

The down side to this is that it becomes centralised as, without the server infrastructure operated by Primal themselves, the client completely stops working (the cache is open source but I’m not aware of any other instances of the Primal cache being run and most users wouldn’t use a different one anyway). The issues with this centralisation are that it make Primal much more prone to outages and it would be very easy for ISPs to block Primal just by DNS blocking of the Primal cache server or blocking the associated IPs. Primal could also potentially filter or censor the feed from their cache although I’m not aware of whether they actually do this currently.

For me personally, I want a client that talks directly to the relays and does the processing locally but others may be comfortable with the limitations and loss of decentralisation and find that Primal provides a good experience.

One of the best things about Nostr is that you can take your key and move to a different client. It is worthwhile experimenting with different clients to find the experience that best suits you. 💜🫂

Is there a way for #primal to make the caching server opt-in, or possibly a premium feature? Or does that completely break their app?

Reply to this note

Please Login to reply.

Discussion

Anything is possible but I suspect the Primal team made the design decision to use a cache for their app so probably won’t change it.

I think it could make sense to implement a fail back to local processing of notes directly from the relays in the case that the cache is unreadable. At least that way the app would keep functioning if there was a cache outage, although that would likely be with a more limited set of features than with the cache.

I could see it being a design decision since that probably simplifies a lot of client code and they're building several clients.

But given that they're trying to make a profit somehow that seems like exactly the kind of thing you'd try to charge for.

Primal is optimizing for new users so that they have to configure as little as possible for the app to just work. The caching relay set as the ONLY relay the client is reading from fits right into this objective. Users don't have to wonder why they don't see notes on Primal that are visible elsewhere, because chances are the caching relay has pulled them in from other relays. Users don't have to go and make sure they are reading from the relays that their friend who told them about Nostr is writing to for the same reason.

That being the case, I don't think they would ever make the caching relay an optional service that is only available to premium subscribers. It is too fundamental to their user-friendly UX.

Yes nostr:npub16c0nh3dnadzqpm76uctf5hqhe2lny344zsmpm6feee9p5rdxaa9q586nvr confirmed they intend on adding a fallback

note1kdqwf24qu3cur6gsmynmqy2tzu9z4mnl8ymnwgrrgequssurl85sj9y498

Thanks, I missed seeing that comment but good to know!

Yeah I got the idea from ChatGPT so I figured I would just ask him.

I’d like to see Primal reading directly from a relay if the relay isn’t cached by the caching service