Skip to content
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

MSC4226: Reports as rooms #4226

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

Gnuxie
Copy link
Contributor

@Gnuxie Gnuxie commented Nov 12, 2024

Rendered

Signed-off-by: Gnuxie Gnuxie@protonmail.com


In line with matrix-org/matrix-spec#1700, the following disclosure applies:

This MSC was written in a volunteer capacity without any $funding 🐾

@Gnuxie Gnuxie changed the title MSC0000: Reports as rooms. MSC4226: Reports as rooms Nov 12, 2024
profiles of the report moderators of Bob's server.
2. Mike's client invites the report moderators of Bob's server to the room.

### Report content mixin
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Jassuko suggested:

Can you figure a way to allow linking to multiple events instead of just a single event? Some times more context would be nice for decision making and gaining a full picture might need pointers to events that are not immediately next to each other.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I replied:

normally one event is enough just to anchor it and we expect moderators to go looking for the surrounding context, but yeah as you say that's a problem when stuff is spread out. it's difficult because i don't know if any client has the ux that would let you select multiple events like that? But I guess it would be possible to either allow them to send more events with context or add an array or something, idk


### [MSC4121](https://github.com/matrix-org/matrix-spec-proposals/pull/4121): The `m.role.moderator` `/.well-known/matrix/support` role

This role could be reused instead of the proposed `m.role.report_moderator`.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

We should do this and add a flag to the MSC4121 role for whether they should receive reports

@turt2live turt2live added proposal A matrix spec change proposal client-server Client-Server API kind:feature MSC for not-core and not-maintenance stuff needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. labels Nov 13, 2024
Copy link
Member

Choose a reason for hiding this comment

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

Implementation requirements:

  • Client
  • Server

@deepadmax
Copy link

I imagine that a report room could be end-to-end encrypted; the subject may be sensitive. If that's the case, you may not want to store the reason unencrypted either. What if the reason would be stored elsewhere? A state event could refer to the event ID of the message to be used as the reason; by default, it would be the first message. Another benefit to storing it as state rather than in the creation event is that the reason can be changed later to better describe the problem.

When a report needs to be sent to server administrators, each of the
the `m.role.report_moderator`'s will be invited to the report room.

## Potential issues
Copy link
Contributor Author

Choose a reason for hiding this comment

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

#4226 (comment)

I imagine that a report room could be end-to-end encrypted; the subject may be sensitive. If that's the case, you may not want to store the reason unencrypted either. What if the reason would be stored elsewhere? A state event could refer to the event ID of the message to be used as the reason; by default, it would be the first message. Another benefit to storing it as state rather than in the creation event is that the reason can be changed later to better describe the problem.

(@deepadmax thank you for reading the MSC :) btw it's not a big deal but next time you open a thread somewhere by clicking on the file so that we can reply easily ^^)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is true, if the report was sent in messages once the report room was created then it could be end to end encrypted. However, doing so would complicate the MSC. (See power level

### Power level event
In order to give the moderators and server admins control over the
report room, and protect the moderators and server admins from further
abuse, there are specific requirements on the power level event that
need to be fulfilled when creating the room. These may be checked by
clients or servers check before they show the report to report
moderators, in order to maintain safety (See [Consistency
checks](#consistency-checks)).
1. The reporter needs to immediately remove their ambient authority in
the first `m.room.power_levels` event sent to the room by setting
their power level to `-1`.
2. Any report moderators that have been invited to the room need to be
given the "admin" role or a power level of `100`.
).

Currently the reporter is supposed to deliberately yield power level in the room in order to give the report moderators control. The client's of the report moderator are supposed to check that the power level has been yielded immediately. The idea being that this would minimize attempts to harass report moderators by flooding them with reports that have abusive content.

Maybe it is overly cautious though. If clients can hide messages behind spoiler text, and can blur images (both things that Nheko and Element web can do for instance) by default, then it might not be so bad to allow the reporter to send messages to the room.

It is probably then worthwhile turning the report context into a timeline event and allowing multiple context events to be sent within one report (so this would replace the mixin m.report.* that is present within the m.room.create event, and they could be encrypted too).

It would be nice to know if you or anyone else have thoughts about that before I rewrite these parts of the MSC?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Doing this would close off the route of backwards compatibility though when reports are intended to be created by servers when the legacy reporting client server api endpoints are used. Unless we just allow those to be sent without encryption (because then at least one server in this instance is already able to intercept the contents of the report).

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:feature MSC for not-core and not-maintenance stuff 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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants