pages/blog/posts/matrix.html

263 lines
18 KiB
HTML
Raw Normal View History

2024-06-24 13:57:30 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simon Müller: Matrix needs an Instant-Messaging upgrade</title>
<link rel="stylesheet" href="../../styles/styles.css">
2024-06-24 13:57:30 +02:00
</head>
<body>
<div class="wrapper">
2024-06-24 13:57:30 +02:00
<div class="center">
<div class="content">
2024-06-24 13:57:30 +02:00
<div>
<p><a href="/blog/posts.html">Back to posts</a></p>
<h1 id="matrix-needs-an-instant-messaging-upgrade.">Matrix needs an Instant-Messaging upgrade.</h1>
<p>Hello there! Your favourite nerd (or not!) on the internet is here to talk about Matrix again.
</p>
<p>I wanted to write this a little less formal this time, so here we go:</p>
<p>Every time I get someone to switch to Matrix from literally <em>anything</em> else (“unable to
decrypt”-memes aside) there is usually some “building-block” to the instant-messaging puzzle
missing. Once this was Media Captions, which <a
href="https://github.com/matrix-org/matrix-spec-proposals/pull/2530">is merged</a>, but not
practically usable anywhere because no client apart from <a href="https://beeper.com">Beeper</a>
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.</p>
<p>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, <em>let's start listing things…</em></p>
<h2 id="rich-extended-profiles">Rich / Extended Profiles</h2>
<p>Yeah this is quite the pain-point right now, <strong>profiles are essentially just your name,
MXID and avatar</strong>, although on basically <em>every other platform on earth</em>, you
actually get options to customize your profile.</p>
<p>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</p>
<p>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 badge<a href="#fn1"
class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>, it's quite nice!</p>
<h3 id="mscs-that-relate-to-this-issue">MSCs that relate to this issue:</h3>
<ul>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/1769">MSC1769:
Rooms-as-profiles</a></li>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/3755">MSC3755: User
Pronouns</a></li>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/4133">MSC4133: key:value
pairs for profiles</a></li>
</ul>
<h2 id="better-forwarded-messages">Better Forwarded Messages</h2>
<p>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 <em>about as good</em> as just
doing a Copy &amp; Paste manoeuvre; Practically useless.</p>
<p>Comparing this to something like Telegram or even WhatsApp makes it clear to see why:
<strong>There is no indication that you're actually viewing a forwarded message</strong>. It
will be completely out of context.
</p>
<h3 id="mscs-that-relate-to-this-issue-1">MSCs that relate to this issue:</h3>
<ul>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/2723">MSC2723: Forwarded
event metadata</a></li>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/2730">MSC2730: Verifiable
forwarded events</a></li>
</ul>
<h2 id="rich-activity-indicators">Rich activity indicators</h2>
<p>Probably one of the most useless seeming, but actually most <em>useful</em> features that we
could “steal” from Telegram is rich activity indicators, or just “more typing indicators” as
it's also sometimes called.</p>
<p>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 <em>all kinds of extra indicators</em> to the platform that showed when you were sending
media, picking a sticker, or doing other actions.</p>
<p>Whilst I think we should not go quite as… <em>deep</em>, some of the more basic things like
“[user] is sending media…” would definitely add value to the instant-messaging experience in
Matrix.</p>
<h3 id="mscs-that-relate-to-this-issue-2">MSCs that relate to this issue:</h3>
<ul>
<li><a
href="https://github.com/matrix-org/matrix-spec-proposals/blob/travis/msc/typed-typing-notifs/proposals/3038-typed-typing-notifications.md">MSC3038:
Typed typing notifications</a></li>
</ul>
<h2 id="games-and-interactive-content">Games and interactive content</h2>
<p>Pulling straight from Telegram and iMessage again, I think interactive content in chats is
actually quite fun. This could be a game a-la <a href="https://webxdc.org/">WebXDC</a> (which
could integrate with existing Matrix widgets 👀) or maybe something entirely different!</p>
<p>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 <em>probably</em>
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.</p>
<h3 id="mscs-that-relate-to-this-issue-3">MSCs that relate to this issue:</h3>
<ul>
<li>again, <strong>none</strong>! Couldn't find any, maybe I'll get the discussion started on my
own…</li>
</ul>
<h2 id="live-location">Live Location</h2>
<p>Quite self-explanatory, what about sharing our location <em>in real-time?</em></p>
<p>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: <strong>let me share my location, for X amount of time, updating every X
Seconds/Minutes/Hours</strong></p>
<p>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.</p>
<h3 id="mscs-that-relate-to-this-issue-4">MSCs that relate to this issue:</h3>
<ul>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/3672">MSC3672: Sharing
ephemeral streams of location data</a> (this isn't the <em>only</em> MSC regarding this,
but the most comprehensive one I've found.)</li>
</ul>
<h2 id="replying-with-media">Replying with media</h2>
<p>Technically, some clients do not prohibit this, and I don't think the spec does either, but
<em>basically no client allows you to do this!</em>
</p>
<p>Wanna reply with an image? Bad luck, most clients won't allow you even when they can display that
just fine.</p>
<h3 id="mscs-that-relate-to-this-issue-5">MSCs that relate to this issue:</h3>
<ul>
<li>None? Mostly unnecessary from what I can gather.</li>
</ul>
<h2 id="inline-bots">Inline Bots</h2>
<p>Oh boy. A friend suggested this and I don't even know where to start.</p>
<p>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.</p>
<p>I have no idea where this would even fall, Client-Server? Maybe needs to open a room with bots?
No damn clue.</p>
<h3 id="mscs-that-relate-to-this-issue-6">MSCs that relate to this issue:</h3>
<ul>
<li>Absolutely 100% none.</li>
</ul>
<h2 id="scheduled-messages">Scheduled Messages</h2>
<p>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.</p>
<h3 id="mscs-that-relate-to-this-issue-7">MSCs that relate to this issue:</h3>
<ul>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/3277">MSC3277: Scheduled
Messages</a></li>
</ul>
<h2 id="content-warnings-media-spoilers">Content Warnings / Media Spoilers</h2>
<p>Whilst there is already spoilers in matrix<a href="#fn2" class="footnote-ref" id="fnref2"
role="doc-noteref"><sup>2</sup></a>, you've never been able to set them for <em>media</em>.
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</p>
<h3 id="mscs-that-relate-to-this-issue-8">MSCs that relate to this issue:</h3>
<ul>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/3725">MSC3725: Content
Warnings</a></li>
</ul>
<h2 id="media-albums">Media Albums</h2>
<p>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.</p>
<p>Media Albums would mean we can <em>finally</em> put a buncha things together into one message</p>
<h3 id="mscs-that-relate-to-this-issue-9">MSCs that relate to this issue:</h3>
<ul>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/3382">MSC3382: Inline
Message Attachments</a></li>
</ul>
<h2 id="user-notes">User Notes</h2>
<p>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 <a
href="https://wetdry.world/@cyrus">wetdry.world</a> about input on Matrix features.</p>
<h3 id="mscs-that-relate-to-this-issue-10">MSCs that relate to this issue:</h3>
<ul>
<li>None? Not sure.</li>
</ul>
<h2 id="sharing-drafted-messages-between-devices">Sharing drafted messages between devices</h2>
<p>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.</p>
<h3 id="mscs-that-relate-to-this-issue-11">MSCs that relate to this issue:</h3>
<ul>
<li><a href="https://github.com/matrix-org/matrix-spec-proposals/pull/4146">MSC4146: Shared
Message Drafts</a></li>
</ul>
<hr />
<h1 id="important-to-mention">Important to Mention</h1>
<p>There are some things that I'd like to address in here that I explicitly didn't put into their
own categories, these include:</p>
<ul>
<li>The issue of State Resets</li>
<li>Trust &amp; Safety struggles</li>
<li>Portable Identities</li>
<li>Relationship with Element</li>
<li>etc…</li>
</ul>
<p>Generally my thoughts on all of the above are quite similar, a lot of these issues are only
slowly being addressed <strong>due to a lack of funding.</strong> 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
exceptions<a href="#fn3" class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a> 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).</p>
<p>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 <em>more</em> than just a new room version, which is already quite a hard
sell.</p>
<p>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 <em>entirely counterproductive</em> 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 <em>improving</em> Matrix that is <em>replacing</em> Matrix. Make your
own protocol at that point.</p>
<hr />
<h1 id="matrixs-place-in-the-modern-im-landscape">Matrix's place in the modern IM landscape</h1>
<p>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 <em>scary</em> to say the
least.</p>
<p>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 <strong>open</strong>. 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.</p>
<p>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.</p>
<p>I believe that Matrix is the best shot we have at this. It <strong>has</strong> growing pains, it
<strong>has</strong> issues, and the ecosystem has been struggling for a while, but without
support we aren't getting anywhere. We need something like Matrix.
</p>
<aside id="footnotes" class="footnotes footnotes-end-of-document" role="doc-endnotes">
<hr />
<ol>
<li id="fn1">
<p>Although, in Discord the badges are mostly for Discord Developers, or verified bot
developers or whatever.<a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn2">
<p>There are indeed spoilers <em>for text</em> in Matrix, however there is no way - not
even a hacky workaround - to get media spoilers, letalone content warnings.<a href="#fnref2"
class="footnote-back" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn3">
<p>Before anyone says it, <strong>no</strong>, this isn't a violation of some license,
most contributions came from Element or Element Employees anyway and I'm pretty sure
there is/was a CLA.<a href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</aside>
2024-06-24 13:57:30 +02:00
<hr>
<p>If you liked what you read, please consider donating: <a class="donate"
href="https://ko-fi.com/cyrus42">Donate
on
Ko-Fi</a></p>
2024-06-24 13:57:30 +02:00
</div>
</div>
2024-06-24 13:57:30 +02:00
</div>
</div>
2024-06-24 13:57:30 +02:00
</body>
</html>