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

MSC3849: Observations and Reinforcement #3849

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

Gnuxie
Copy link
Contributor

@Gnuxie Gnuxie commented Jul 19, 2022

@Gnuxie Gnuxie changed the title initial draft Observations Jul 19, 2022
@Gnuxie Gnuxie changed the title Observations Observations and Reinforcement Jul 19, 2022
@Gnuxie Gnuxie changed the title Observations and Reinforcement MSC3849: Observations and Reinforcement Jul 19, 2022
@turt2live turt2live added proposal A matrix spec change proposal client-server Client-Server API needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. kind:feature MSC for not-core and not-maintenance stuff labels Jul 19, 2022
"observation": "spam",
"observed_server": "example.org"
},
"type": "m.policy.observation.user"
Copy link
Member

Choose a reason for hiding this comment

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

Just to clarify, these are non-state events, correct? So far, the only event types defined for policy rooms (m.policy.rule.*) are state events, so it may be worth calling this out.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sorry, they are state events, It's incomplete because I'm pussyfooting over which entities i want to include in the proposal right now. Users, rooms, servers are a given but i think events/media are certainly blocked on the "directory of abuse" issue. I'll edit them all in with a discussion for each for now.

```
{
"content": {
"observation": "$event_id",
Copy link
Member

Choose a reason for hiding this comment

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

Can we use the message relationships/aggregations system here, instead of creating a new key? Also, does this need to be a state event?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ok, thanks for pointing this out, i totally ignored this detail about relations. The following isn't addressed directly to your question but is my thoughts about the proposal in general.

Yes another problem is that for this to work well there needs to be relationships to events in other rooms.

This is because you will want to make references to labels from other policy lists (if we are keeping with the extensible+hierarchical format) but also so that you can make observations about events. The other thing is that if you do make an observation about another event, you will need a relationship to both the event and the label, which isn't something that is possible or can feasibly will become possible in the future of matrix.

So then I am forced to choose between the following:

  • water down labels into a free form key (which to me sucks because then they can't be hierarchical e.g. i want to trust nico's judgement on all labels under the moderation hierarchy).

  • Ignore matrix's support for relations completely and propose something ad-hoc (just embedding event/room id into each observation to the label definition).

  • Specify a set of labels (No way)

  • Wait a minute, you could leave the forming of a hierarchy between labels to the client? Yes that actually might work.

Copy link
Member

Choose a reason for hiding this comment

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

Ah, OK, if you're referencing things from other rooms, that might be a reason not to use relations. Relations are also not generally used for state events. Anyways, if you decide not to use relations for whatever reason, it's probably saying something about why relations aren't used.

@bkil
Copy link

bkil commented Oct 18, 2022

I think I have shared this in some PR, but I'd prefer if we had a structured way to declare the given instances (observations) of abuse that reinforce the given moderation action. I.e., in our ban list, I always add the room(s) where the given spammer has acted up recently.

Strictly speaking, an event ID (or timestamp) would also be needed, but for all intents and purposes, the room was sufficient for us with the present rate of ham vs. spam and was much easier to add by hand.

Right now, this mostly works if the abuse happened in at least one abandoned room where it is not redacted, but the future possibility of hiding abuse for a few days before redacting it would provide a better solution to this.

```
"content": {
"entity": "@alice:example.org",
"observation": "spam",
Copy link

Choose a reason for hiding this comment

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

As discussed, this should be namespaced.

```
"content": {
"observation": "spam",
"entity": "$w23r0932ir:foo.net"
Copy link

Choose a reason for hiding this comment

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

Problem is that you often would want to redact these events. I wonder if MSC3531 would allow for this to be fully utilized.

We're undecided on whether to propose an observation for an event
but in cases where the observation is about an action or
something an author is associated with we propose linking
to them with an `observed` and `observed_server` field.
Copy link

Choose a reason for hiding this comment

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

observed_server should just be able to be inferred from the server name of the observed user id.

Comment on lines +84 to +86
### Labels to provide Context (This one is a maybe)

Labels are used to provide context for an observation.
Copy link

Choose a reason for hiding this comment

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

Not too sure as to what the purpose of this is, is the event id not context in of itself?

"content": {
"observation": "$event_id",
"policy_room": "$room_id",
"reinforcement": "agree",
Copy link

Choose a reason for hiding this comment

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

Might be useful to namespace, not too sure.

```
"content": {
"entity": "@alice:example.org",
"observation": "spam",
Copy link

Choose a reason for hiding this comment

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

When handling multiple observations (e.g. racism & spam) from a single user (and event, as below), is it recommended to send multiple of these observation events, or should observation be replaced with an array of observations?

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.

None yet

5 participants