A better system for communication

I’ve been a privacy advocate for quite a long time. In that time, I’ve used countless tools, applications and even written my own systems to facilitate communication and transfer of information. For over three years I’ve been using Signal and various other tools to communicate with family and friends.

While some applications we’ve tried the interface didn’t sit very well or was more complicated than they wanted to set up (eg. Ricochet). No system is perfect, that is certain and for the longest time I never branched out to find any alternatives. That ended last month.

Enter the Matrix

An oddly satisfying name for an incredibly useful protocol. I stumbled upon Matrix after doing extensive research and decided to give it a try. In order to give Matrix a proper trial I spun up a virtual machine with 2 GB of RAM and 20 GB of SSD storage space and setup Synapse on Docker. I used a variant of this docker-compose file to create it with traefik for LetsEncrypt SSL.

That’s set up the backend, but in order to engage with Matrix we need some sort of frontend. For this, I picked the popular Riot client, Riot’s sleek and beautiful user interface is very attractive and functional at the same time. I decided to set up Riot in Docker following these steps and it was very simple to do. I configured it to link on riot.$domain and Matrix on $domain root directly. I purchased a brand new domain for this.

Once this was all set up, I created my account and got connected to my federated instance. It was simple to do and I played around with some channels locally. The power of the channels reminds me of Discord and IRC meshed together but not exactly the same. Like all federated systems, you can connect to other channels on remote servers, this meaning I can join my instance $domain and connect to #matrix:matrix.org for example. This allowed me to communicate on the #matrix channel on the matrix.org server without needing to have an account there or be connected to that server via my client.

From here I can communicate and interact with other users, not just in group chats but even direct 1-on-1 conversations can be done with this through federated servers. At this point, I stepped back and reviewed my list of requirements I had in my head:

User Friendly Privacy-first approach Open Source Easy to set up and maintain

This met all of my checkmarks, and while it will be a bit of work to get my friends and family fully converted onto Matrix, it’s a tipping stone to begin. While researching and trialing Matrix, I noticed many regards it as only a communications platform and while that’s true to a degree it’s not a limiting factor of Matrix.

Matrix is capable of communication, VoIP and can have many practical usages outside of directly communicating with people. There’s been projects to create blogging systems, RSS feeders, server notifications and more. The French government even decided to use Matrix as their official communications platform in 2018.

One of the nice features I love about Matrix is the bridging. Matrix lets you bridge other platforms (Slack, Discord, IRC and many more) together, allowing you to communicate via Matrix to any one of these platforms. This is excellent when you have a very large community you want to communicate with, you can bridge the platforms together and not need millions of programs open to communicate — just one, Matrix.

It’s also important to note that the team behind Matrix does AMAs on Reddit (like this one) and is very vocal about privacy, security and ensuring transparency of their protocol and affiliated applications. While no threat model is 100%, I feel confident in having my friends and family communicate with me encrypted over my self-hosted Matrix homeserver (synapse).

Now, my questions for my readers:

Have you ever used Matrix and Riot? Did you enjoy Matrix/Riot? Are there any better alternatives in your opinion to Matrix?

Thanks for reading this post and I hope you found some useful information from it. I’m going to keep up my journey with Matrix. I’ll make sure to update this post as necessary and create another post in a few months to recap and review my initial assessment.

Until next time, cheers!