Matrix

From Bibliotheca Anonoma

The Matrix protocol and it's chat client, Riot.im, provides modern group chat with the features users expect (chat history, push notifications), but open source with decentralization and federation like IRC. It even has self hosting and full encryption features that can be optionally enabled.

Most of all, Matrix bridges can let you use your favorite one (such as Slack) to chat with other group chats (IRC, Gitter, etc.). Matrix has direct support for IRC, Slack, and Gitter, and bridges can be self hosted to reach Discord, Telegram, Mattermost, Hipchat, and others.

Thus, Matrix/Riot can facilitate the universal group chat: it can unite all these proprietary communities back together again. As IRC's lack of chat history and push notifications make it harder for new users to acclimate, which has caused walled gardens and closed communities like Slack, Discord, and Facebook Messenger to become prevalent. Matrix not only weaves these group chats together, it even provides a modern IRC bouncer to existing IRC channels.

And if you don't want to use proprietary and invasive chat apps, Matrix/Riot (which are open source) can be used to puppet Facebook Messenger, iMessage, Groupme, Hangouts, and others so you can still chat to friends that don't switch.

Main Features[edit]

  • IRC Bouncer - Matrix/Riot can provide chat history and push notifications for supported IRC servers, such as Freenode, Rizon, Snoonet, and others.
  • Bridge multiple group chat channels into one - Matrix can function as a bridge not only to group chats, but between group chats. Thus, a Slack user can chat with an IRC user, a Discord user with a Gitter user, all as if they were on one united group chat channel.
  • Broad Platform Support - Chat, get push notifications, and read chat history from any supported device: Windows, Mac, Linux; Android, iPhone, WeeChat...
  • Self Hosting - You can run your own server and federate it as easily as if it were an IRC server.
  • End-to-end Encryption - Full, multiple device encryption is possible. Although you do have to manage, authorize, and revoke keys, at least unlike Signal this allows your desktop, phone, and second phone to chat encryoted.=

Basic Usage[edit]

  1. Create an Matrix account. This can be done using the matrix.org identity server, or even just your own self hosted one.
  2. Use or install a Matrix client. There are several to choose from, but currently the best is Riot.im.
    • Riot.im (Webapp, Android, iPhone) - The most popular, broad, and best-developed Matrix client at the moment. Supports encryption.
    • Weechat (Command Line) - If you prefer command line IRC clients, this plugin makes Matrix work in Weechat. Encryption is a work in progress.
    • [1] (Windows, Linux, Mac) - A Qt/QML desktop client. Works fine, though encryption is in development.
  3. Join some channels: the Riot.im directory will show you some popular ones. The Bibliotheca Anonoma has a channel, there are many Linux and Programming related Matrix channels, and many other IRC channels are already bridged and accessible.
    • Freenode, Rizon, Moznet, Foonetic, Snoonet, and other IRC servers have direct bridging to Matrix. Other IRC servers will need a puppet or custom bridge.
    • Slack and Gitter have official direct bridges to Matrix. Other group chats are supported, but may need self hosted bridges.
    • Puppets can be used to communicate to Facebook Messenger, Groupme, Telegram, and other users without having to install proprietary apps that have a whole host of unsavory permissions.

Advanced Usage[edit]

  • Matrix/Channel - How to create and run a Matrix channel.
    • Channels created by a bridge not owned by yourself are administered by that bridge, out of your control. Even if your user is opped by the bridge, it might still prevent you from changing the name or adding integrations.
    • However, you can simply avoid this by creating a new channel and setting up integrations. That way, you can invite the bridge bot to your server as your guest, rather than as your master.
  • Matrix/Bridge - How to bridge between various group chats.
  • Matrix/Server - How to run your own Matrix server. Generally necessary if you are also self hosting your own Matrix bridge, or using Matrix Puppets.
    • Like IRC servers, self hosting Matrix servers gives you maximum control over who reads the messages and how it functions. This is especially important if you are running puppets that could have private information: you wouldn't want that on a public server for other users or even an admin to see.
  • Matrix/Puppet - How to puppet your own Facebook Messenger, Google Hangouts, Telegram, iMessage, GroupMe account to use an open source client to chat with friends that still use these protocols.

Matrix/Riot as Implemented at the Bibliotheca Anonoma[edit]

