If this protocol were designed so that all posts propagated to all clients via all relays, we're basically saying that each relay needs to hold the entire global social network. That's impossible- we'll end up with 3 heavily centralized corporations.
Discussion
Users will be connected together through common relays - interest based, location based, etc. If 2 users aren't interconnected at 1 point, then they won't see each other, and that's OK.
That makes sense. You have to wrap your head around the concept which is way different from what people are used to.
I've been working on how to describe this to normies. Best I've got so far is relays=subreddits. You can subscribe to as many relays as you want, and you'll see just that content in your feed, like reddit. Your can see what relays your friends subscribe to, just like reddit.
that is a good description
In effect each relay is acting like a "sub-network" of users that see each others notes. There is no concept of a large "everyone sees everything" on Nostr.
so how do I make sure I’m using relays that the people I want to follow are also on?
good question. right now most clients have default sets of relays so if you use a particular client you can be somewhat certain you will see their user base notes...else connect to most active relays I guess.
Astral.ninja shows you the relays a user is subscribed to, as well as which relays have seen a particular post in your feed.
that is a nice feature in astral.ninja so if you follow a user and want to ensure you can send and receive messages with them then add the relays under Relays tab from their profile page on astral. nice!
Wouldn't that in effect cause almost everyone to subscribe to almost all relays?
I mean, right now you and I only have 1 relay in common (nostr-pub.semisol.dev). We're talking just fine. I don't know you so won't go subscribe to all your relays. But for my BFF, I would!
yes..that is making sense now....subreddits example is a good way to grasp the concept
I am sure there is some downside of adding all relays...that will be like subscribing to all subreddits...yeah you will get all messages on Reddit but is that what you want? to use #[1] explainer
Exactly, people don't want a "global feed" of every post from every user in the whole world in chronological order. They want a curated feed of things that interest them, their family, & their friends. As the # of relays grow, you'll see greater differentiation between them.
Interestingly, "following" a user is not enough in the Nostr world. You have to also "follow" their relays to be able to exchange Notes. If you follow someone and don't have common relays then it is not sufficient 🤯
there’s got to be a user friendly way to do both at once. Not doing this astral.ninja shit
Yeah....the client can suggest or add a common relay if you Follow someone but that means the client is driving what relays you add....versus the user is driving in control. tricky.
How would you have found that user, if not connected to one of their relays?
Side question: I currently don't know how to resolve an event not found issue, where someone links to something where I don't know where it came from.
You can lookup a user by PK and follow. You will not see their Notes if you are not on same relay...as I understand.
"global" feed...the term global is misleading...it is all notes from relays that you have added....it is not "all" in Nostr world....so the global is limited to "local of all relays you are subscribed"...🤔
From a client's perspective, it is a global feed of all events that the client has access to. Nostr isn't a world either, it's just a protocol. You'll see multiple "worlds" emerge on top of the nostr protocol.
right. but when you see term "global" - it is not "all"...it is all in your "subreddits" you are subscribed to the relays. becoming clearer to me now. thanks
🙏
one more question - where are the notes/messages stored as in history? relays? or clients? So when you logout and login again, the history is downloaded to the client. Where is it stored and if relays - then how is data bloat managed.
oh this is a good question!
I think it might be up to the relay to archive, wonder if Damus relay archives all
#[6] ?!
nostr relay is a bucket of messages. A nostr relay just stores messages/events. Nostr is not a network where relays send all events to eachother, they only store what is given to them directly. So relays hold that message I think.
But if they never archive even what they feed to clients, popular relays will still get bloated on disk space
{"pubkey":"b2d670de53b27691c0c3400225b65c35a26d06093bcc41f48ffc71e0907f9d4a","content":"Oh shit, I was at a family dinner and came back to a full disk on the relay vm. Taking the relay down to move it to a much more powerful VM both in terms of storage and CPU\/RAM. Expected downtime: ~1h","id":"371459add1b2f6972020a5e0cd3df6a0a27f48e8edbcfec0591b886aece034d3","created_at":1671659037,"sig":"822b9452557a66da1fb1a7204c299b01413b221bf9eb0475155a4044c67bf55135cfbe823cab591c2ddf4ce94799d185af88c796f4e9cdc9674355fc59537655","kind":1,"tags":[["client","astral"]]}
For what I know, relays do NOT listen to each other. They are separate and you need to be connected to a relay where the author of events is also connected.