bluesky-social / atproto

Social networking technology created by Bluesky
Other
6.07k stars 426 forks source link

My reply to someone's comment was "deleted" by the person I replied to #1387

Open mackuba opened 1 year ago

mackuba commented 1 year ago

Describe the bug

A few hours ago, I made two replies to someone's post (one reply to the post, then reply to my reply):

That person has blocked me 2 hours later:

Now, when I load the 2nd reply on the site, it shows up with "Deleted post" above, and the 1st reply shows up as "Post not found / The post may have been deleted". I can still see the 1st reply in listRecords and getRecord output, but I don't see it on the site… It's also not visible when I look on my profile timeline in the "Posts & replies" tab. It's like it was deleted by someone else.

Someone suggested that this might be due to recent change in https://github.com/bluesky-social/atproto/pull/1378 (https://github.com/bluesky-social/atproto/issues/1374). That change was supposed to make it impossible to interact with a blocked person through the API.

However, in this case, this has affected my reply that was made before I was blocked (in fact, one which triggered the block). This means that anyone I reply to can effectively delete that reply from the site, for everyone, including me. It not only disappears for that person in that thread, but it's impossible to view it by opening a link directly or by going to my profile timeline. I don't think it should work this way - other people shouldn't be able to "delete" my comments.

If we want the AppView to enforce obeying blocks by not letting people make replies after someone is blocked, it should only apply to replies that are made after someone is blocked, i.e. it should only hide the reply if reply time (indexedAt) is > block record time (also indexedAt I guess, in case someone tries to create a backdated block record).

To Reproduce

Steps to reproduce the behavior:

  1. Reply to someone
  2. Get blocked by that person

Expected behavior

mackuba commented 1 year ago

Here's another case: https://bsky.social/xrpc/com.atproto.repo.getRecord?repo=did:plc:js7zoaefzg64zkvjdjqxmo6b&collection=app.bsky.feed.post&rkey=3k3gxmlyngt2l

This post has been matched by my "iOS & Mac Dev" custom feed, but it's not displaying on the site, so I checked what was going on. Apparently the author of the parent comment to this one has blocked the author of this comment a few minutes after this reply was made (they are also blocking me, but I've confirmed with someone else who isn't blocked by them that they also don't see the post).

DavidBuchanan314 commented 1 year ago

IMHO reply-hiding should be applied at time-of-indexing, not time-of-viewing.

e.g. if B replies to A, and then A blocks B, then B's reply should stay visible, in spite of the block.

