What I want to see in a chat program for large groups
Posted on: Tuesday, 22 Apr 2025
For posterity, this rant is coming out in early 2025 as matrix is being hit with increasing amounts of spam waves and people keep asking why I don't like irc or xmpp. Here is a list of features I need in a chat program to consider using it to host a medium or large community. For most of the features on the list, I don't care how they are implemented. Many chat programs implement some of these under different names.
What I don't need (what is my threat model)
When I'm looking at a chat program for a community, all rooms will be public and open. Anonymous and private chat programs provide no benefit here and are usually a detriment for moderation. Encryption only matters for direct messages.
What I do need
Client support
I and my community need full-featured clients with support for the following platforms
Mobile
- iOS
- Android
Desktop
- Windows
- MacOS
- Linux
- OpenBSD
Web
- Firefox
- Chrome
- Safari (macOS)
If the client is open source and a standard graphics library (QT, GTK) is used, the OpenBSD port will likely be provided by the community, a first-party port isn't necessary. If the client is closed source, full platform support must be provided.
Bonus points for a terminal-based client.
Note: discord, matrix, and xmpp all fail this requirement. Many others also fail this requirement.
Multiple device support (with sync)
First-party transparent automatic sync between multiple devices must be supported. This must be able to take place when any amount of clients are offline.
Note: irc and simplex fail this requirement.
(Mobile) notifications
Push notifications to mobile are required on all supported client platforms. Desktop notifications should also be supported. Bonus points if notification state is synchronized (clear on read from secondary clients).
Note: irc and xmpp fail this requirement.
Moderation
The following moderation features must be supported:
- Removing users from a group, temporarily or permanently
- Removing users from a community, temporarily or permanently
- Removing messages from a user (signal does not support this)
- Removing all messages from a user (most fail this without third-party moderation tools)
- Purging media uploaded by a user, both client and server-side (most fail this)
- Ignoring a user
- Preemptively blocking users from a group or community
- Synching moderations states/settings across all groups in a community
Note: irc and signal cannot remove messages from users. Matrix cannot purge media without a full cache wipe of all clients and servers.
First-party media upload
The chat service and clients must support media upload (picture, video, generic file) and download, and in-line preview of pictures must be supported. The media should be stored on the chat service servers rather than a third party. Control of media on the server must be supported (retention and deletion).
Note: irc and matrix (server-side) fail this requirement.
Encryption
If message encryption of any form (E2E, etc) is supported, key management and signing must be processed in-band. Messages in these communities are a mix of synchronous and asynchronous. Many clients will not be connected, so this must be implemented to support multiple device synchronization for a user.
Note: matrix fails this requirement.
Tags: chat review