-
Notifications
You must be signed in to change notification settings - Fork 472
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
FR: Personal "exceptions" from subscribed mute/block lists #2634
Comments
I'm generally in favor of this sort of thing. There have been related discussions around "overrides" or "priority" of labelers, or arbitrary boolean logic combinations of lists ("A mins B, plus C"; "intersection of X and Y"). I think the principle of user agency is probably the main thing here; if somebody wants to mute/block everybody on one list except a handful of accounts that is fine and makes sense. The open question is how to get this implemented on both the back end (server) and front end (client, configuring these rules) in a reasonable way. The system is already fairly complex and very load-bearing. It also isn't clear to me what the full requirements are here: it is a little hard to experiment or take things one step at a time with these systems, it would be good to confidence that whatever iteration or set of changes we make would be accessible and make a difference to folks. For example: could we just have following relationship override whatever block and mute configuration? Or maybe have follows override blocks, but not mutes? Would it be acceptable to have a single per-account "override" list, or is it critical to be able to share overrides composition-ally? Can overrides be public? A bit of a bummer here that this requires server-side tweaks and we can't just experiment in the client to start. It isn't a very good experience, but just to list it out, another remedy possible today is to copy or "fork" the list and remove the accounts wanted. Independent tooling could be used to maintain such a list, with updates to the original list periodically/automatically copied over. Not very ergonomic, but maybe better than unsubscribing or waiting indefinitely for AppView support. |
This would be a bad idea. A lot of complexity, and it would make many optimizations in AppView impossible
Yeah, I already have such tooling (it actually supports arbitrary set operations, using https://github.com/uabluerail/bsky-tools/blob/main/didset/operations.go). But it's not feasible for an average user. Even if it's wrapped into some friendly UI - that won't remove the issue that having a 5k+ of |
Actually, it might be not that bad, if you take visibility set calculation out of the serving path (for list changes, update latency even on the order of minutes is not a big deal from user perspective). But I still think additional complexity is not worth the minor benefit, and it would also add to user confusion. A simple hardcoded "(A1 + A2 ...) minus B" should cover 95% of use cases, and the other 5% will be covered by writing a materialized set into PDS as a list. |
I spoke about this, but in the case of a more community-defense-centered moderation list, having following relationship override blocks and mutes could be dangerous for community self-defense. Me and my team are not infallible, of course, but it could lead to potential bad actors not being ousted as easily (people could just not check, especially if something like this is automatically set). I'd rather have a per-account, manual allowlist people could add to in case they disagree with a decision a list curator makes for whatever reason, like @bnewbold brought up after this. |
Use case
Sometimes when you're subscribed to a long-running mute list there are situations where you'd want to make an exception for a few accounts. Reasons for that can be different, e.g.:
At the moment the only remedy is completely unsubscribing from the list, which is a bit heavy-handed.
Proposal
Add "negative" list subscription that subtracts the listed accounts (in set theory terms) from all "positive" list subscriptions you have (mute or block).
I don't particularly insist on implementing it this way, it's just what seems natural to me.
The text was updated successfully, but these errors were encountered: