1 Year Using Matrix and Riot

After using Matrix + Riot for a little over a year I wanted to share my opinions on the current progress and state.

If you haven’t used Matrix before, It’s a newish instant messaging protocol which supports many features you would expect from an IM platform today and it is also federated allowing anyone to set up their own Matrix “homeserver” and message anyone else using Matrix.

I’ll just explain some of the common terms relating to Matrix:

When I started using Matrix back when Riot was called Vector, I found it really uncomfortable to use. It was lacking the level of polish that every other IM app had. And it was also lacking most of the features other apps had. Over the years Matrix has gained almost all the features I want and technically in it’s current state it does everything I need.

I want to preface this part by saying that the developers on Matrix have done a really good job so far. I have pointed out a lot of negatives of Matrix and Riot in it’s current form but it’s by no means bad software. It just has a way to go to improve the UI and speed.

Riot supports so many things from text messages to video calls to encrypted groups chats but the problem is while it has all of these features, most don’t work really nicely. When I say that I don’t mean that riot works terrible, it’s actually quite functional and pretty bug free. The problem is mainly the UI is so far behind the competition like telegram, discord and slack that while Riot has all the same features, they just aren’t comfortable to use.

This has improved a lot since a year ago but there still needs to be a massive change in the UI design to make it comparable to the competition.

Another huge issue is how painfully slow the client is. Simple tasks like switching between groups takes up to a second where as on telegram this action finished before my mouse button has finished lifting back up and slack isn’t too far behind. Starting up Riot on web and mobile also takes a painfully long time which can be up to a minute just to get from the splash screen to the app. No other app on my phone even has a loading screen because they all load just about instantly.

Now with those issues out of the way I’ll touch on what it’s like to interact with Matrix as a developer.

Interacting with the Matrix client-server protocol is a joy. The protocol is based on top of JSON and HTTP making it trivial to use from just about any language. Sending a message to a room on Matrix can be done with a single line of bash using curl.

The Matrix protocol is also very extensible and can be used for much more than just IM. Each message starts with some basic fields like the sender, event ID and destination room but then there is a block for content and a content type. Many content types are defined in the spec including messages, join/quits, images and other kinds of events you would see in an IM client. But this content block can contain any valid JSON so you are free to build your own protocols on top of Matrix. An example being IoT device control by sending events over Matrix. This ensures the transmission of commands is secure and encrypted without having to implement anything yourself.

Over all I am very excited for the future of Matrix and Riot and I will continue to use it and follow it’s development. The design and specification for Matrix currently are great. The client needs a LOT of work on the UI and speed but once that comes through I feel Riot/Matrix will be perfect platform to recommend to those looking to switch away from proprietary and privacy invasive messaging services.