Back to posts

Matrix needs an Instant-Messaging upgrade.

Hello there! Your favourite nerd (or not!) on the internet is here to talk about Matrix again.

I wanted to write this a little less formal this time, so here we go:

Every time I get someone to switch to Matrix from literally anything else (“unable to decrypt”-memes aside) there is usually some “building-block” to the instant-messaging puzzle missing. Once this was Media Captions, which is merged, but not practically usable anywhere because no client apart from Beeper actually implements it yet, or Rich Forwarded Messages, where you can actually see from whom a message was forwarded kind of like how Telegram does it.

Truth is, whilst I love Matrix, there are some things I'm missing now that I've not been using Telegram for the past ~6 months or so, and this blogpost serves as a one-stop shop for me to reference different things that I'd like to see progress and actually have implementations landed for. As such, let's start listing things…

Rich / Extended Profiles

Yeah this is quite the pain-point right now, profiles are essentially just your name, MXID and avatar, although on basically every other platform on earth, you actually get options to customize your profile.

Let's take (the dreaded) Discord as an example, where you get: - Avatar / Profile Picture - A banner - Badges (depending on different attributes your account has, e.g developer or contributor status) - A description / “about me” section

That is quite a selection there (and I've left some things out), and it makes for some quite rich profiles that can have lots of info on a person. I can link a blog, accent my avatar with an extra banner, and maybe show off that I work on some project using a badge1, it's quite nice!

MSCs that relate to this issue:

Better Forwarded Messages

Right now, there is a couple of MSCs (see below) that try to tackle the issue of…forwarded messages not really existing in Matrix. Forwarding a message is about as good as just doing a Copy & Paste manoeuvre; Practically useless.

Comparing this to something like Telegram or even WhatsApp makes it clear to see why: There is no indication that you're actually viewing a forwarded message. It will be completely out of context.

MSCs that relate to this issue:

Rich activity indicators

Probably one of the most useless seeming, but actually most useful features that we could “steal” from Telegram is rich activity indicators, or just “more typing indicators” as it's also sometimes called.

The concept is simple: Usually you can see when someone types, but not when they are sending media, or are otherwise waiting on something else to send. Rich Typing Indicators fixed this by adding all kinds of extra indicators to the platform that showed when you were sending media, picking a sticker, or doing other actions.

Whilst I think we should not go quite as… deep, some of the more basic things like “[user] is sending media…” would definitely add value to the instant-messaging experience in Matrix.

MSCs that relate to this issue:

Games and interactive content

Pulling straight from Telegram and iMessage again, I think interactive content in chats is actually quite fun. This could be a game a-la WebXDC (which could integrate with existing Matrix widgets 👀) or maybe something entirely different!

I envision this kind of depending on the rich typing indicators, as it could tell the people in a room whether someone is currently playing a game. Additionally, I don't see why people wouldn't be able to play games together using MatrixRTC :3; Oh, and another thing would probably be sending state events to capture the current state of a game, like the high-score and who holds it, or the current layout in a game of chess.

MSCs that relate to this issue:

  • again, none! Couldn't find any, maybe I'll get the discussion started on my own…

Live Location

Quite self-explanatory, what about sharing our location in real-time?

There is quite a lot to unpack here on the Client-Side, e.g it needs to stay active on mobile devices even when the screen is off, across multiple operating systems, but the idea is quite simple: let me share my location, for X amount of time, updating every X Seconds/Minutes/Hours

There is some existing work on this if I recall right (e.g legacy element), but it has been mostly abandoned and isn't found in Element X.

MSCs that relate to this issue:

Replying with media

Technically, some clients do not prohibit this, and I don't think the spec does either, but basically no client allows you to do this!

Wanna reply with an image? Bad luck, most clients won't allow you even when they can display that just fine.

MSCs that relate to this issue:

  • None? Mostly unnecessary from what I can gather.

Inline Bots

Oh boy. A friend suggested this and I don't even know where to start.

Inline Bots are a Telegram feature that allows you to input the handle of a given Telegram bot, and have the rest of your chat input field be fed to the bot, which is useful to embed an image search for instance.

I have no idea where this would even fall, Client-Server? Maybe needs to open a room with bots? No damn clue.

MSCs that relate to this issue:

  • Absolutely 100% none.

Scheduled Messages

Honestly, I don't know how this isn't already implemented, as it is quite self-explanatory and the MSC seems to be progressing nicely.

MSCs that relate to this issue:

Content Warnings / Media Spoilers

Whilst there is already spoilers in matrix2, you've never been able to set them for media. This means you can't share an image or a video without someone in the room seeing a preview. If you're sharing images about a movie, or maybe a video going over a story, using a spoiler to indicate that you might not wanna view this is a nice feature to have

MSCs that relate to this issue:

Media Albums

Yet Another Gripe With Media On Matrix™ that I've had for a while is that I can only send one image per event at a time; even clients that let me send multiple things will just send them one after another.

Media Albums would mean we can finally put a buncha things together into one message

MSCs that relate to this issue:

User Notes

Sometimes you just wanna leave a little note about someone. This feature would be about adding a note to the profile of a user that only you can see, I got it suggested when asking on wetdry.world about input on Matrix features.

MSCs that relate to this issue:

  • None? Not sure.

Sharing drafted messages between devices

Ever wanted to continue writing a message on your desktop, only to then having to copy the message manually? This would allow you to automatically have your drafted message available on other devices.

MSCs that relate to this issue:


Important to Mention

There are some things that I'd like to address in here that I explicitly didn't put into their own categories, these include:

  • The issue of State Resets
  • Trust & Safety struggles
  • Portable Identities
  • Relationship with Element
  • etc…

Generally my thoughts on all of the above are quite similar, a lot of these issues are only slowly being addressed due to a lack of funding. The Matrix Foundation has been struggling to get a good source of income for a while now, to the point Element was given ownership of Synapse under the AGPL so that they can make money from selling license exceptions3 to try and fund important work that way, but even then the foundation is still largely dependant on entities (e.g schools or other government-adjacent bodies) that do not care about core Matrix work and instead only care about new features (that is why Polls exist in Matrix, but is only supported by Element).

Without independent funding (from users, advocates or enthusiasts and alike) there is barely anything the foundation can do on their own right now. Especially state resets is a hard problem as it - to this day from my knowledge - is barely entirely understood, and fixes that have been proposed would require more than just a new room version, which is already quite a hard sell.

Of course I'd like to see these issues solved, but without our support that won't happen; Especially when the attitude is always just “Matrix Sucks”, “just use XMPP” or “I'd like a working protocol!”. It is entirely counterproductive to improving matrix to have such an attitude. The same goes for proposing that the entire design of Matrix, where the DAG is replicated across servers as part of decentralization, should be scrapped. That just does not make sense as a point to improving Matrix that is replacing Matrix. Make your own protocol at that point.


Matrix's place in the modern IM landscape

Of course, there's some more reasons that I am writing this than just my love for Matrix; I am writing this because the Instant-Messaging landscape right now looks scary to say the least.

Left and right we have influential figures (ab)using their influence over their audience to push things like Telegram, or try and discredit Signal's security using baseless claims, Network effect keeps people locked in to insecure solutions, and governments around the world are trying to undermine security and privacy for all. In a time like this, where influential figures are abusing their power in this way, we need something open. We need something where we do not need to worry that someone comes into the scene and starts to confuse everyone by spreading targeted Disinformation campaigns with unknown motives, where one with power may push forward dangerous clientside-scanning proposals that undermine encryption, and something where we can be free in owning our identity.

In a way, it should be like E-Mail. Anyone can host a mailserver, anyone can provide one, anyone can talk to anyone, and unless you're funneled into one specific server, you do not have to worry that someone has been backdooring your communication this entire time.

I believe that Matrix is the best shot we have at this. It has growing pains, it has issues, and the ecosystem has been struggling for a while, but without support we aren't getting anywhere. We need something like Matrix.


If you liked what you read, please consider donating: