People who know me know I can get stubborn when I get sold on a particular technology. For the past year, my favorite is Matrix, a distributed chat system that addresses pretty much everything anyone wants from a messaging system. The only catch? Not that many "regular people" are using it yet. If you understand why it's so much better than anything else out there, why would you not start using it today?
Riot is the new name for the most polished, easiest to use Matrix app. The first big reason to use Matrix is that you have choice -- there are other apps for Matrix beyond just Riot, it's an entire ecosystem that is still in its infancy. To get started, visit https://riot.im in your browser, and/or download the Riot app for IOS or Android.
What annoys me about SMS
I have to use my phone. A friend sends me a text, and my phone is across the room -- and that's the only place it goes. With Riot, the message appears everywhere -- my phone, my tablet, my desktop, my laptop. All devices see the same history at the same time. I can answer from any device, and my answer shows up everywhere.
We have a friend out gallivanting the world. Nobody has to pay for text messages when you use Riot. There is no question about delivery -- messages may await our friend to get an Internet connection, but you can see how far down he's read, to know whether or not he got the message.
What annoys me about Slack
Slack is a hot new messaging platform for teams to work on projects. It keeps conversations in rooms, has rich media and bot support, and is overall a nice user experience. But it has a couple big flaws. First of all, you have entirely new logins if you interact with different Slack teams -- each group is siloed off with their own logins, you end up juggling a lot. Secondly, while Slack can be used for free, the free versions greatly limit the number of messages kept and the number of integrations you can do with other systems -- so searching history is crippled unless you shell out for a fairly hefty usage fee.
We can self-host our Matrix server and scale as big as we need, while only paying for the cost of our server. Plus, the entire history of a discussion can remain, available to searches in the future.
What annoys me about XMPP and IRC
IRC is a big way that open source projects communicate, and it's really a pretty amazing system. However, being text-only, it's hard to get non-technical users to care about using it. In many ways, Matrix is IRC re-imagined for a media-rich world.
XMPP had a shot at being an open, federated communications protocol with some of the same benefits as Matrix. We had our own internal XMPP server that we used for years before switching to Matrix. It was adopted by both Facebook Messenger and Google Chat -- but these services diverged in what they actually implemented, and nobody ever actually made their XMPP servers talk to outside servers.
Both IRC and XMPP suffer from lots of missing features -- in many cases these could be added to XMPP but because they aren't standard, you can't expect people you're conversing with to be able use. Things like embedded images, sounds, videos, synchronized history, voice and video chat, screen sharing, and more.
What annoys me about Telegram, WhatsApp, Facebook Messenger, Signal, Allo, Wire, etc etc
Every time you turn around there's yet another messaging service. Google has 3 or 4 different incompatible ones all by themselves. They're all trying to build their own big silo and rule the messaging world. All of them are centralized services, routing all their traffic through a single service. And none of them talk to any other service.
This means you have to join the service to talk to your friends on that service -- which means you end up needing to sign up for a bunch of different networks if you want to talk to everyone.
This is the same crappy situation we saw in the early days of the Internet, before the web -- there was AOL, Prodigy, CompuServe, and several other services -- and you could not email from one to another, you could only email other people on the same server.
Can you imagine what email would be today, if we still had those walled gardens? You would need a Gmail account to email your friends on Gmail, an Outlook.com account to talk to your friends there, a Comcast account to email your friends on cable... Ridiculous!
Yet that's exactly the current state of messaging on the web.
Except for Matrix. Matrix is the one messaging system that is making a really strong attempt to bridge to as many different networks as they can. There are already hosted bridges to Slack, several IRC networks, Gitter, and even Twitter and SMS, and bridges you can run yourself for Telegram, XMPP, and it sounds like there may even be one close to working for Skype.
The Matrix and Riot developers see a world where you can use the messaging app of your choice to reach anyone on any other messaging service, and are hard at work trying to make that world a reality.
What can you do with Riot?
Pretty much anything you can do with any other messaging platform.
- Access it from any device
- Have different chat "rooms" with a different set of participants, a topic, varying permissions
- Exchange images, documents, videos, rich text (markdown and HTML supported)
- Have rooms restricted to your own server, impossible to invite outsiders (for sensitive internal topics)
- Show full history of a room to all participants, new participants can see what was said before they joined
- Restrict history so that users only see messages after they joined
- "Permanent" links to a specific message in a specific room
- End-to-end (e2e) encryption, the ultimate in privacy, protect message contents entirely from server operators, governments you don't trust, corporations trying to index your messages and sell stuff to you
- Full room search, find things in your conversations from months ago
- Granular notification settings -- set some rooms to notify on every message, others only when your name is used, others not at all
- Growing number of bots and integrations available to hook up to rooms to synchronize content, notify on events, do whatever else you can dream up
- Run your own server, become completely self-reliant, not at the mercy of an external service
While there are a few cool features not yet in Riot, it's astonishing how quickly it has developed over the year I've been using it.
Things coming to Riot
The few small things other platforms have that Riot doesn't have yet, are all on the roadmap:
- Message editing
- Message reactions
- Threaded messages
- Ability to share encryption keys across devices, so you can read E2E messages from before you logged into a new device
- "Groups" functionality to group related rooms together
- "Pinned" messages
- Deleting rooms
- "read up to message" markers synchronized across devices
None of these are deal-breakers for me -- they will be nice to have when they appear, but I think Riot already is such a great user experience without these features.
What Matrix and Riot does that you can't get elsewhere
If you compare Matrix to any other messaging platform, for the most part you find that Riot can do pretty much anything the rest can do, and generally quite a bit more. Voice calls. Video calls. Screen sharing (secret "easter egg" feature). History search beyond the last 10,000 messages, and even across rooms. Invite users by email address. No need to share your phone number.
There's a few "killer" features, though, that rise above the rest, technical functionality that makes it the winner:
- Group chat encryption. With Matrix's "Megolm" double-ratchet encryption, chat rooms with dozens of participants can be fully encrypted, with no ability for the server to see what's inside. You don't have to trust your host with your private messages -- I would think this is a particularly useful feature for attorneys, accountants, or anybody who cares about their privacy.
- Distributed State Storage. It's not just chat -- we use Matrix right now to track the state of all the sites we manage, and a custom bot that uses this state to decide whether or not a site is safe to deploy. With all the hoopla around the Internet of Things (IoT), Matrix is actually a great platform for orchestrating things like home automation. I'm planning out how I can control things in my house right from the Riot app on my phone...
- Federation. This really is what Matrix has going for it -- it's a new standard that already has been adopted by several smaller projects to allow them to communicate with other systems.
Using a messaging system of any kind is a form of voting. The more people using a particular system, the more powerful that system becomes -- this is called the Network Effect, that the larger the network, the more value it has.
Right now, the largest messaging networks in the US are Whats App and Facebook Messenger -- both owned by a single company, both extreme silos that don't allow other networks to connect, neither capable of anything that you can't do in Riot.
Give Riot a try, and if you choose not to use it, tell me why you're voting for a closed, proprietary communications silo by using it, instead of voting for a future where we can all easily communicate regardless of which software any individual chooses to use. And if you'd like somebody to install and manage your own Matrix server, contact us and let's talk!
[Update: The intial post listed Tox in the section about centralized servers, but it is an e2e protocol that is peer to peer. Thanks for the correction, bb010g!]