Software Tips and Tricks

Using Matrix (Riot Client) for 1 year now – The road so far

After using (Matrix) Riot-Client for a quite some time, (over a year from now) I decided to share my own opinion on the current progress and state.


What is Matrix?

If you haven’t used Matrix before, It’s a electron based 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. You can use the default ( server or create an own.

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

  • Matrix itself is the protocol and specification which defines how server to server and server to client communication works.
  • Synapse is the current implementation of the Matrix server.
  • Dendrite is a work in progress rewrite of Synapse aiming for higher performance.
  • Riot is the main client for connecting to Matrix servers although there are other clients, this is the most feature complete one and the one I use.
  • Librem 5, maybe soon for end-to-end encrypted VoIP.

Using Riot on a daily basis

When I started using Matrix back when Riot was called Vector, I found it really uncomfortable to use because 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 year Matrix has gained almost all the features I want and technically in it’s current state it does everything I need like WebCAM/VOIP and some other gimmicks. The developers on Matrix have done a really good job so far. But I think a lot of work still needs to be done to improve the GUI (themes) and the overall speed (server response).

What I like overall like:

  • Works on Linux …
  • and Windows
  • … basically for all platforms!
  • It’s open-source
  • End-to-End encryption
  • Decentralized instant messaging
  • The privacy policy is better than compared to Telegram/Discord
  • The ecosystem seems good
  • Developer friendly because everything is documented and open so you can easily write your own client
  • Access it from any device
  • Have rooms restricted to your own server, impossible to invite outsiders (for sensitive internal topics)
  • Have different chat “rooms” with a different set of participants, a topic, varying permissions
  • Restrict history so that users only see messages after they joined
  • “Permanent” links to a specific message in a specific room
  • 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
  • … and more to come!

Riot supports so many things from text messages to video calls to encrypted groups chats but the main problem is while it has all of these features, most don’t work really nicely which means there slow. The problem is mainly the UI is so far behind the competition like Telegram, Discord or Slack that while Riot has all the same features, they just aren’t comfortable to use. The main reason I use and prefer Riot are security concerns with Discord e.g. it doesn’t support end-to-end encryption so the server owner still can read all messages. However, 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.

Martix has huge potential, even France realized that.

Bridges to IRC, Slack & Co

Matrix allows you to setup bridges, right now it’s kind of complicated and I hope the developers going to simplify this setup.

Theoretically you can setup your room and bridge to Discord, IRC, Signal & Co, keep ind mind that some bridges are unofficial and possible instable while the IRC bridge is official and works more or less well in my tests, only the complicated setup process is really (for now) a no-go.

App usage

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. I talked to the developers and it seems this is a ram/caching issue.

Besides this the web or app versions working same like the clients, every function are given, the stickers and emotes working same like VoIP etc.

Both the app and the desktop versions have ‘analytics’ enabled by default but there forks without it, however you can disable the option if you want to – it doesn’t really matter if enabled or not because the log doesn’t contain any potential dangerous information because everything is encrypted and obfuscated and you can see what is collected because everything is open source.

Developer aspect and potential

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 documentation is almost complete and the rest can be asked in the official channel.

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.

Final Words

Overall I am very excited for the future of Matrix and the Riot-Client and I will continue to use it and follow it’s development. The design and specification for Matrix currently have it’s potential. As already pointed out the client itself needs a lot of work on the UI and speed improvements but once that comes through I feel Matrix will be perfect platform to recommend to those looking to switch away from proprietary and privacy invasive messaging services.

Matrix seems to be the best libre protocol for this kind if messaging, so I’m glad it’s doing well. Consider to make the switch.