There is no way for an instance like lemmy.ml to know about all lemmy servers, because there’s no central server keeping track.
– https://lemmy.ml/comment/447791
I was reading the above comment and it made me think about the relays and how they could help lemmy/kbin/other Group
software. Relays were a solution the microblogging sector of the fediverse used to jumpstart instances, which would have an empty federated feed making it difficult for local users to find new users to follow.
The way I envision it working would be a community relay would be an AP server with a Service
or Application
type Actor
. This actor could receive a copy of a community’s Create
message and could then Announce
that community to its followers. Lemmy/kbin instances could follow relays to be alerted of new remote communities and notify the relay about their own new communities.
In this way, users/instances could learn about new communities across the fediverse in a participatory way without relying on a central authority.
Personally I like this and it fits with distributed networking.
Basic graph theory, when a service is discovered you can ask it who it knows about, then propagate through the graph. Do a breadth-first search discovery, for each new instance you hit it once, learn about new servers, and continue through those instances, marking each one as read as you go.
End up knowing that you hit everyone because you traversed the graph and minimal network traffic because it’s only one call per instance