Some Thoughts on Matrix

Posted on Dec 12, 2021

Keanu Reeves is back into his role as Neo in the new fourth installment of The Matrix… but this isn’t a post about that. This is about Matrix the IM protocol. I had sorta promised a post on it on social media some days ago, so here it goes. I know some people have been waiting on this one and I don’t like failing to deliver.

So, I guess Matrix doesn’t need too much of a presentation to my readers. If you happen to not know what it is, it’s an IM protocol that is FOSS, decentralized, and federated. In other words, it’s a network of independent servers that are able to talk to each other and you can host one yourself! In this regard, Matrix shares the same spirit of the older XMPP, aka Jabber, protocol.

But if we already had XMPP… why Matrix?

XMPP has many issues and I think everyone knows I’m no fan of it. Among its many, many problems, XMPP has historically had a problem with its development process as a specification. Yeah, there’s a team that works on the protocol, but that team never got to make their server software (i.e. jabberd) a true reference implementation… and they never got to write a reference implementation for an XMPP client.

Reference implementations can be a tricky thing. They’re too top-down for the taste of many in the FOSS world, who may prefer a bottom-up approach to things. I feel the XMPP development community is in the latter camp… Which is fine, but if your goal is to compete against centralized behemoths like the usual suspects, bottom-up development can lead to a diversion of resources that make you grow extensively… but not intensively.

That’s what distinguishes Matrix from XMPP: the Matrix development team work on a specification and have actively sought out to make Synapse, an implementation of the server, the reference implementation in a more top-down fashion. Yeah, now we’ve got Dendrite as well, but the Matrix team also works closely with their team. There’s an active effort by the Matrix folks to make sure that the specs are being followed.

And part of this active effort shows in two things, in my opinion. First, their tremendous effort in communicating the newest developments on a weekly basis on their This Week in Matrix blog and their Matrix Live podcast. Second, and this one is the trickier one… funding.

I’m so, so, so, so, so tired of FOSS projects neglecting revenue and funding. Look, we all love to download our favorite distros for free, donating to them occasionally, but that’s not sustainable in the long run. If you want any project to grow past a certain threshold, you need funding. We’re not living in Star Trek’s post-capitalist utopia, you know? You need to hire people, you need to pay for servers, you need to finance PR events whether you like them or hate them… Linux may be free for users, but it gets money from investors whose infrastructures are highly dependent on it… For guys like IBM, investing on Linux is investing on their own business. It’s a win-win. Other projects have other means of financing themselves. Money in FOSS isn’t just a fancy thing; it’s a need and we need to change our culture around ASAP. It’s what makes a difference between coding in your free time and actually being able to dedicate yourself entirely to FOSS.

I couldn’t find much information on who’s founding The Matrix Foundation, which is a non-profit organization based in the UK. They do sell merch and accept donations. However, Element has raised over $30M in their last funding round, offer a couple of online services like integrations with other online platforms, using custom domains, hosting for servers… and even some premium features on their client.

I bring up Element because, let’s face it, it’s the de facto official client for Matrix… and part of the Element Company board participates in the Matrix Foundation. Matthew Hogdson, one of Element’s co-founders, was also one of Matrix’s co-founders and developers. I mean, yeah, currently Element and Matrix are two different entities… but the ties are obvious between the two… This isn’t a bad thing at all; it’s division of labor.

Regular, non-techie users could not care less about whether a protocol is decentralized, federated, etc. Security and privacy are a growing concern, though. I adore how Element’s website almost exclusively talks about Element, not about Matrix, the protocol. This is the way to go. People want an IM app that works; what’s under the hood doesn’t matter. In the case of Element, the marketing is targeted to enterprises who want an in-house IM solution… not that much to individual users, which will probably be FOSS enthusiasts anyways. This is what I believe gives Matrix/Element a huge chance of becoming a serious competitor as an IM solution… in the business world.

Where many, many “Fedi” projects fail is in that they waste their time trying to explain the technical prowess of the protocol instead of explaining potential users how the clients can be useful for them. Matrix and Element have not fallen into this trap, to their advantage.

