Sorry for necroing this old thread, but I have some follow-up questions and I feel it’d be better to keep it in this relevant thread rather than start a new one:
Question 1: Do blocks go both ways?
If Alice blocks Bob, Bob should obviously not be able to interact with Alice’s content. But can Alice continue to interact with Bob’s content?
Presumably most implementations would not even display Bob’s content to Alice, but you could imagine implementations that would only “grey out” or minimise Bob’s content and thus still allow Alice to see and maybe even interact with it (or perhaps Alice interacts with it via some kind of alternate API or whatever).
That would seem weird I’d say. It would basically devolve into one-way communication. A way to resolve this would be to consider the block to be in both directions, with the caveat that Bob should not be able to Undo the Block.
Question 2: Should blocking really end other relationships (e.g. follows), or just “suspend” them?
Isn’t it somewhat dangerous to assume that follow relationships should be broken? I could for instance imagine a situation where Bob follows Alice and they get into an argument, and then Alice blocks Bob for a while. Once the conflict has been resolved, Alice might unblock Bob. Presumably Bob would like to automatically follow Alice again (right?
).
I’m kind of more leaning towards a model where the follow relationship (or any other relationship you might imagine, like a Friend relationship for instance) is suspended due to the block, and could be reinstated automatically if the block is undone. But this would not work if other implementations assume that a Block also means an Undo Follow.
Question 3: Should instance admins be able to override blocks, and if so, how?
Imagine the same situation as before with Alice and Bob, but they are on separate instances/domains and Bob happens to be the administrator of his instance. Alice is spamming Bob’s instance and has blocked Bob in an attempt to evade being banned.
This makes me think that, under the origin-based security model (cc: @silverpill), you should still allow remote actors to interact with local actors that have blocked the remote actor (i.e. allow Bob to interact with Alice) despite any blocking, because the remote actor may have special permissions (like being an admin) that should allow them to circumvent blocking.
I feel that Alice’s instance should assume that Bob’s instance is compliant and only allows Bob to interact with Alice despite the block if Bob’s instance considers Bob permitted to do so, which it would in this situation.
So with regards to this:
I actually feel that this isn’t a bug? And that Mastodon is doing the correct thing. It feels almost weird to say, but I think processing side effects from blocked users is the correct thing to do, because that user might be a privileged user from the remote instance’s perspective.
Now of course, you could have non-compliant implementations that allow any user to circumvent blocks. But such an implementation should probably be banned/defederated on an instance level, since they are not upholding the spirit of the protocol.