From 9d2c0457c409dfb0bdc41e78b96e37dd9ed67b05 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 3 Oct 2024 14:49:38 +0300 Subject: [PATCH 1/5] Remove legacy mentions Signed-off-by: Tulir Asokan --- proposals/4210-remove-legacy-mentions.md | 40 ++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 proposals/4210-remove-legacy-mentions.md diff --git a/proposals/4210-remove-legacy-mentions.md b/proposals/4210-remove-legacy-mentions.md new file mode 100644 index 00000000000..63f70d9ce2a --- /dev/null +++ b/proposals/4210-remove-legacy-mentions.md @@ -0,0 +1,40 @@ +# MSC4210: Remove legacy mentions +Matrix v1.7 introduced intentional mentions, where events list users they +mention explicitly, instead of the recipients inferring mentions from the raw +message text. For backwards-compatibility reasons, messages without the new +`m.mentions` field still use the old plaintext matching for mentions. + +Plaintext matching means it's very difficult for automated tools to tell which +users are mentioned in a message. This means that it's easy to spam mentions by +simply not using intentional mentions. + +If intentional mentions are mandatory, automated tools could easily ban users +who send more than X mentions in a single message. There could even be a new +push rule condition to allow checking the number of mentioned users and skip +notifying entirely. + +## Proposal +Support for legacy mentions is dropped. Specifically, the following deprecated +standard push rules are removed entirely: + +* `.m.rule.contains_display_name` +* `.m.rule.contains_user_name` +* `.m.rule.roomnotif` + +Additionally, the `contains_display_name` push rule condition is deprecated. + +## Potential issues +Users using old clients will no longer be able to mention users on up-to-date +clients/servers. + +## Alternatives + +## Security considerations +This proposal doesn't add any features, so there are no new security +considerations. + +## Unstable prefix +Not applicable, this proposal only removes features. + +## Dependencies +None. From cf6e0b315a09b16d2e93e17f364db619e29ba2ba Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 3 Oct 2024 18:09:44 +0300 Subject: [PATCH 2/5] Add another potential issue Signed-off-by: Tulir Asokan --- proposals/4210-remove-legacy-mentions.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/proposals/4210-remove-legacy-mentions.md b/proposals/4210-remove-legacy-mentions.md index 63f70d9ce2a..09237d9c561 100644 --- a/proposals/4210-remove-legacy-mentions.md +++ b/proposals/4210-remove-legacy-mentions.md @@ -24,8 +24,12 @@ standard push rules are removed entirely: Additionally, the `contains_display_name` push rule condition is deprecated. ## Potential issues -Users using old clients will no longer be able to mention users on up-to-date -clients/servers. +Users using old clients (which don't send intentional mentions) will no longer +be able to mention users on up-to-date clients/servers. + +Users using old clients (which don't support the new push rule conditions) will +also no longer be notified for mentions in case the client depends on the push +rules served by the server. ## Alternatives From cf91dce87dec29c3571753f9a7e239a3512d57a3 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 4 Oct 2024 12:26:24 +0300 Subject: [PATCH 3/5] Add new room version to alternatives Signed-off-by: Tulir Asokan --- proposals/4210-remove-legacy-mentions.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/proposals/4210-remove-legacy-mentions.md b/proposals/4210-remove-legacy-mentions.md index 09237d9c561..5e0458f63e9 100644 --- a/proposals/4210-remove-legacy-mentions.md +++ b/proposals/4210-remove-legacy-mentions.md @@ -32,6 +32,14 @@ also no longer be notified for mentions in case the client depends on the push rules served by the server. ## Alternatives +The removal could be done in a new room version, such as when switching to +extensible events, as suggested by [MSC3952]. However, such a migration will +likely take much longer than clients implementing intentional mentions. +Additionally, the room upgrade UX is still an open issue, which means many +rooms simply don't upgrade. Therefore, making a slightly breaking change to +existing room versions seems like the better option. + +[MSC3952]: https://github.com/matrix-org/matrix-spec-proposals/pull/3952 ## Security considerations This proposal doesn't add any features, so there are no new security From 0fa385adca2ae2655728dcd35fee8a152a0f49ca Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 4 Oct 2024 12:29:20 +0300 Subject: [PATCH 4/5] Specify that including `m.mentions` in all events is still necessary Signed-off-by: Tulir Asokan --- proposals/4210-remove-legacy-mentions.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/proposals/4210-remove-legacy-mentions.md b/proposals/4210-remove-legacy-mentions.md index 5e0458f63e9..22ec0598faf 100644 --- a/proposals/4210-remove-legacy-mentions.md +++ b/proposals/4210-remove-legacy-mentions.md @@ -23,6 +23,10 @@ standard push rules are removed entirely: Additionally, the `contains_display_name` push rule condition is deprecated. +Including an empty `m.mentions` key is still required for clients that are +aware of intentional mentions, as omitting it would cause current clients to +assume messages are not using intentional mentions. + ## Potential issues Users using old clients (which don't send intentional mentions) will no longer be able to mention users on up-to-date clients/servers. From 5af06f5143c5e6ca997e82782f735decc0d6be5b Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 8 Jul 2025 11:28:02 +0300 Subject: [PATCH 5/5] Add links to current spec --- proposals/4210-remove-legacy-mentions.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/proposals/4210-remove-legacy-mentions.md b/proposals/4210-remove-legacy-mentions.md index 22ec0598faf..cb4db83c8e5 100644 --- a/proposals/4210-remove-legacy-mentions.md +++ b/proposals/4210-remove-legacy-mentions.md @@ -1,9 +1,11 @@ # MSC4210: Remove legacy mentions -Matrix v1.7 introduced intentional mentions, where events list users they +Matrix v1.7 introduced [intentional mentions], where events list users they mention explicitly, instead of the recipients inferring mentions from the raw message text. For backwards-compatibility reasons, messages without the new `m.mentions` field still use the old plaintext matching for mentions. +[intentional mentions]: https://spec.matrix.org/v1.15/client-server-api/#user-and-room-mentions + Plaintext matching means it's very difficult for automated tools to tell which users are mentioned in a message. This means that it's easy to spam mentions by simply not using intentional mentions. @@ -17,11 +19,13 @@ notifying entirely. Support for legacy mentions is dropped. Specifically, the following deprecated standard push rules are removed entirely: -* `.m.rule.contains_display_name` -* `.m.rule.contains_user_name` -* `.m.rule.roomnotif` +* [`.m.rule.contains_display_name`](https://spec.matrix.org/v1.15/client-server-api/#_m_rule_contains_display_name) +* [`.m.rule.contains_user_name`](https://spec.matrix.org/v1.15/client-server-api/#_m_rule_contains_user_name) +* [`.m.rule.roomnotif`](https://spec.matrix.org/v1.15/client-server-api/#_m_rule_roomnotif) + +Additionally, the `contains_display_name` [push rule condition] is deprecated. -Additionally, the `contains_display_name` push rule condition is deprecated. +[push rule condition]: https://spec.matrix.org/v1.15/client-server-api/#conditions-1 Including an empty `m.mentions` key is still required for clients that are aware of intentional mentions, as omitting it would cause current clients to