α

Matrix

information about Matrix and help setting it up

Matrix is a federated instant messaging communication protocol. Email is an example of a decentralized protocol; it doesn't matter what server or account someone sends or receives an email from because they all speak the same language. Matrix is very similar; messages stay internal to a server unless they need to cross onto another server. This is what makes it "federated."

Practically, for the user, this effectively creates a messaging and chat platform that's extremely similar to existing platforms like MS Teams, Slack, Discord, iMessage, Telegram, Signal, GroupMe, and similar, but with zero vendor lock-in. You can use and interact with any server you like, and choose to use any client you like. In other words, it's Discord, but less evil.

In fact, if you stick with the matrix.org homeserver and use the canonical default client Element, it really shouldn't be very different from Discord at all. If you're unsure about this or are just curious, feel free to explore the Resources below. If you're looking for a quick and easy way to get started, just proceed to Instructions!

Instructions

This guide assumes you are using Element as your client and are creating your account on matrix.org, since such a setup is sort of the canonical default. If you'd prefer the official, more detailed version of this guide, you can find it at the Element User Guide page.

Just like with Discord, you must make a couple of decisions here. Element is a web app that can be used in the browser, or can be installed as a desktop and mobile app via Electron (as is the case with Discord). The choices you must make are:

If you choose to use Element in a web browser, proceed to https://app.element.io. If you'd rather install it, you can use the following methods:

Once Element is installed and/or open, you should see a screen that resembles the following.

Element welcome page

Choose "Create Account." From here, you have some options. You can "continue with" (which is a set of OAuth2 options) or you can use a traditional username/password/email credential set. Frankly I'd recommend the later, because not all clients support OAuth2, but all support traditional credentials. If you don't think you'll want to experiment with other clients down the road, anything should be fine.

Once you click "Register," a confirmation email will be sent to you. Proceed from that email. Once you're registered, proceed to log in.

On login, you'll be prompted to "Set up Secure Backup." It's annoying, but I'd highly recommend doing this now. If you don't you may run into issues later. Choose "Continue," then one of the following options. I chose "Generate a Security Key" and can confirm that it works, though I have no reason to think they other option wouldn't. It will generate a key that you must save somewhere you won't loose it!!! If you loose it... good luck.

You should be good to go now! From here, you can use invitation links or give a friend your Matrix id (in the format @username:matrix.org) for them to invite you to a room or space.

User IDs

Discord uses a "tag" of the form @<canonical-username> with implied domain <monolithic-singular-mandatory-server-with-no-escape>.

Email uses an "address" of the form <user>@<domain>[:port].

Matrix uses an "ID" of the form @<user>:<domain>.

Presumably this is to preserve the familiar @user notation popularized by modern messaging platforms. It's important to be aware of this format; if you're asked for your ID (like your SMS number), that's how it'll look. You can find your ID under the profile menu.

Highlighted location of ID in profile menu

In SMS/RCS/iMessage style platforms, you can only be invited to a chat by someone from the inside. In Discord (and probably others like it), you can only be invited by a link. Matrix allows for both. You may be invited to a space or room via a URL, or you may need to give someone your ID so that they can invite you to a space or room. Either way, it's a fairly straightforward process. Speaking of which, what's a "space" and "room"?

Terminology

Room - Short for "chat room" (a throwback to the IRC days) - Basically the equivalent of a "chat" or "channel" (Discord). Can have two members (like a "Direct Message") or many members (like a "group chat").

Space - A collection of rooms with something in common - The equivalent of a "Server" in Discord or a "Team" in MS Teams. Unlike Discord "Servers," spaces can be nested, though disappointingly I've not yet found a way to do so recursively.

Server - An actual server instance implementing the Matrix protocol - Unlike a Discord "Server," these are actual Matrix servers running on a computer or VM somewhere with a domain name (like matrix.org). Think of it more like a Minecraft server. It's an actual program running on a computer, storing and organizing data among clients. More like an email server, messages can remain internal to that server or can cross servers via federation.

Client - A user-facing program to access Matrix - Sadly this concept has started to go away in modern technology, but if you're familiar with the idea of an email client (not just the basic web app client providers tend to offer these days), it's the same sort of thing here. Most modern instant messaging services provide only one first party client and make it mandatory. While Element is the canonical default Matrix client, any client implementing the full Matrix specification should provide a complete experience. That said, Element and its forks are the only clients I know of at the moment that actually implement the full spec.

Roles - Permission levels determining jurisdiction over a space or room - Unlike roles in Discord, this is not a tagging system. It's a linear power heirarchy over a space or room. Basically this determines who can do what.

Resources

If you know of other helpful resources, please let me know and I'll add them.