Decentralized relay functionality?

I thought about the existing relay functionality and a proposal from Fla I saw some days ago: User:Flaburgan/Follow other pods tags - diaspora* project wiki

I like the relay thingy, but I don’t really like how it searches the list of servers it will serve:

Where the relay gets the active pods list doesn’t matter, there are several possibilities already, including http://the-federation.info, https://diasp.net/active and http://podupti.me. A relay should be flexible in falling back to other lists when needed.

I guess this can be done better. My proposed change would rely on the already existing .well-known/x-social-relay.

I guess that every Diaspora compatible system will have some table with the servers it know. So this list could be queried for .well-known/x-social-relay on a regular base. (Once a day or once a week)

Then - during the delivery of the public posts - the servers could be delivered as well that had subscribed to the specific tags (or all content).

There are currently less than 700 potential receivers out there (Diaspora, Friendica, Hubzilla, Red), so this shouldn’t add significant load, even if all servers subscribed to a specific tag. For the receivers there shouldn’t be any load issues at all. Serving the .well-known/x-social-relay shouldn’t be any problem even for small servers.

This all could be done without changing anything on the protocols.

But there is one more thing. For new (or small) servers there could be the problem that they don’t know that much servers. But there could be a solution for this. Mastodon - for example - does know a public API endpoint that returns all known servers, see for example here: https://mastodon.social/api/v1/instance/peers

Friendica does something similar, it returns a list of the 1000 last active servers, see for example here: https://pirati.ca/poco/@server

Would be great if there had been a Diaspora specific endpoint as well.

2 Likes

Just an update: I added such a functionality to the “develop” branch of Friendica. We can now act as a “direct relay” if configured.

During my tests I discovered that there are more servers out there with added relay settings than are visible to the relay servers, so it seems that this functionality really does make sense.