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

Desktop

Web

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:

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