Matrix

What is it?

Matrix is a next generation communication protocol with the end goal of being an open standard for secure, decentralized, real-time communication. Part of what makes Matrix interesting is how the protocol was designed with bridging in mind, and one of these bridges is for IRC. AfterNET has decided to stand up our own federated Matrix home server with bridging to the IRC network to expand on available ways to communicate / participate through the AfterNET community. Think of Matrix as basically Slack / Discord, only its open in both its protocol and source, it also permits federation with other servers / communities.

Matrix is in active development and items and names of components may change over time, for progress reports you can view their This Week in Matrix blog posts.

What do I need to do to use the AfterNET home server?

Before you can use the AfterNET home server you need to have an account with us. Currently you can do this by registering an account with our IRC services. Once you've done this your options include:

  • Element - Web-client built by the roughly the same team behind Matrix.
    • NOTE By default they use their home server, in order to use ours click Sign In, then click Change and make sure https://matrix.afternet.org/ is put in for the Homeserver URL
  • Element-desktop - Same but packaged as an electron app so you don't need to go to their website. See note from above as well.
  • Our own hosted instance of Element - Same as above but configured for our homeserver by default.
  • Android and iOS versions are also available.
  • There are multiple other clients available but Element is the most feature-rich due to it being from the same team as Matrix. You can view a list of the other clients here.

First Login With Element

Because Matrix aims to be secure one of the first things it will do the first time you log in is to setup your security key. This will just be another password used in the event you need to restore your key should you lose it due to data loss or corruption. You can also use it to verify your login if you're doing a second login via another computer or mobile device (cross-signing).

Getting Around

Once you get in you'll be greeted by a message telling you to find a room or begin a room. In order to search for rooms go ahead and click on the room explorer icon: A window will open showing all publicly listed rooms on the homeserver:

By default you are seeing all rooms listed on AfterNET's homeserver. We also have our web client configured to allow you to view the rooms on Matrix's homeserver and other clients can add different servers as well. To do so click the dropdown Matrix rooms, for our hosted Element you can select matrix.org and view their rooms or you can select Add a new server and enter a server such as Mozilla's server at mozilla.org

Create A Room

Creating a room is pretty straightforward. You can do this from two locations, the Room Explorer (public assumed) and the + (private assumed) next to Rooms on the left-hand side.

If you create a room from the Room Explorer the following screen appears as it will assume its a public room, it allows you to set the room name, the topic, whether it will show in the explorer or not, the room address / alias, and under Advanced whether or not you want users from servers other than afternet.org to be able to join (this can only be enabled, not disabled)

If you use the + to create a new room it will assume you are attempting to make a private room so the following screen will appear. In addition to making it public or blocking remote homeserver users it will also default to enabling encryption on the room. Encryption and remote homeserver are one-time options and cannot be changed after they are set.

Room and Account Names

  • Matrix rooms utilize the following format, also called an alias: #roomname:homeserver.tld A room must have this set in order to be public, otherwise it is assumed to be private and invite only.
  • Matrix accounts utilize the following format: @account:homeserver.tld
  • AfterNET IRC bridged rooms utilize the following format: #irc_#channel:afternet.org
  • Other bridged networks and their room formats are available here.

Matrix's core team started off using IRC, as a result getting around or running rooms is fairly similar. If you want to join a room its /join #room:homeserver.tld, to leave /part. If you wish to send a direct message to someone use /query @account:homeserver.tld

Managing Rooms

Matrix breaks users down into three categories for room members: Administrator, Moderator and User. To tell who is what level simply look at the member list and their status will be on the right side of their name in Element. The categories are also denoted by a numerical value of 0-100 called Power Levels: 0-49 - User, 50-99 - Moderator and 100 - Administrator. These power levels come into play when configuring a rooms roles and permissions.

When you create a room you are by default a room Administrator but do be careful when changing power levels especially on yourself. If you were to lower yourself from 100 to anything less you cannot get 100 again and AfterNET staff will not be able to do so for you as well due to the federated nature of Matrix. You will need someone else in the room who is an Administrator to set you back to 100.

The IRC bridge on AfterNET is currently setup so that +o - 100, +h - 50 and +v - 1. If you are concerned about unauthorized users gaining +o and being able to wreck the matrix room note that the bridge does not allow room setting changes over the bridge aside from the room topic.

In order to modify a room's setting, in Element, click on the gear icon in the top right which will open the room settings.

General Settings

This tab contains all the generic room settings such as name, topic, icon, you can also add the room alias, make the room public or private on the room explorer, flair from communities (still under heavy work), enable/disable url and image previews for yourself or as a default for new members joining the room and leave the room.

Security & Privacy

