When I announced my group chat application, Mentat, on some forums a few weeks ago, a common question was "Why would I use this over the apps already out there?" Fair enough; while I've derived a lot of personal enjoyment from designing this side project from the ground up, that alone can't be expected to attract users. What I'd like to outline in this post is the key feature that sets Mentat apart from other group chat platforms, its intended userbase, and a set of design choices that I consider crucial to the success of an app like this.
The key feature: Tag all the things
Realtime chat solutions seem to fall into two broad categories: business and casual. With a business-oriented app like Slack, users and topics are divided into clearly defined groups or channels. This segmentation of the conversation allows for businesses large and small to keep their chats organized and as free of noise as possible. Importantly, it also serves to exclude users from conversations that they aren't needed on or shouldn't see.
Casual platforms like Facebook Messenger on the other hand are intended to be inclusive, linear conversations where every group user can view every message. The intended userbase is a group of friends rather than coworkers. While Messenger and others have crafted great features for linear group chat, what seems to be lost on the road between business and casual solutions is categorization of messages: a fantastic realtime chat app can fall apart when a user wants to view past messages by a particular topic or category, even with good built-in search features.
Mentat is an attempt to bridge this gap. With Mentat, the goal is to have categorization of messages be as fluid and natural as possible while still maintaining the inclusive community of a casual chat app. It achieves this with message tags (think Twitter hashtags). If you're posting a funny meme in your group chat, for example, you can post the link followed by #meme to have the tag immediately present on the posted message. Alternatively, after you've posted the meme any member of the group can tag your message for easy retrieval later. The conversation continues linearly, but if you're interested in viewing this meme or one posted in the past, you can select the tag and immediately see all past messages tagged #meme. In the same way, a message can be tagged with multiple categories and you can select multiple tags to see an ever-growing list of messages relevant to your current focus.
Mentat is intended for groups of friends, but I can also see a use-case for small teams. In the latter case, creating "channels" wouldn't be this laborious manual process, they would be created on the fly by embedding tags. It eschews the exclusive aspect of traditional channels in lieu of a tight-knit, deeply-categorized linear conversation.
A solid foundation
Tagging is a key feature of Mentat but certainly not the only one. I view some features and design choices as crucial to the success of a chat app:
- Privacy. Users don't want the feeling that someone is staring over their shoulder as they type. A chat app should end-to-end encrypt its messages; I use OpenPGP.js for this.
- Open-source. Some may view this as optional. But how can you gain user trust that you're not harvesting data and that conversations are indeed private unless they can see the source and optionally host it themselves? You can view the source here.
- Link previews. Users want to see where a link leads before clicking. In the case of an image link, the preview suffices without having to click in most cases. This feature requires the server to ping the link first; if you don't want the server to know your links, you can turn this feature off.
- Notification system Users want good defaults for notifications. I used Web Notifications for this, and I'm planning push notifications as the platform expands.