Great post. Just my two sats:
> They are simultaneously an implementation detail that users don't understand and don't want to deal with, and the very soul of Nostr.
I think this is one of the biggest issues with differentiating relays. I think a lot of people who use Nostr still can't quite grasp how relays work and they're still approach it in a "single master" model.
It would probably help if: (1) relays become a little more trivial to run and (2) introduce relays as distinct content hubs rather than some vague "server that sends messages."
But yeah, I agree. It's a hard problem to solve.