Skip to content

MSC4283: Distinction between Ignore and Block #4283

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

turt2live
Copy link
Member

Rendered

Disclosure: I am Director of Standards Development at The Matrix.org Foundation C.I.C., Matrix Spec Core Team (SCT) member, employed by Element, and operate the t2bot.io service. This proposal is written and published as a Trust & Safety team member allocated in full to the Foundation.

@turt2live turt2live changed the title MSC: Distinction between Ignore and Block MSC4283: Distinction between Ignore and Block Apr 2, 2025
@turt2live turt2live added proposal A matrix spec change proposal s2s Server-to-Server API (federation) client-server Client-Server API meta Something that is not a spec change/request and is not related to the build tools kind:maintenance MSC which clarifies/updates existing spec needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. labels Apr 2, 2025
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implementation requirements:

  • Some sort of demonstration that these terms make sense (ie: evidence that "block" is defined correctly, given that "ignore" is already used)

@turt2live turt2live marked this pull request as ready for review April 2, 2025 21:33
Comment on lines +23 to +28
**Block** means to prevent the sender from completing an action. This is typically done server-side,
but with some work, can be done client-side. Reusing the invite example, the sender would get explicitly
told "you cannot send this invite" instead of it appearing successful with an *ignore*.

Other platforms may call *blocks* "ignores", which is mildly confusing, but swapping the terminology
would involve significant edits to the specification and its implementations.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Out of band (summarized) thoughts: Blocks are meant to be bidrectional too. For example, if Alice blocks Bob, Bob can't see what Alice posts (and Alice can't see Bob's posts). Bob knows this is happening.

Supporting this in Matrix is difficult, but not impossible. One option may be to further distinguish what subtype of block we support (ie: public or private blocks).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This proposal makes a lot of sense to me in that I would like to see these terms clarified in approximately the suggested way, and ideally applied across (at least) UX in the ecosystem.

It does however raise the question to how this is supposed to apply practically to the spec:

  • We currently have the C2S module for ignoring users https://spec.matrix.org/unstable/client-server-api/#ignoring-users which states "Servers may optionally decide to reject the invite, however.", i.e. half way of what this MSC defines as block. For this to work properly, we would need to change the required behavior for ignores to actually be ignores.
  • Some of the exemplary blocking actions can probably be implemented as is. I'm not sure, but for efficiency and potentially to enable further features, it may be reasonable to actually specify behavior? I somehow expected to be presented with something to implement here 🤷
  • As one particular example, I suggest that ignoring should be a valid reaction to receiving an invite, which sends it in that "black hole" without explicitly rejecting or any other information relayed back to the inviting user.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client-server Client-Server API kind:maintenance MSC which clarifies/updates existing spec meta Something that is not a spec change/request and is not related to the build tools needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. proposal A matrix spec change proposal s2s Server-to-Server API (federation)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants