superseriousbusiness / gotosocial

Fast, fun, small ActivityPub server.
https://docs.gotosocial.org
GNU Affero General Public License v3.0
3.82k stars 331 forks source link

[feature] Formalize the Allowlisting Federation Behavior Re: relationships as a feature, not a bug #3414

Open sgrigson opened 1 month ago

sgrigson commented 1 month ago

Is your feature request related to a problem ?

One of the biggest issues involving defederation is the destructive removal of relationships, so that even if federation is restored, it's too late. You can't take a backup of your followers you had before the defederation, because they were literally removed at the database level. Similarly, no one on the other side of the divide can do the same. If federation is removed by surprise, or maybe your account was on vacation, you return to try to piece back your social graph from memory.

This is how blocks and suspensions work in most platforms, they are destructive (although not Pleroma/Akkoma).

However, perhaps due to a bug or an oversight, but hopefully due to an intentional design feature, when GoToSocial is in allowlist mode: removing allowlisting from a server does not sever relationships.

I'm suggesting you formalize that as a feature, rather than "fixing" it like it's a bug.

Describe the solution you'd like.

In an allowlist/island model, it would be nice to say, "Hey, you've been a jerk, so we're removing allowlisting for now."

Then, after things are worked out with the instance later, you add them back to the allowlist. While I'm not necessarily expecting delivery of all messages missed while you weren't federated, you should immediately be able to see you're still following (and being followed by) everyone from the server before.

In other words, without an explicit block or suspension declared, a lack of federation caused by removing the allowlist does not permanently alter any relationships.

Note: This appears to be how GTS already works now.

Describe alternatives you've considered.

This is a problem that Mastodon has to work to build into their model, and it has been my belief for some time that the entire reason suspensions and blocklists are contentious in the first place is because they permanently sever relationships.

So what if that just wasn't the case? What if, once federation was restored, all existing connections remained?

Now, I realize there might be technical reasons we physically sever/suspend existing relationships, especially in a denylist model, and especially when applying domain blocks.

But I feel like in an island/allowlist configuration, the non-destructive nature of allows--that they are not, in fact "blocks"--is a very desired behavior.

Allowlisting is ultimately less confrontational by nature, and so it should be effortless--and without harm--to enable or disable it as an instance administrator chooses, without having to worry that they are somehow harming the community or making it harder for people to migrate elsewhere with their followers intact.

TL;DR: It already works this way, just set my mind at ease that you'll keep it working like this--as an intentional feature rather than patching it and destroying relationships later when someone revokes a domain allow.

Additional context.

No response