Open ThisIsMissEm opened 1 month ago
one consideration: the current recommendation is that Blocks are not to be federated.
the way a Block should work is that incoming activities are dropped, and their side effects are not processed.
it is possible that if two actors mutually block each other, then federating this information makes it impossible for one of them to fully unblock the other first -- the first Undo Block to be sent will be dropped by the recipient, leading to a state desync where the first actor is no longer blocking the second actor, but the second actor thinks they are still blocked.
similarly, if one actor blocks another actor, then the second actor may block the first actor in return, but the first actor will not be aware of this because the Block gets dropped. you end up in another desync.
taken together, it makes the following flow possible:
so A and B now believe completely opposite things!
this might be avoidable if you define S2S Block as a "moderation activity" that should be sent to some endpoints.moderationInbox
or similar, but it can only be expected to take effect if the remote server is enforcing these blocks.
Just adding it here, but I think @trwnh covered it well: Block is defined as a SHOULD NOT for delivery.
Currently ActivityPub only really describes blocking in the context of Client to Server, and details for Server to Server are all but omitted (the only line is that
Block
along with several other activities must have anobject
property)Whilst some software does send Block activities, these have previously been used by abusive server operators as something of a badge of honour (Look I got the person I was trolling to Block me!).
For instance, defederation in Mastodon does not generate
Block
activities, but instead just doesUndo
's for allAccept(Follow)
activities.Blocks are also sometimes bypassed due to forwarding or including complete objects inline in Announce activities, however, we may want to consider this a separate issue & require a recommendation against inlining objects in Announce activities.