The Bibliotheca Anonoma's core community exists solely on a single group chat system. This group chat originally only used IRC, but has since evolved to support many more group chat systems to fit almost every user.

  1. IRC (2010-2014) - Initially, we solely used IRC on desktop computers to chat, which required users to either leave a computer online all day, have the technical background to use IRC bouncers, or pay for proprietary solutions like IRCCloud. While this was more acceptable in 2010-2012, as smartphones and new group chat systems became prevalent IRC was no longer practical.
    • As the Chief Archivist, one major problem I had with IRC was that I didn't get push notifications of messages on my smartphone, since I was constantly on the move and away from keyboard (AFK). The result was I missed the opportunity to chat with new users, constantly missed important responses in discussions, and wasn't able to get private messages when I was sleeping: where new users or messages could appear from other time zones.
    • As for the new users, if they arrived during a quiet period, they would not see previous messages or understand the context of current ones, and they would simply lose interest, close the client, and be unreachable forever (or until they tried again next time).
  2. IRC + IRCCloud (2014-2015) - I eventually caved in to purchasing a $5 a month instance with IRCCloud. IRCCloud modernizes IRC by providing an Android, iOS, and Webapp that has chat history and push notifications.
    • IRCCloud is closed source software that has to use their servers, even though I would rather put $5 a month towards a real VPS with a self hosted IRC bouncer.
    • At the time, there were no decent open source alternatives to IRCCloud. Never got the hang of ZNC either, though if I had set it up with Pushbullet it might have been a decent alternative.
    • Clearly a new user would balk at doing any of these things: they wouldn't want to pay up or . Thus, the chat only attracted technically inclined users, though we gained many good members as a result.
  3. IRC + IRCCloud + Discord (2015-2016) - Discord was one of the first group chats we bridged to, on account of its usability, usefulness, and community pressure. Discord rapidly became popular on 4chan, Reddit, League of Legends, and other places as a public version of Slack chat catering to gaming and group calls. However, not all our users were willing to leave IRC, and these were some of the most important ones. Thus, we compromised by bridging Discord chats to IRC using a custom bridge bot.
    • Our Discord to IRC bridge bot is Itabashi. It simply. However, to send and receive PMs, a user must have both IRC and Discord set up. As the Chief Archivist and a technically inclined user, it was acceptable for me to run Discord to chat with pure Discord users, so they didn't have to deal with IRC. However, the result was that I was more often using a proprietary app to make contact, and the bridge bot was not necessarily stable.
    • When open source communities and 4chan's /g/ heard that Discord was rapidly replacing IRC, they were adamantly opposed to the idea of joining a proprietary group chat, and slowly enthusiasm faded on technological circles as we had tricked ourselves into dumping open source infrastructure for proprietary walled gardens. But we knew there was no going back to the old ways. What could we do?
  4. IRC + Discord + Matrix (2016-2017) - The first time I heard about Matrix/Riot, I was immediately smitten with the idea. For one, it could bridge not only to IRC channels, but also to Slack and Gitter, and Discord as well. Most of all, it worked almost exactly like Discord or Slack, which is familiar to modern users and has the best usability for group chat systems around.
    • In particular, Fedora and KDE's IRC channels and IPFS have great implementations of how IRC should work with Matrix. Check out their channels and this guide.
    • Once matrix finally set up an official bridge to Rizon, I immediately ditched IRCCloud and switched fully to Matrix. However, I still keep a self hosted IRC user on Quassel as the admin that owns all my channels for administrative purposes only, and set up Quassel+Pushbullet notifications until everyone would pm my Matrix user only.
  5. IRC + Discord + Matrix + Gitter (2017) - Today, we are now bridged to multiple group chats for maximum outreach. We run our own bridges to reach beyond the range of official services.

End-to-end Encryption is Incompatible with Bridging[edit]

Notice that end-to-end chat encryption is not utilized in our public group chat channel. There is SSL to the main server in all group chats to prevent MITM, deanonymization, and the like, but otherwise chat logs and data are open.

Obviously, most of these chat systems don't use end-to-end encryption, so it would be pointless to bridge a Matrix encrypted channel.

For private core team discussions, we use a seperate, unbridged Matrix end-to-end encryption channel, or Signal.