But, it A already blocks B, and B "bypasses" the block and replies anyway, then the reply relationship should not be indexed by the AppView (and therefore not show up below A's post) - but B's post should still be visible on its own (so the post itself is still indexed - pretty much the same as if B had replied to a nonexistent post).

devinivy commented 1 year ago

One consideration with doing this at time-of-indexing is that it will not be well-defined which posts should be blocked: two perfectly correct indexers of the firehose could process the repositories of the blocking/blocked parties in different orders and come to different conclusions about which posts should be visible. Perhaps for those live tailing the firehose it's "well-defined enough", but this remains an issue when a new appview is coming online for the first time and backfilling many full repositories.

The current behavior prioritizes safety and well-definedness so that we don't close the door to new appviews coming online late and being disadvantaged. I wonder if we should spin this issue off into a discussion about how to handle these issues technically.

mackuba commented 1 year ago

There is also a bit of a crossover here with the thread moderation proposal published here https://github.com/bluesky-social/proposals/tree/main/0001-user-lists-replygating-and-thread-moderation, because current behavior effectively implements the "Reply Deletion" solution described there, partially at least - at the moment anyone can get a reply made to them "deleted" by simply blocking the person who made the reply (the difference being that this only works on direct replies). A lot of people voiced some concerns to that proposal, as seen e.g. in this thread, for example in the context of spreading disinformation - if somone makes a post with some claims that are untrue and people start correcting them in replies, they can simply block these people and the correcting replies disappear.

artiste212 commented 1 year ago

I agree this needs to be fixed

bszonye commented 11 months ago

While I don't have strong feelings about post hiding vs deletion, I don't think it's a bug to vanish replies that were made before blocking. On the contrary, it's a strong tool for preventing harassment. One of my big frustrations with Twitter is that I had no effective way of hiding replies by bigots, bullies, and scammers, so they would just accumulate over time.

That's annoying in that it prevents criticism of bad actors, but when it comes to things like bigotry in the replies to my posts, I don't want to have to rely on a moderation team to recognize & remove it. It's refreshing to be able to remove it myself.

piccolbo commented 11 months ago

In the moderation proposal pointed to by @mackuba it is said that

The simplest action in Thread Moderation is the ability to delete a reply by other users. The deleted replies will technically still exist as users can’t control each others’ data in an open network – and therefore could be found in their profile’s “Posts & replies” – but they’ll be filtered entirely from the thread by well-behaving services (much like with Blocking).

[bold font added by me]

This is not what's happening here. Posts are deleted, stop. They show as deleted in post and replies. If there is another way to access a post deleted by blocking, I am not aware of it.

soundings commented 9 months ago

I've had far too many posts disappear from BlueSky - some of them containing links and other information that had taken a fair amount of time to research.

Is it really the case that a large thread with dozens of participants can be (mostly) trashed - either deliberately or accidentally - by one disgruntled participant clicking the block button?

Also it is almost impossible to figure out who blocked and thereby deleted a thread - I have only succeeded once and it required a lot of work in my browser history. It looks as if a bad actor could quickly block and unblock and cause unlimited damage. Please tell me I am wrong.

badlogic commented 8 months ago

This just happened to me as well, and it's entirely confusing. Obviously makes sense I can not view or reply to posts by a user that blocked me anymore. But it makes no sense that my reply to them (posted before they blocked me) vanishes as well, not only in the client, but also through the API (still fetchable via listRecords, but that's not usable in the context of writting a BlueSky client).

beholdnec commented 6 months ago

It looks like these blocked posts are still retained by the system and there are ways to retrieve them. However, the app makes it very difficult to find these posts.

What if I need to delete the post? For example, if I accidentally posted private information?

I think most users 1) don't expect their posts to disappear upon blocking, and 2) when they notice their posts disappearing, they wrongly assume it has been deleted. This is problematic.

orgbd commented 6 months ago

This thread is ignoring the fact that all tech companies are left leaning authoritarians that demand compliance from you. They are in the business of making money and libs can’t handle truth and facts that disrupt their ideological hypocrisy.

piccolbo commented 6 months ago

@pfrazee mentioned this is being worked on in closing https://github.com/bluesky-social/social-app/issues/1961 as a duplicate of this one. So I think convincing the devs this is a problem has been achieved. It would be nice to know in which direction they are going and maybe have people comment, constructively, before the hard work is done.

bszonye commented 6 months ago

I still think it's good to remove all blocked posts from the threaded view, as it's very helpful for preventing harassment, trolling, and arguments in your mentions. I have mixed feelings about leaving the posts visible in other views, such as the Replies tab. Sometimes, I've wanted to recover the text I lost to a block because I was proud of it, and other times I've wanted to delete the post because I deserved the block 😆 and wanted to retract what I said. Thus, it would be nice if I could still access my own posts from the Replies tab. However, I think it would be best if only the owner could see such posts.

surfdude29 commented 6 months ago

@pfrazee mentioned this is being worked on in closing bluesky-social/social-app#1961 as a duplicate of this one.

I think the duplicate he mentioned was bluesky-social/social-app#2243.

bszonye commented 6 months ago

Yes, and the backend fix is here: https://github.com/bluesky-social/atproto/pull/1677

Previously, we were stripping block violating replies entirely from feeds.

This adjusts the logic such that we strip them from threads still but leave them in feeds.

That's more visibility than I would like for blocked posts, tbh.

surfdude29 commented 6 months ago