And yeah, Matrix is cool and there are very weird, cool projects built on it like weechat-matrix, a weechat plugin that allows connecting to Matrix. But let’s be honest… It’s just another IM protocol which works pretty well, with an awesome “semi-official” client (despite being based on Electron!) that just works. Other clients, the P2P Matrix proposal, etc., are more of a thing to us, FOSS and techie people who love navigating those waters… But that’s the thing: you don’t need to be a technical user to use Matrix in seconds. I’ve tested this with some non-techie friends and all of them were able to set up their all-great E2EE, decentralized, federated Matrix account in less than 5 minutes… and understood how Element worked in less than a minute, because that client just follows the UX of modern IM clients.

I’ve had some weird debates, though, with users of XMPP. And I know… when you’re a fan of a technology, you become emotionally invested on it. I myself can get pretty fangirlish when it comes to Arch, I confess. What I don’t get is why some XMPP people I’ve met seem to be against Matrix without even trying it. XMPP isn’t going anywhere any time soon; I dislike it and have stopped using it, yet I recognize its place in history and I also feel very mad at how Google essentially killed it with treason. XMPP has its uses, as IRC still does, and that’s great.

However, it’s time that people who are still in the “Matrix is bad” mentality move on… I mean, use whatever you like more, but please don’t look like a fool and observe reality: As a FOSS alternative for non-technical users, Matrix has delivered much more in way less time than anything else we had before. Yeah, Conversations is a nice effort, but it’s only able to ease the use of XMPP by cutting corners… and the problems show as soon as you set up a second client linked to the same account you’re using Conversations with.1

Now, going back to Matrix (and Element) themselves… and leaving XMPP behind. In no way I’m saying that Matrix (and Element) are perfect. Yesterday I had a very weird sync’ing issue: trying to join into a couple of new public rooms either the server or the client decided to join me into “empty” private rooms with “random” people I didn’t know. Later I realized that those people happened to be the last people who had joined those rooms I was trying to join into. Very weird bug which was “fixed,” most strangely, by clearing Element’s cache… Syncing issues as weird as this are very uncommon, but others which aren’t as annoying are common.

Speaking of which, public rooms are maybe the one thing I profoundly dislike in Matrix. OK, let me put this straight: I enjoy the two or three rooms I am in, but when browsing the directory the signal to noise ratio is very, very low, with lots and lots of rooms being just utter spam. Bridges don’t help either, as you sometimes end up unknowingly joining a room which is actually an IRC room… and I’m a firm believer that it’s better to use rooms natively; if it’s an IRC room, I’ll join via IRC… not via Matrix, I’m sorry. In general, they do feel a bit like the mythical Eternal September? Again, this might be me being an unsufferable OB, but I am under the impression that Matrix could do without public rooms and leave that kind of functionality to a protocol like IRC, which is actually designed around them (and not so much around IM).

A last thing I do wanna mention is that, yeah, I do believe in Matrix’s potential… but I do think it’s just that: potential. Make a couple of bad moves and you’re out of the game. I don’t see any immediate dangers on the horizon, but IM is an area where our proprietary competitors inject millions of dollars in R+D… and you never know what their next move will be. And this is one thing Matrix hasn’t solved: as awesome as I think it is as a protocol, and as awesome I think Element is as a user-friendly client… On the FOSS side of things, when it comes to IM and social media in general we’re still one step behind the proprietary competition; we’re constantly reacting instead of doing our own thing.2 In some sense, Matrix is also that.

My hopes come from the Element’s and Matrix’s teams respective PR strategies and the feeling that they’ve got a business plan and a general sense of purpose that goes well beyond the limits of the FOSS “echo chamber.” This may alienate some people, but, hey, they’re trying something different to what everyone has tried before.

If you’re reading this over at the Matrix Foundation or the Element Company, I wish you guys the best of luck! 🍀 And I will certainly keep a keen eye on how things end up developing! (No one escapes Ariadna!)

  1. I’m thinking priority levels. Priority levels are actually pretty straightforward in XMPP… except that Conversations hijacks them in order to always receive all messages… which makes sense, because you want it to behave like your regular mobile IM app… but it doesn’t play well with other clients. ↩︎

  2. I’m expecting a “Fedi” clone of TikTok anytime soon. ↩︎