Skip to content

Instantly share code, notes, and snippets.

@dsernst
Last active April 11, 2025 20:00
Show Gist options
  • Save dsernst/2683f411a9c08d30a68aa4d80041b102 to your computer and use it in GitHub Desktop.
Save dsernst/2683f411a9c08d30a68aa4d80041b102 to your computer and use it in GitHub Desktop.
Better group chats

signal-mod-tools

Better group chats

The Catalyst

Friend asks: Wanna be a co admin of $one_of_our_signal_group_thread?

My reply: Not especially… but I am interested in building decentralized moderation tools for signal

Them: That sounds interesting

My feeling is group chats struggle with two possibilities:

Either: a) No one does much moderation — individuals are unclear if others are as bothered, maybe afraid of seeming too controlling — and so one or two people struggle to read the room, send a bunch of non-stop obnoxious messages, the majority of other people build up silent resentment, and the quality of the group vibes falls off hard.

Or: b) one or maybe two people do take it upon themselves to be the room’s (hopefully) benevolent dictator, and decide to call out the obnoxious offenders for their shitty messages. But then sometimes maybe the power goes a little to their head, or they just make questionable decisions that aren’t actually widely supported, kick people because their personal feelings were hurt in an argument, etc.

Case (A) is like the “wiser” people too full-of-doubt to take unilateral action.

Case (B) is someone decides enough is enough, but ruins the channel with too strong actions, kicking people a little unjustly, which has its own negative chilling effect.

So, what I’d personally really like is basically two solutions:

  1. Easy-to-use ways to give offenders “time-outs”. Not perma kicks, but like:

    “hey, you can stay in the room to read but refrain from posting anything for ${duration}, or else you’ll be auto-kicked. After ${duration} you can post again like normal and you’ll be invited back if you were kicked.”

    Where $duration can be escalating times like 10 min, 4 hours, 24 hours, 4 days, 2 weeks, 1 month, 1 year.

  2. Ways for group members to cast secret votes, on whether the accused deserves the punishment or not. Secrecy lets people really vote their conscious, not be afraid of the offender getting pissed at them.

With all the rules clearly visible, possibly configurable by admins.

Unfortunately my sense is Signal-the-org is pretty reluctant to add first party support for such tools directly into the app, but I think it’s all still possible to implement with chatbots, then rooms can choose to add the moderation bots whenever they want.

If we could show that it’s a useful addition even in the worse UX of chatbots, it could eventually “graduate” to proper first party support.

It’s basically the millennia long struggle of social group theory, runaway dictatorships, coordination problems, and democratic innovations — like ancient Athenian Ostracism — reinvented for cyberspace

@arianabuilds
Copy link

arianabuilds commented Feb 16, 2025

Love this. Great proposal!

Re: "Ways for group members to cast secret votes, on whether the accused deserves the punishment or not. Secrecy lets people really vote their conscious, not be afraid of the offender getting pissed at them."

Could a “chatbot” from siv.org take on the role of election admin instead of a person? This maybe can keep the initiator’s identity private, avoiding any awkward tension between them, the “offender,” and other group members. Perhaps the initiator could privately message the bot with the election details, and the bot could automatically set up and manage the vote, appearing as the election admin. This would maintain anonymity for the person who initiated the vote. I’m not sure how easy this is, but I think it could be a neat way to keep even the initiator's identity confidential. Thus, making this process more frictionless.

@dsernst
Copy link
Author

dsernst commented Feb 16, 2025

Yea — DMing the bot privately could allow bringing a vote without revealing the initial proposers identity.

It does open some slight risk of abuse potential there too though, but eg rate-limiting the proposals could decrease that. I could also imagine some rooms might be wary of allowing the proposal itself brought anonymously, perhaps a configurable option.

@npfoss
Copy link

npfoss commented Feb 20, 2025

I agree with the problem and my intuition actually points in the direction of "group chats are not the best structure for medium-to-large groups". I like the moderation model of https://cabal.chat/, but imagine something where everyone has different views into a less-rigidly-structured mass of messages and replies and can choose who sees their messages and who they see messages from. Or put more reductively: old Facebook, kinda

if you're trying to spend meaningful time actually building this lmk, I have pretty mature system designs for such a thing

@dsernst
Copy link
Author

dsernst commented Apr 11, 2025

Another friend's comments:

i think it’s good

as a general feature to be added to signal

i like <Mute for x duration>

should also have kick option

Me:

well admins can already kick

Them:

i mean kick by vote

Me:

ah

Them:

secret voting

Me:

yea

Them:

anyone can launch a vote

they had this on computer game multiplayer servers

also, in addition to muting, which is a little harsh, can vote for a separate punishment where the user gets a banner next to their name saying that they’re gay or something

Me:

ha. a dunce hat?

Them:

oooh another good one is, not muting, but ratelimiting

so, most ppl can you know type stream of consciousness but if someone is being obnoxious, can vote to rate limit them to one message per minute for an hour or something

Me:

yea worth trying

Them:

but yeah i spose kick and temporary mute would be the bread and butter

also, in addition to muting, which is a little harsh, can vote for a separate punishment where the user gets a banner next to their name saying that they suck or something

Or like, it appends to every message that you send “ Oh, and I suck by the way.”

or something like that

yea worth trying

because ppl don’t really need harsh punishment. It’s so embarrassing to get any punishment

They just need like the littlest thing

rate limit them for 1 hr is like, plenty

well, i mean, for adults in a private chat

not like a giant public forum

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment