Federating servers

5 months ago by evan to c/technical-discussion

So, one part of the popular imagination about ActivityPub I've seen is the idea of server federation.

I think the idea is that if two servers have interacted in some way, all (?) public (?) content from one server will be sent to the other server, and vice versa.

This comes up a lot with new servers; people ask to have a post shared broadly so that their server rubs shoulders with others, getting the federated feed flow going.

ActivityPub does in fact have a mechanism defined for this:

> Additionally, if an object is addressed to the Public special collection, a server MAY deliver that object to all known sharedInbox endpoints on the network.

As far as I've seen, most (?) servers don't implement this; it would overwhelm small servers pretty quickly.

However, some (?) servers do implement it for some (?) activities, especially profile update and delete activities.

Is this the origin of the idea that new servers need to have their content shared around? Are people misunderstanding the way that relays work? Is it just a trick to get your content shared?

rimu 2 points 5 months ago

In FEP 1b12, that is what occurs (most of the time) - as soon as an instance has a dozen users their interests will be varied enough that almost every active community in the threadiverse is subscribed to and they'll be receiving almost all the traffic.

It works out ok at our current scale (small).

path: 0 23618510, hotness: undefined, score: 2, children: 0
heluecht 1 point 22 days ago

@evan At Friendica we have a third way. When configured, we distribute posts to other servers that subscribed to the hashtags that the item contains.

But anyway: I would like to have got something like the AppView in the Atmosphere. Means: not a dumb relay but something like tags.pub, but much more sophisticated.

path: 0 26085225, hotness: undefined, score: 1, children: 23
julian 1 point 20 days ago

@heluecht@pirati.ca like a public firehose of sorts?

Suppose there's no reason why not, you would just get yelled at constantly for "scraping" posts.

path: 0 26085225 26085238, hotness: undefined, score: 1, children: 22
heluecht 1 point 20 days ago

@julian To which point do you refer? For my first mentioned one we have got a special document at .well-known/x-social-relay that every Friendica server publishes that contains information about the subscribed hash tags.

And concerning the second point, I imagine some relay service that does not simply forward everything, but that knows which content you you are interested in. So when you subscribed to user A and user B posted something in a thread that user A started, then the relay would forward it to you, although you never subscribed to B. And when then the account B got deleted or blocked, then of course you would be notified as well.

path: 0 26085225 26085238 26086442, hotness: undefined, score: 1, children: 21
silverpill 0 points 20 days ago path: 0 26085225 26085238 26086442 26089011, hotness: undefined, score: 0, children: 20
heluecht 1 point 20 days ago

@silverpill @julian Currently there is no ActivityPub relay available that could do what Atmosphere's AppView is capable of.

path: 0 26085225 26085238 26086442 26089011 26089012, hotness: undefined, score: 1, children: 19
evan 1 point 5 months ago

Another possibility is that when someone asks to have their content shared, that will result in a few Follow requests, which does result in their future content being distributed to other servers (and public content goes to Fediverse and hashtag feeds).

So, it seems like the sharing is what got the distribution going, even though it is indirect (sharing causes following causes appearing in the Fediverse feed).

path: 0 23616130, hotness: undefined, score: 1, children: 7
johannab 2 points 5 months ago

@evan I think - reviewed it given that you corrected my misapprehension the other day - that other than for those who live'n'breathe protocol, the nitty-gritty details are really not spelled out in the platform documentation for users or admins.

Or even those of us who understand enough to read along (I did remember that I "knew" this, just not that expert in expressing), it's more detail than we can articulate when there's a new user or instance showing up.

path: 0 23616130 23616361, hotness: undefined, score: 2, children: 0
julian 2 points 5 months ago

@evan personally I think "server federation" is best achieved through relays.

The distribution model fits best, and the technology already exists, even if not broadly implemented.

One could be able to plug a server instance actor in to subscribe to its relay.

path: 0 23616130 23627809, hotness: undefined, score: 2, children: 5
evan 1 point 5 months ago

@julian yes, I agree. This is a different idea -- that somehow interaction between actors on different servers will make their servers connect and share data. It's incorrect, but it's interesting.

path: 0 23616130 23627809 23639548, hotness: undefined, score: 1, children: 4
julian 1 point 5 months ago

@evan oh I see what you mean... that a server merely discovers another, and that kickstarts a mutual sharing of activities.

I'm afraid that would be a bit of a scaling challenge 😁

path: 0 23616130 23627809 23639548 23639708, hotness: undefined, score: 1, children: 3
evan 1 point 5 months ago path: 0 23616130 23627809 23639548 23639708 23639737, hotness: undefined, score: 1, children: 2
mike 0 points 5 months ago

In the streams repository a few years back, we implemented a mechanism where "site actors" could follow each other, and this would result in sharing local public content with selected other sites, regardless of personal connections between actors. This scales so you can build small or large "clusters" or cooperating servers. The keyword being that this is server sharing which is "consent" based.

There was little or no interest in this ability from anybody, so the feature languished. I think it's still implemented, but there's no motivation to pursue it further. I'll just mention it if somebody else feels like dying on hills today.

path: 0 23648822, hotness: undefined, score: 0, children: 7
silverpill 0 points 5 months ago

A similar feature exists in Pleroma. I actually find it useful, my server follows a couple of Pleroma instances in addition to relays

path: 0 23648822 23648823, hotness: undefined, score: 0, children: 6
evan 1 point 5 months ago path: 0 23648822 23648823 23648824, hotness: undefined, score: 1, children: 5
silverpill 2 points 5 months ago

It's a LitePub relay actor, located at /relay. Announces all public posts if relaying is enabled in config.

path: 0 23648822 23648823 23648824 23649392, hotness: undefined, score: 2, children: 1
julian 1 point 5 months ago

That makes sense.

When I implemented the Litepub style relay logic I figured it would immediately work the same way as well (since two-way relay communication uses the Follow-Accept flow as well.)

It did not work immediately with NodeBB, have yet to figure out why 😏

path: 0 23648822 23648823 23648824 23649392 23649595, hotness: undefined, score: 1, children: 0
julian 1 point 5 months ago

Does it use the relay method? I always thought that if I implemented something like that I'd be the first. Cool to know Pleroma already supports.

path: 0 23648822 23648823 23648824 23648967, hotness: undefined, score: 1, children: 2
i 1 point 5 months ago

@julian @technical-discussion @evan pleroma ships a /relay actor turned on by default that follows back other relays, this server subscribes to a thousand or so of them, announces get turned into remotefetches for efficiency, and the network is filled effortlessly without follow for follow botting

wish the network had some sort of shared as:public /outbox too for backfill

path: 0 23648822 23648823 23648824 23648967 23649602, hotness: undefined, score: 1, children: 1
technical-discussion
technical-discussion

@activitypub.space

login for more options
0
44
20

Technical discussion about ActivityPub-related topics.

go to feed...