The next tab, Security & Privacy, determines who can join the room, who can read the history of the room and whether or not the enable full encryption (you can only turn this on, it cannot be turned off) Do not enable encryption on rooms that are bridged to IRC as this will make the bridge in that room fail to function.

Roles & Permission

This tab is where you will define who can do what in your room or the room you are managing. This is also a way to reference who has what power levels that is non-default (0), by selecting custom level you can set a power level value different than 0, 50 and 100.

Notifications and Advanced

These final two tabs are more for you and advanced users. Notifications defines the notification sound you'll hear if you get one on this room. Advanced will show you the current room version, the room's ID on the server and the dev tools which will give you a deep dive into the room's current state and settings. You should avoid devtools unless you know what you are doing.

Room Members / Users

Users in Element are listed on the right-hand side for the room. Clicking on a user provides more information on that user as well as commands you can do that will affect the user, ie: kick / ban. Depending on room settings and your powerlevel you can also mute and remove recent messages from a user.

Normal users can view this as well, however the Admin Tools will not be available to them. This is also where you can set a user's power level, simply click on the edit icon next to the level.

Verify sessions allows you to confirm that this user is who they say they are.

Other Room Items

Commands you can use to manage the room:

  • /op <user> [PL] - Gives the user power level 50 unless another PL is specified.
  • /deop <user> - Sets their power level to Default (0)
  • /kick <user> [reason] - Removes a user room the room
  • /ban <user> [reason] - Bans a user room the room
  • /unban <user> - Removes a user ban
  • /topic <topic - Sets the room's topic

Your User Settings (Element Client)

In order to manage your settings you can simply click on your username in the top left to bring up a menu. Notification and Security & privacy are both quick links to tabs under All settings, feedback is for the Element developers.

General

In this tab you can change your display name (by default your full account name is used), your avatar, change your password, attach an email / or phone number to your account so other users can use that to search for you in addition to your account or display name.

Also in this tab you can set your language and region, for advanced users specify your identity and integrations servers or you can deactivate your account. Note that deactivating your account will render it no longer usable on the AfterNET homeserver.

Appearance

This tab allows you to customize the look of Element.

Security & Privacy

This tab shows you a number of security related items including:

  • All currently logged in sessions with the ability to close them out (requires your password).
  • Allows you to establish key backups. This is required if you want to view old encrypted messages.
  • Setup and reset cross-signing between devices.
  • Allows you to import and export your keys. This is required if you want to view old encrypted messages.

Help & About

This tab has a core button that you may need to use if Element glitches and that is the Clear cache and reload button. This does not affect your keys or your key backups.

This tab also shows you the current version of Element as what as what servers are in use.

Flair, Preferences and Voice & Video

  • Flair is for Matrix communities and allows you to display the icon for it if a room is configured to show it. Presently communities is not very usable, however the Matrix team has stated a rebuild in forthcoming to make it more usable.
  • Preferences is just generic settings for Element
  • Voice & Video configures the VoIP aspect of Element as Matrix is able to handle voice and video calls. Calls are made through Jitsi.

Bridges

Things To Know Going In

  • The IRC bridges are managed by the homeserver operator they are attached to, ie: AfterNET manages the bridge to the AfterNET IRC network and matrix.org manages the bridge to the Freenode IRC network.
  • Nothing is perfect and this is no different. The bridge may from time to time exhibit odd behaviors such as communication going only one way, that is to say a user may send a message to a bridge room from the Matrix side but it wont make it to the IRC side or vice versa. This is a known issue with the bridging software.
  • Lag exists. Due to the way the homeserver and bridge service communicate it can take a little time for messages to process, it has been observed that this can take up to five minutes. This is likely due to a limitation in both the homeserver and the bridge software.

@appservice-irc:afternet.org

This is the virtual control user the bridge uses to communicate with you and you with it. When you join a room that is bridged to a IRC room the bridge will make a virtual user with your name and connect it to the network. Once this is done in addition to joining the IRC room you will receive an invite from this user, accept it so you can control your IRC side. Once you accept the invite it will put you in a room named AfterNET IRC Bridge status for the AfterNET bridge.

Once in the control room you will receive status messages from the appservice user such as connection state. You can also issue commands from this room, type !help in the room to see a list of what you can do.

For AfterNET bridge users that are logged into the AfterNET homeserver you'll notice one of the commands is the !storepass for authenticating to a IRC network's Auth/NickServ. You do not need to use this as we have modified the bridge so that if you log in and you're a AfterNET user you'll automatically be logged into your AuthServ account.

Bridge Rooms

As stated earlier, the name format for bridged rooms on AfterNET IRC is #irc_#channel:afternet.org. So for example #linux on AfterNET IRC goes by #irc_#linux:afternet.org on the AfterNET homeserver.

Rooms not listed in the Room Explorer can be joined by doing /join #irc_#channel:afternet.org in your Matrix client.