nostr:nevent1qqsqqq90yfee6l3ahjz8ffglf22ga44r2sjk63gvhcu6264wr7wmr8cpypmhxue69uhkx6r0wf6hxtndd94k2erfd3nk2u3wvdhk6w35xs6z7qg4waehxw309an8yetwwvh82arcduhx7mn99uqsuamnwvaz7tmwdaejumr0dshspc9z9u

The "outbox model" is kind of a misnomer actually, it can't be "implemented", it is just an idea.

The idea is: you have to organize your client in a way that it learns using all the information available where each pubkey is publishing their stuff to, then connect to those relays to fetch their stuff. That's it, the rest is your imagination.

The common tools that can be used for this are:

- kind:10002 relay lists

- relay hints in "p" tags

- relay hints in other tags

- relay hints in nprofile, nevent codes

- relays listed on nip05 /.well-known/nostr.json

- history of successes and failures when fetching events for a specific pubkey in a specific relay

I tried to convey the idea here: https://how-nostr-works.pages.dev/#/outbox (notice the table with a dynamic ranking of relays for a specific pubkey on the right). This is just an example of one possible implementation. It follows roughly what is implemented on https://pkg.go.dev/github.com/nbd-wtf/go-nostr/sdk/hints and is heavily inspired by some past version of https://github.com/mikedilger/gossip.

Reply to this note

Please Login to reply.

Discussion

nostr:npub10000000thpep7auj058803nqtymqlf3rw87lzhe6mkfeywnpxg5sjw7nql hopefully this helps, but I agree this must be described in a better way, as a guide or tutorial. Perhaps after I finish my kind:1 client I'll do it.

Good idea, had a similar thought.

It'll also be a lot more simple when NIP-65 relay meta lists are standard for all follows. A lot of what Gossip has had to do won't be necessary then.

I also think some peer-to-peer (or rather relay-to-relay) networking will go a long way towards improving implementations. If more relays sync the profiles and relay lists for their wider network, the availability of these records will be far more accessible and efficient. Implementing this in a way that has a configured list of "discovery relays" is centralizing. Being able to ask anyone of known npubs/profiles listed relays, so long as they were in close proximity (based on a social graph) could be very useful and decentralizing.

Advocating for use of nprofile instead of just npub I think is also important.

What is going on why is this note purple and black I'm scared

We can provide many of those tools in Aedile. That's the goal.

Yeah, put this all in the SDK, so that it's plug-n-play for client devs.

"...it learns using..."

Define learn plz.

It may be useful to have a comprehensive site or in-client feedback on how well various clients and profiles support this approach? Might help move progress forward.

It would be good indeed, one could start by reading the code and asking the developers questions about how it works, then testing edge cases on each client.

I would have preferred that it was called "nostr", but I am happy with "outbox" for now.

mike dilger likes a horrible programming language, his opinion is duly weighed

That's the goal, I think. 🤘