Edit: I thought I was clever, but I wasn’t. See next message.
Hey, just wanted to share something I figured out… I am using Discourse as the forums on an existing member site, and on my existing site, members can block each other. When user A blocks user B, both users A and B can’t see each other, can’t interact, etc.
I needed the same functionality to carry over to Discourse. I have been racking my brain to figure out how to do this and I believe I finally got it sorted:
I set up a Discourse webhook to receive events, so I can capture the user_logged_in event.
When a user logs in, I walk through their ‘block’ list on my site.
For each other member they’re trying to block, I use the Discourse API (note that this has nothing to do with SSO!) to “Ignore” the other user.
And here’s the clever part: I also tell Discourse to have the other user ignore the main user logging in. In other words, both User A (who is logging in now) and User B (who is on User A’s block list) “Ignore” each other.
Note that when I send over the “Ignore” message, I actually have to check that they are at least TL2, since “Ignore” is only a TL2 feature – if they aren’t, then I have to quickly upgrade them to TL2 before I can complete the “Ignore.” Upgrading a user to TL2 causes some other side effects (discobot advanced script starting, badges being awarded) that I had to deal with.
Oh, and I hide the “Ignored” list in the Discourse user profile (just simple CSS), since there is an interface on the main site to manage blocked users. I don’t want my Discourse members to see the Discourse ignore list at all.
Hopefully this helps other folks who need this kind of functionality…
So here’s the problem. The “Ignore” feature in Discourse doesn’t completely hide the other person. It makes their messages invisible (and actually does a really brilliant job at that)… and replaces them with a link that says ‘VIEW x HIDDEN MESSAGES’… this is something I can easily hide with CSS, so no big deal.
BUT! If someone has quoted a blocked user, you still see their avatar and name (but not any of the quote itself) on the message, and you also still see their avatar and name in message reply indicators. Crap.
That means that if User A blocks user B on my site… and I do the double-ignore trick (ignore in both directions) as I described in my previous message… then user B (who never themselves blocked user A) is suddenly seeing some weird stuff where User A is posting on the forum. And can figure out that User A has blocked them. So now that reveals private information (who user A has blocked) to user B. Which on my site is not good… at all.
So I guess I’m at the point that I probably need to learn RoR finally and write a plugin that extends the existing “Ignore” functionality to really, really erase all traces of a user on an ‘Ignore’ list. Then I can go back to my double-block idea…
Right, Discourse’s ignore feature isn’t really a full block feature (which is why we don’t call it block!). It’s more for the cases where someone might not be violating community guidelines, but they’re just a bit of a thorn in your side.
The ask for a full block feature has come up before, but we’ve generally approached it as:
So, warning, very minor defensive rant coming up here, not directed at you as much as all the people who have told me I don’t need blocking…
I have done hands-on community management for a zillion years (even back when I worked for AOL, CompuServe, and GEnie doing community stuff in their message boards and chat rooms). Now I run a community site of my own. Forums are a part of the site and where a lot (but not all) of my site’s community interacts.
I totally and completely get the reasons why blocking isn’t great… I get it. I really do. I read every message I could find here on meta.discourse. I saw the people pleading for Ignore, I saw the debates back and forth about why it’s not a great thing, and I saw when y’all finally capitulated and added it to the software.
In all of this, I think some folks forgot that not everyone is running a site that is only Discourse/only a forum-based community.
In my current situation, I already had a strong community on my site before Discourse came along: not only in my previous forums (with their crappy old software), but also with the chat room feature on my site (which has its regulars and its own community that overlaps with my forums) as well as other community-centric features on my web site.
And for better or worse, my site has always offered the ability to do a “full block” of another member. Partly due to community issues, partly because the community I serve expects that I will be VERY sensitive to their privacy for a number of reasons, including legal concerns (seriously).
Asking the question “is blocking a good idea?” isn’t the right question for me to be asking at this point. Even though I personally don’t love the idea of blocking, that ship has sailed.
(A little more context: my old forums were pretty toxic due to decisions made by the previous owner of the site. Part of the reason people demanded a 2-way block is because of the crap in the forums. As part of my upgrade to Discourse and unveiling all-new forums, I’m also working on helping repair the damaged forum community.)
Again, to be crystal clear, I totally understand why blocking is generally not a great sign of a healthy community. In fact, I’m working on trying to get my members who were previously block-happy to chill a bit.
If I were starting a brand new community, I would absolutely start with Discourse and wouldn’t need two-way blocking.
If I had a site that didn’t already have two-way block available (or I wasn’t upgrading from forum software that previously supported two-way blocking), I wouldn’t need two-way block in Discourse.
If my current forum community wasn’t already damaged, I wouldn’t need two-way blocking. But they have had some terrible experiences in the past that have demanded the blocking feature, which I had to implement. Now making the change to Discourse is a big shift that is shaking up the community already (it’s a lot different than what I had so it’s a process), and it’s not the right time to also say “oh and by the way, we’re dropping blocking.” I’ll have a revolt on my hands.
Anyhow. I apologize for the length of this reply and I hope I don’t sound too defensive. I just don’t want to get pulled into a philosophical debate about blocking and why it’s Not A Healthy Thing.
I still need a full-block feature.
I sincerely and truly appreciate all feedback and help! And part of the reason I’m posting all this (and taking the time to write out this crazy-long message) is because I am trying to contribute back to the Discourse community.
Let me end with this: I know Discourse doesn’t exactly offer what I am asking for right now. But it’s close! I’m not trying to convince the Discourse team to add it to the software (that conversation mostly started and ended long before I got here)… but I am trying to accomplish my goal with the pieces I have in front of me… and asking for help from the smart, clever, creative thinkers and coders I’ve seen around here… and sharing what I discover along the way with others.
I agree with many of your points but just want to comment on this…
Not having an automated block feature is fine on small to medium sized forums but it is imo a must for large platforms.
This is, amongst other things, because more members equal more posts which potentially equal far more interpersonal issues developing. While a team of 10 moderators could easily ‘moderate’ forums with 10/20/30,000 members, as the member base grows everything else grows art a greater pace - more voices > many more posts > many more issues.
This is a major reason all the large social network platforms offer blocks. Another reason is from a legal standpoint - if someone reports they are being bullied by another member and the site does nothing about it (perhaps because they feel no bullying is occurring “it’s all in their mind”) but then that user commits suicide, the site could be liable. If somebody genuinely feels someone is bullying them then that’s how they feel - it doesn’t matter what you or I think. What matters is we have a duty of care towards members and one of the best ways to stop them feeling like that is if we cut that interaction - which is best done by allowing them to block people who are causing them distress themselves (or sometimes us imposing this on them).
The days of being judge and jury have long gone - and neither should we have to be. It’s not down to us to decide what is or is not causing others distress.
This is actually why I also think we need more modern moderation tools - moderators shouldn’t be put in the position where we are having to edit people’s posts (which most often see as censorship) if they are unacceptable we should just be able to remove them from view and ask them to edit it, with edits then put in a review queue.
Extremely well said. (And this is not necessarily a hypothetical: for my particular community, we have had to get law enforcement involved in the past.) Thinking about situations like this, and giving members the tools to manage themselves, are critical… and I would argue, critical for anyone running a good community site.
I agree, an option like that would help enormously. In general we will never edit someone else’s post on my forum… for these exact reasons… our members would be super touchy about us messing with their words. Right now the only options we have with Discourse for dealing with problematic content are to (a) delete the message or (b) not delete the message. It’s a little blunt force and “when all you have is a hammer, everything looks like a nail.” (I also understand that this conversation about future moderation tools is probably best for another topic…)
This is what we’re being pushed to do - but the reason we must either edit the post or delete it (not ideal for lots of other reasons) is because if the post is demeaning or less amicable than we’d like towards another member, then it’s better to remove it before the other member sees it. Once they do, the window of opportunity to prevent interpersonal issues from developing closes, and the beginning of a downward spiral begins. This, over time, impacts far more than just the two members involved.
Try flagging a post as “Inappropriate” but using the “Take Action” button instead of “Flag Post”. The post will be hidden and the user will be given a chance to edit the post to be more acceptable, after which the post will automatically unhide.
The only thing missing here is to pop a review item for the edit.
Yeah I think the flag system would be great for this. Apart from the above, it would be ideal to also include ‘recommended changes’ or some sort of message that can be sent to the user (perhaps compulsory if the flag has been sent by a moderator or when they action it in the review queue).
No, that won’t be happening. If hardcore block* (which has never historically been a forum software feature anyway) is a written in stone requirement, you should switch to different free open source software. Sorry!
That being said, I think an API based mutual ignore is a fine workaround for the moment.
* block, meaning “additionally, this person can no longer see my posts” on top of “I no longer wish to see this person’s posts”
A funny side effect of my “mutual ignore” trick is that I get a LOT of these emails now. Like, dozens. Is there any way to supress them? I am sorry to see them go (I think they’re super useful to help sniff out potential community problems) but since I’m having to co-opt the “Ignore” feature to make my blocks work, these notes become an unintended side effect.