as it's very helpful for preventing harassment, trolling, and arguments in your mentions

Apologies if I've misunderstood, but wouldn't thread muting working properly (I think there are still issues with it?) be a better solution to that problem?

bszonye commented 6 months ago

If somebody is harassing me or trolling my friends, I don't want anybody interacting with that in my posts or under my replies. I don't find muting sufficient for that case, as it only protects me personally, and not very well. The current blocking behavior is one of the best things about Bluesky, and one of the reasons I'm still active there.

soundings commented 6 months ago

We need to be able to block people who blocked us.

Otherwise you get harassers sniping at you from behind blocks which they can lift temporarily.

This all needs to be addressed with carefully thought out policy rather than random code edits.

surfdude29 commented 6 months ago

We need to be able to block people who blocked us.

The best solution at the moment to find out who blocked you is to use a tool like this or ClearSky. But I admit it's far from ideal.

piccolbo commented 6 months ago

@surfdude29 I stand corrected on the duplicated issue number. This issue was only mentioned there, not declared a duplicate.

bszonye commented 6 months ago

Another way to describe this feature is that direct replies require consent. This does have some disadvantages: you cannot correct or rebut a bad actor in a direct reply. However, there are alternatives such as quote posts, indirect replies (e.g. to a different comment in the thread), or screenshots. That's a reasonable tradeoff for easier prevention of harassment, in my opinion. Other social media platforms rely on moderators to clean up harassment, which is a major problem for marginalized folks who cannot trust that they have the moderators' sympathies.

mackuba commented 6 months ago

That's more visibility than I would like for blocked posts, tbh.

For me, this is less visibility than I would like, but a step in the right direction… This can still cause things like someone posting some disinformation and then deleting every reply that corrects them by blocking the people who comment. It would be better to maybe do something like on Twitter, where you can manually hide some offending replies, but they're still accessible in a "hidden replies" menu if someone wants to look there. In any case, a blocked person will not be able to make any more comments.

But overall, if I'm able to see my replies on my own profile, that would be better than what we have now, because right now someone can effectively delete my post and I believe they shouldn't be able to.

surfdude29 commented 6 months ago

For me, this is less visibility than I would like, but a step in the right direction… This can still cause things like someone posting some disinformation and then deleting every reply that corrects them by blocking the people who comment.

Your reply pretty much summarises my thinking on this exactly.

Also, in the case of rebutting mis/disinformation, quote posting alone will be ineffective too because as soon as the person quote posting is blocked, the original post is rendered invisible (unlike on Twitter where you can still tap/click through).

So in terms of combatting mis/disinformation from malicious actors – an issue that we at Bluesky need to keep in mind as the network grows, and especially in a year with so many elections taking place globally – I think the best way is probably to quote post and include a screenshot, so that the mis/disinformation being rebutted can still be seen in context, even after the rebutter/fact checker is presumably blocked.

bszonye commented 6 months ago

The "hidden replies" feature available at Twitter is not sufficient for dealing with harassment, especially not if bsky intends to implement features like pinned posts. More than once, I have had to delete a pinned post on Twitter because it just accumulated harassment and hate speech over time, and moderation does not remove it fast enough. The ability to self-moderate our own posts is crucial for marginalized users.

beholdnec commented 6 months ago

I propose that blocked posts should always be visible to the person who posted it, but visibility to others should be restricted. Viewing other users' blocked posts should be an "undocumented, third-party" function with a lot of friction, sort of like viewing a list of people who blocked you currently is.

bszonye commented 6 months ago

I wholeheartedly agree with @beholdnec: the front end should provide as much friction as possible when it comes to block posts (other than your own). I also agree with the recommendation @surfdude29 made about disinformation and other bad actors: quote post with screenshot if you need to respond.

More generally, I think the current reporting/flagging mechanisms suffice for cases like disinformation. In contrast, I think blocking should be optimized for self-moderation of things like harassment. The difference is that harassment needs a more timely and thorough response than disinformation.