pages/blog/posts/matrix.html
2024-08-20 14:04:45 +02:00

511 lines
22 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Alexia: Matrix needs an Instant-Messaging upgrade</title>
<link rel="stylesheet" href="../../styles/styles.css" />
</head>
<body>
<div class="wrapper">
<div class="center">
<div class="content">
<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>
<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>
</div>
</div>
</div>
</div>
</body>
</html>