bluesky-social / atproto

Social networking technology created by Bluesky
Other
6.74k stars 474 forks source link

Labels `!hide` and `!warn` are taking effect even if labeler doesn't advertise them #2367

Open imax9000 opened 7 months ago

imax9000 commented 7 months ago

Describe the bug

These two labels are still do something and hide content when they're coming from a labeler that doesn't advertise them.

To Reproduce

Steps to reproduce the behavior:

  1. Create a labeler. Do not add !hide or !warn to labels or policies.
  2. Subscribe to labeler with a user account.
  3. Apply label !hide to some other post or account
  4. Open that post or account from the user account from step 2
  5. Observe that post/account is hidden

Expected behavior

Label should have no effect. User did not consent to sourcing that label from this particular labeler, and has no way to configure the behaviour.

Additional context

Non-configurable labels that hide content are bad enough of an intrusion already. What's worse is that there's no indication at subscription time that a particular labeler can issue them and silently remove content from your feed.

bnewbold commented 7 months ago

@pfrazee should these labels take effect when they haven't been declared in the labels array? I can't remember if we specified/clarified behavior for the non-redact bang labels.

imax9000 commented 7 months ago

Even if they should - users must be able to configure their behaviour, at least on non-mandatory labelers.

mary-ext commented 7 months ago

Here was when I asked whether clients should interpret definitions that are in labelValueDefinitions but aren't listed in labelValues, as it's somewhat related. https://bsky.app/profile/did:plc:ragtjsm2j2vknwkz3zp4oxrd/post/3knwb2ufflk2r

Archived ![image](https://github.com/bluesky-social/atproto/assets/148872143/e1141364-915c-4d9b-8458-afa86c019441)
imax9000 commented 6 months ago

Reminder: this is still an issue and a deal-breaker (at least for me) for subscribing to 3rd-party labelers.

nekorug commented 6 months ago

I understand users not wanting a moderation service to be able to hide things without any configuration setting, but informational labels can easily clutter the configuration UI. If there was some way to specify that a label that never hides or blurs content wasn't as important and have it appear in a collapsed or hidden state in the UI, that would be nice. Because there is nothing for the user to configure, with the exception of ignoring the label, this shouldn't be an issue. I hope this is a good compromise.

mary-ext commented 5 months ago

Reiterating again, right now it affects local labeler-defined labels as well, and it's not clear whether they are:

  1. Not ready to be used by clients (is being tested by advertising them publicly)
  2. Misconfiguration on the labeler's part
  3. Intended to be non-configurable
  4. Intended to be hidden

I can only assume either point 1 or 2, it's a misconfiguration/not ready and therefore clients shouldn't be interpreting it, that's what I've done for Skeetdeck.

If we want them to be non-configurable or hidden, then there should be a property for this.

Point 1 or 2 also applies for global labels like !hide, the point is, it's not clear what the client should be doing here.

bnewbold commented 5 months ago

Now that we've had a bit of time for the labeling system to bake, what i'm leaning towards:

imax9000 commented 5 months ago

I'm strongly opposed to some labelers receiving special treatment.


only the declared values in labelValues can take effect

This should apply universally, full stop. Any deviation breaks abstraction layers between clients and labelers.

"bang" labels are "global", and do not need to be included in labelValues

Please don't. You already have the power to disallow the user to turn them off. But overall it would be better if they're properly presented to the user.

"global" or "common" labels can be used as self-labels.

Your focus on making centralized service made you miss the fact that labels should be namespaced. In this case, self-label should either come with a complete definition detached from any labeler, or contain a reference to the labeler that defines it.

we likely need some kind of notification or warning in-app when a mod service changes their labelValues or labelValueDefinitions sets. This is important so users know if additional content is now being "hidden" from their view of the network.

Notification would be useful, but no content should be hidden until the user explicitly acknowledges the new label.

One way to achieve that is to disallow hiding as a default value, but that might be not always convenient for everyone.

imax9000 commented 4 months ago

Spotted in the wild: https://bsky.app/profile/did:plc:36h6ttx2g23zqr4accilbvo7/post/3kw5dhxv2572e

image