On Matrix

Why am I creating this post? Because I have been trying to move people to the matrix ecosystem but they’re always apprehensive to do so. They tell me “it’s complicated, too hard”. This might be because, while I tell them how to use it and how to create an account, I also tell them the ethical reasons of why using a decentralized fully Free-Libre-Open-Source-Software (FLOSS) service is a better alternative than proprietary applications (such as whatsapp). At the end of my monologue, they just see a wall of text and they lose interest. From now on, I will just link them to the relevant areas of this post. They may choose to read it all, or just the “how-to-use-it” parts.

What is matrix?

Matrix is “an open network for secure, decentralized communication”. It is FLOSS. An easy way to understand matrix is to do an analogy with the email network. One can create an email account on one provider and communicate with one that has an account in a different provider. For example, a gmail user can easily send/receive email from an hotmail user. The email network is thus decentralized. Matrix functions the same way! It can be used for 1-on-1 chats (SMS like), multi-group chats (like whatsapp group with several people), or even rooms (think of IRC rooms).

Note that not only is matrix an alternative to whatsapp, it is also an alternative to slack and/or discord. If you wish to use matrix as an alternative to slack, check out communities.

Matrix has even been chosen as the platform for internal messaging in the French government. See more here.

What are some of the advantages of matrix?

For one, it helps avoid monopolies and monopolies are dangerous. Another reason is that you can more easily hold/manage your data. Using the email analogy, if you are not happy with gmail having your data, you can host your own email server and everything will be stored locally (other than the emails you send to other people, of course). This has security and privacy implications. If you are using a given server because “it was the best one” at the time but at some point in the future said server decides to behave badly, you can move to a different one or just host your own. You are free to choose who handles your (meta)data. Matrix is not a walled garden!

Another cool thing about matrix are the so called bridges: they allow interoperability. From a matrix client/account, one can talk to users using other platforms. For example, using my matrix account/client I can communicate with users in the #linux channel on the freenode IRC server.

Last but definitely not least, matrix supports end-to-end encryption (E2EE). Messages are encrypted client side and only the communicants can decrypt and thus read them. This E2EE is only available when both/all users are in the matrix platform. Using E2EE is a must for anyone who wants privacy and security.

Important notice: E2EE is not yet enabled by default. You have to go to the room’s settings and enable it. Also, only message contents (attachments also) are encrypted. Metadata is not encrypted!

What are some of the disadvantages of matrix?

The main disadvantage is that it is not massively used. You will probably not find your friends on matrix. Someone needs to be the first to make the move though, why not you?

Another disadvantage is that metadata is not encrypted. Metadata can tell a lot about your interactions. With whom you communicate, how often, at what time of day, etc, can tell a lot about you. Matrix is, however, decentralized so you can diminish the metadata issue by hosting your own matrix homeserver or creating an account on a trustworthy instance.

But why is privacy important? I have no secrets

Talking about FLOSS, decentralization and E2EE eventually leads to talking about privacy. There are two quotes that sum up my opinion on the whole discussion. One is a poem called “First they came..”. It goes like this:

First they came for the Communists
And I did not speak out
Because I was not a Communist

Then they came for the Socialists
And I did not speak out
Because I was not a Socialist

Then they came for the trade unionists
And I did not speak out
Because I was not a trade unionist

Then they came for the Jews
And I did not speak out
Because I was not a Jew

Then they came for me
And there was no one left
To speak out for me

And the other is a quote by Edward Snowden:

Arguing that you don’t care about the right to privacy because you have nothing to hide is no different than saying you don’t care about free speech because you have nothing to say.

How to use matrix?

The steps to start using matrix are as follows:

  1. Create an account on any matrix server;
  2. Download a matrix client (or use the browser);
  3. Use the client to login to the account created on point 1.;
  4. Add other people and start chatting;

Let’s go step-by-step now.

1. Create an account on any matrix server;

So, as already mentioned, one can create a matrix account on a number of servers without losing the ability to communicate with any other, as long as they are in the matrix ecosystem. You can see a list of some of the available matrix servers here. I personally use and recommend feneas.org. If you wish to use feneas.org, you can create an account here. You can also, of course, create an account on the flagship instance, matrix.org.

In the matrix ecosystem your account is of the form “@user:server.tld”. So, if you created an account on the feneas.org instance, your username is @user:feneas.org, where “user” is the username you chose. If someone asks you for your username, this is the info you need to give.

TLDR: Go to https://chat.feneas.org/ and create an account.

2. Download a matrix client (or use the browser);

In order to start chatting, you need to use some sort of client/software. There are many clients available, as you can see here. Sadly, clients that support E2EE are still lacking. The main client is an electron client called riot. You can start using riot by going here and downloading to your platform. Riot is available for browser/windows/mac/linux as well as android and iOS.

For the desktop, there is also nheko, that supports (some) E2EE (attachments are, at the time of this post, still not supported). There is also fractal and quaternion. None of these last 2 support E2EE yet.

For android, there are also several clients in the making, such as pattle and riot-X. However, they do not support E2EE yet, so you have to use either riotX or miniVector

TLDR: For now, riot is the client that is most recommended. You can use it on all platforms. Go to https://about.riot.im/ and download riot for your platform.

3. Use the client to login to the account created on point 1.;

This needs no explanation. Remember, however, that not all homeservers are the same. You might have to change the homeserver URL on your client. If you created an account on feneas.org, your homeserver is https://feneas.org. If you created an account on matrix.org, your homeserver URL is https://matrix.org.

4. Add other people and start chatting

This also needs no explanation. Remember that your username is of the form @user:homeserver.tld. I should also mention that you can associate an e-mail and/or phone number to your account.

You can also decide to join public rooms. You can find a list of public rooms here.