-
Notifications
You must be signed in to change notification settings - Fork 412
MSC4365: Canonical ignore list rooms #4365
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
TheArcaneBrony
wants to merge
2
commits into
matrix-org:main
Choose a base branch
from
TheArcaneBrony:canonical-ignore-lists
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
# MSC4365: Canonical ignore list rooms | ||
|
||
Keeping up with spam in ignore lists can be hard, and currently requires either a lot of manual labor | ||
or thoughtfully designed bots to bridge policy lists with user's ignore lists. This has a chance to | ||
majorly impact server performance at scale. I wish there was a better way to achieve this. | ||
|
||
|
||
## Proposal | ||
|
||
I would like to propose adding a `ignored_user_list_rooms` property to `m.ignored_user_list`, to serve | ||
as an "include"-list for Moderation Policies as they exist today. | ||
|
||
Some of you may already be familiar with a feature that works a lot like this: Element Web's | ||
"New Ways To Ignore Users" Labs feature! | ||
|
||
I would like to have the server help out with this, and prevent clients from receiving the events | ||
in the first place, as well as eliminating the need to use bot to achieve this behavior. | ||
|
||
Example of an updated `m.ignored_user_list`: | ||
```diff | ||
{ | ||
"content": { | ||
"ignored_users": { | ||
"@someone:example.org": {} | ||
}, | ||
+ "ignored_user_list_rooms": { | ||
+ "!fTjMjIzNKEsFlUIiru:neko.dev": { | ||
+ "use_globs": true, | ||
+ "use_server_bans": true, | ||
+ "use_banned_rooms": true, | ||
+ "apply_retroactively": true | ||
+ } | ||
+ } | ||
}, | ||
"type": "m.ignored_user_list" | ||
} | ||
``` | ||
|
||
You may notice these additional properties in the schema, that may not make it into the final version of this MSC. | ||
All of these are optional: | ||
- `use_globs`: Whether to enable parsing globs, as commonly used in policy lists. These can be a performance hazard. | ||
- `use_server_bans`: Whether to also ignore users matched by a `m.policy.rule.server` policy. | ||
- `use_banned_rooms`: Whether to automatically leave rooms banned by a given policy list (including invites). | ||
- `apply_retroactively`: Whether clients should explicitly remove locally cached messages upon a new policy being written. | ||
|
||
To follow a banlist, the user MUST be a joined member of the policy list. This allows servers to always have at least | ||
one local member in the room. | ||
|
||
I would RECOMMEND that clients consider hiding events from users ignored through a policy list retroactively, | ||
as policy list maintainers or server administrators may wish use this mechanic as a way to hide or remove illegal | ||
content content, or content that otherwise violates the homeserver's Terms Of Service/Acceptable Use Policy. | ||
|
||
## Potential issues | ||
|
||
Clients that do clientside filtering for cached messages may not scale very well with this, and will need to be updated | ||
to handle enforcing policy lists. | ||
|
||
## Alternatives | ||
|
||
- Keep using a bot for this. Clients that filter their local timeline with the ignored users list will have performance | ||
ramifications if banlists are being imported with >10k policies (see eg. #community-moderation-effort-bl:neko.dev). | ||
|
||
- Implement the bot solution as part of clients. This will cause synchronisation issues as they all race to update the | ||
ignored user list. | ||
|
||
- Do the bridging server side by expanding `ignored_users`. This has the same performance ramifications as the previous | ||
2 alternatives, as clients aren't being expected to explicitly handle the case of having 10k+ ignore list entries. | ||
|
||
## Security considerations | ||
|
||
I did not find anything relevant in the OWASP TOP 10. | ||
|
||
Thinking logically, there is two ways this could be exploited, that I personally would consider intentional: | ||
- Servers may be adding a set of required ignore lists on behalf of users. This may be considered beneficial in order to | ||
keep local users safe in accordance to local server policies. | ||
|
||
- Malicious policy list writers may cause mayhem by banning rooms or other users. It is up to the user to pick policy | ||
lists to follow, that they themselves place trust in. | ||
|
||
## Unstable prefix | ||
|
||
`s/ignored_user_list_rooms/gay.rory.msc4365.ignored_user_list_rooms/` | ||
|
||
## Dependencies | ||
|
||
No known dependencies. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implementation requirements: