In some protocols, user discovery is pull based: their user discovery UX flows make external requests that we can hook into.
web: when you browse someone's web site for the first time, you resolve their domain's DNS and make an HTTP request to their homepage.
fediverse: when you enter an @-@ address into a fediverse server's search, it does a WebFinger query, then loads the AP actor id that the WebFinger response points to.
However, other protocols are push based, ie their user discovery UX flows are entirely internal, so we have no way to inject new users bridged from other protocols on the fly:
ATProto: user search in clients is served by the AppView via XRPCs like app.bsky.actor.searchActors[Typeahead], which is limited to the AppView's own internal index of users it's already seen and stored.
Nostr: user search in clients is served by queries to relay(s), which similarly serve only their internal Nostr event stores.
So, how do we surface bridged users into ATProto or Nostr user search?
I see just two options so far:
Crawl and propagate all known users from other protocols into ATProto AppViews and Nostr relays, proactively. This is obviously unlikely. First, it's difficult at best to enumerate all known fediverse accounts or IndieWeb sites. Second, and just as importantly, it would violate existing fediverse norms and culture.
Add a simple Bridgy Fed UI to "trigger" bridging a specific account. This could be a text box where you enter a fediverse address or IndieWeb site. Bridgy Fed would then fetch its metadata and propagate it into ATProto and Nostr.
In some protocols, user discovery is pull based: their user discovery UX flows make external requests that we can hook into.
However, other protocols are push based, ie their user discovery UX flows are entirely internal, so we have no way to inject new users bridged from other protocols on the fly:
app.bsky.actor.searchActors[Typeahead]
, which is limited to the AppView's own internal index of users it's already seen and stored.So, how do we surface bridged users into ATProto or Nostr user search?
I see just two options so far: