Matrix Live

Dept of Spec 📜

Andrew Morgan (anoa) [sick] reports

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://matrix.org/docs/spec/proposals.

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

Spec updates

With the Spec Core Team aiming for a most-bugfix/maintenance release for Matrix v1.5, I'd like to call out some of the fixes to the spec that have landed in the last two weeks:

Thanks everyone! If you'd like to help get involved yourself with minor spec fixes, check out the list of clarifications on the matrix-spec repo.

Random MSC of the Week

The random MSC of the week is... MSC3873: event_match dotted keys!

This MSC aims to eliminate an ambiguity in the push rules portion of the spec. Specifically, that which arises from how to deal with event fields which have a dot (period) in them - such as m.ts. The problem is that a . in the push rule definition is intended as a path-separator. For instance, if you want to match on the value of the "foo" field in the event below:

{
  "bar": {
    "foo": 123
  }
}

you'd write "bar.foo". But if instead of foo, we have m.foo, then you'd be stuck when trying to figure out what field to match against in the following case:

{
  "bar": {
    "m.foo": 1
    "m": {
      "foo": 2
    }
  }
}

Are you matching against 1 or 2?

This MSC tries to fix this by stating that "matching on a dot in a field name requires that dot to be escaped". So you'd write "m.foo" to mean the field m.foo, rather than a dictionary "m" containing a key "foo".

Anyhoo, check the MSC out and voice your opinion if any of that seems interesting to you :)

Dept of Servers 🏢

cos reports

(Just saw this on mastodon) https://www.process-one.net/blog/matrix-protocol-added-to-ejabberd/

It is exciting to see more actors joining the Matrix ecosytem! We strongly encourage ejabberd developers to join #homeservers-dev:matrix.org and to open MSCs if they find clever ways to improve Matrix.

f0x announces

Out of curiosity I wanted to know which server discovery methods various homeservers were using. To get the data, I cobbled together my autodiscover-server-configuration library with a list of known servers from my homeserver's destinations table, which holds 14683 entries (although a few are clearly invalid). After following the discovery flow for every server on the list, it'd also check HEAD /_matrix/key/v2/server to see if the resulting (delegated) hostname is behind a reverse-proxy, or directly connecting to Synapse (or a proxy-server that doesn't set it's own server header). Visualized are the results. Some favorite server names:

  • a very large cheesecake shoved into a server rack
  • you just got gnomed

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Shay announces

We've been working diligently to make Synapse faster and leaner this week. Some notable items in the release candidate this week are:

  • Some legacy Prometheus metric names have been deprecated and will be removed in Synapse 1.73.0. More info can be found in the upgrade notes: https://matrix-org.github.io/synapse/v1.69/upgrade.html#upgrading-to-v1690
  • Server admins can now require a manual approval process before new accounts can be used.
  • Experimental support for thread-specific receipts has landed.
  • DM room creation has been sped up.

plus many more bugfixes, features, and improvements. Check it out here: https://github.com/matrix-org/synapse/releases

Dendrite (website)

Second generation Matrix homeserver

neilalexander reports

This week we released Dendrite 0.10.3 with the usual dose of features and fixes, including:

  • Event relations are now tracked and support for the /room/{roomID}/relations/... client API endpoints have been added
  • Support has been added for private read receipts
  • The built-in NATS Server has been updated to version 2.9.3
  • The unread_notifications are now always populated in joined room responses
  • The /get_missing_events federation API endpoint should now work correctly for rooms with joined and invited visibility settings, returning redacted events for events that other servers are not allowed to see
  • The /event client API endpoint now applies history visibility correctly
  • Read markers should now be updated much more reliably
  • A rare bug in the sync API which could cause some join memberships to be incorrectly overwritten by other memberships when working out which rooms to populate has been fixed
  • The federation API now correctly updates the joined hosts table during a state rewrite

As always, please feel free to join us in #dendrite:matrix.org for more related discussion.

Conduit (website)

Conduit is a simple, fast and reliable chat server powered by Matrix

Timo ⚡️ announces

Hey everyone, it's been a long time since my last TWIM post. I just want to tell you that the refactor branch was merged to next and a few useful fixes have already been merged:

  • Fixed: Random rooms become historical
  • Fixed: Profiles not loading when scrolling through history
  • Fixed: Leaving rooms doesn't seem to do anything
  • Fixed: E2EE finally works reliably

You can expect a new Conduit release very soon, if you have any last wishes for small features or bug fixes, please tell me now :)

I currently work on Conduit in my free time, you can support me on https://liberapay.com/timokoesters PS: I'm also looking for Conduit grants and jobs for when I finish university next year, contact me if you have ideas

Homeserver Deployment 📥️

Helm Chart (website)

Matrix Kubernetes applications packaged into helm charts

Ananace reports

Haven't managed to report on these for a bit, but my Helm Charts have been keeping up-to-date nonetheless. Currently sitting on element-web 1.11.10 and matrix-synapse 1.68.0

Dept of Bridges 🌉

Postmoogle (website)

An Email to Matrix bridge. 1 room = 1 mailbox.

Aine announces

There is so much spam on the internet....

But no, that's not a new article on Medium with whining about modern society and technologies, it's Postmoogle v0.9.7!

It already had abilities to send and receive emails, had huge amount of customization options and permission management.

Now we added the anti-spam options, both "standard spamlist" things to reject emails by email address, domain name or even localpart and "advanced checks" to reject emails from senders without MX records or when the sender email does not exist for sure.

Yes, at etke.cc we don't like spam.

So, check out the source code and say hi in #postmoogle:etke.cc

Dept of Clients 📱

Syphon (website)

Chat with your privacy and freedom intact

0x1a8510f2 says

Another year, another Syphon release (I jest, but it has been a while)!

The long awaited 0.2.14 release has been cut last week. Unfortunately, due to CI issues, not all official builds are available yet. As most of the core team has been rather preoccupied with life lately, some delay is expected, but they are on the way!

In the meantime, the GitHub release page contains the successful builds, including Android and MacOS x86, and the full changelog for this release. Some highlights from the latter include:

  • Spec-compliant private read receipts (we've had private read receipts for a while, but now they're spec-compliant)!
  • Device name editing, including a random name generator
  • Additional text made copy-able in the UI (such as the session ID)
  • As well as a huge amount of refactoring, bugfixes and general improvements

As always, massive thanks to all contributors, especially @EdGeraghty and @Florian-Sabonchi who single-handedly accounted for more than 3/4 of the changelog!

Finally, as a reminder, we now have a Syphon space. Feel free to join us for support, development discussion or just a friendly chat, at #syphon-space:matrix.org.

Nheko (website)

Desktop client for Matrix using Qt and C++17.

Nico says

r._.hit has been working on voip call v1 support as part of the Google Summer of Code. Calls v1 are an improvement over the existing v0 call spec, which should make the calling experience much nicer (however they are still an MSC). As part of his work Nheko now mostly supports the v1 signalling. There are some improvements still missing like allowing multiple streams for screenshare instead of compositing them locally and a few more things, but the bulk of the work is done now. Thank you very much for working on this.

In other news Nheko now evaluates pushrules locally, which means you can now get notifications on servers that don't support the /notifications endpoint properly and you can properly get notifications for encrypted messages. Since this is quite a large change, feedback is welcome. We also broke our dbus API to make it faster. When listing rooms they now don't include the avatar, but just an mxc uri and you need to manually query the avatar over dbus if you need it. Last but not least, Nheko now supports Unicode 15 in the emoji picker including 🪿!

Neochat (website)

A client for matrix, the decentralized communication protocol

Tobias Fella says

This week, we have finally fixed one of my biggest annoyances with NeoChat so far: Mentioning a user will now be highlighted in the input field and more reliable, meaning you will no longer have to guess if writing a user's name will actually create a mention. While implementing this, I also added the ability to send room links in a similar way to user mentions.

  • When switching between rooms, NeoChat will also remember the text you have typed so far and will restore it when you switch back to that room.
  • When sending a video, the resolution will now be sent correctly
  • Viewing of custom emojis has been fixed after it broke while implementing link previews
  • The replied-to message is now shown in a nicer way for messages

The image viewer has also been improved significantly: It will now only cover NeoChat's window and includes quick actions to resize, rotate and save the image

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

Danielle says

  • We’re continuing to update the new device manager, introducing and perfecting features like:
    • Sign out of multiple sessions
    • And disabling notifications for other sessions…
  • Updates and improvements to threads are well underway and this week: we’ve been solely focused on performance and loading. You should start to feel the impact of this over the next few weeks so be sure to keep threads turned on, and your develop.element.io updated.
  • Element Video rooms are also currently experimental but receiving regular updates, specifically integrating Element call.
    • There’s a labs setting to start using Element Call from rooms and video rooms for group chats and (I might be biassed) but it’s just wonderful. Check it out!

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Ștefan announces

  • It’s been a busy week for the Element iOS team - this week we’ve been focussing on improving our accessibility on the navigation elements we introduced a few weeks ago, this includes the voiceover text on the filters.
  • We’re also making very good progress on the new login with QR code and device manager features and expecting them to be ready soon
  • Other bug fixes include:
    • Fixing a glitch in the header in the All Chats and Spaces home views.
    • Fixing the freeze and crash that was occurring when searching in a room

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

benoit reports

  • This week is a big week for the Android app! After being in Labs for a few weeks the new layout is finally here. We think the new layout simplifies the experience for users:
    • The filters and recents help you get where you’re going faster (but it’s still configurable to your own workflow)
    • The new spaces menu and access point is within reach, meaning you can separate your chats however you choose, suiting your daily work & play patterns!
  • The team have also started back up on threads in full force this week so expect some improvements to land soon
  • It’s not only the fun stuff that’s been worked on, we’re also squashing bugs. My favorite:
    • Animated images now autoplay in the timeline
    • If the emoji keyboard is disabled, it’s disabled everywhere (previously it would still show when sending a reply)

Dept of SDKs and Frameworks 🧰

libolm

uhoreg reports

libolm 3.2.13 was released this week. This is mainly a maintenance release to fix compatibility with node 18. There was also: a minor change to the Python packaging, documentation updates, and a slight improvement to the pkgconfig file. Most people will not need to update.

simplematrixbotlib (website)

simplematrixbotlib is an easy to use bot library for the Matrix ecosystem written in Python and based on matrix-nio.

imbev reports

There is not a new release of simplematrixbotlib this week, however I would like to share some progress on the upcoming simplematrixbotlib version 3.

New matching system

Instead of the current implementation that uses the MessageMatch class with various methods such as MessageMatch.command(), MessageMatch.prefix, etc., version 3 will be using a custom matching syntax. The following is a preview of the currently planned matching api for version 3:

message = "!echo something Matrix"

prefix = "!"
rule = f"{prefix}echo <message *>"

matched = botlib.match(message, rule)
if matched:
    print(matched['message']) # "something matrix"

In this snippet, rules such as f"{prefix}echo <message *>" would be treated as required literals, with the usage of <> to denote arguments. The optional usage of python's f-strings feature also makes inclusion of variables such as prefix more intuitive and flexible. For more information on the simplematrixbotlib version 3 matching api, please checkout the relevant issue at https://codeberg.org/imbev/simplematrixbotlib/issues/4 or room at https://matrix.to/#/#simplematrixbotlib:matrix.org .

matrix-rust-sdk (website)

Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM

ben reports

After the release of 0.6 a few weeks back, the team has removed a lot of legacy code that will be dropped by the next release. Most notably the previous experimental timeline API has been removed and was replaced this week with the new stateful-messages timeliness API, which will soon be available via FFI, too. Meanwhile the sliding sync extensions are still on-going as a recent rest showed that the internal test-client jack-in fails to pull events via the API - investigations are under way.

While iOS libdispatch integration work took place behind the scenes, the android team has shared their first steps for full sdk based element-x.

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi reports

matrix-docker-ansible-deploy now includes support for easily customizing the upstream Synapse container image, by adding custom build steps to its Dockerfile.

Until now, people who wished to make additions to the Synapse container image had to make a fork and build it from scratch. This new feature makes things much easier. To learn more, see this changelog entry

This Synapse-customization feature was developed in an effort to assist another feature which we've landed today: synapse-s3-storage-provider support.

Users can now easily store their media repository files on Amazon S3 (or any other S3-compatible object store) using synapse-s3-storage-provider. To get started, see our Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider documentation.

Dept of Interesting Projects 🛰️

mxid-color-gen

0x1a8510f2 says

Have you ever wanted to have a specific color MXID in Element? I certainly have, and so I'm pleased to announce mxid-color-gen, a small utility which can help you predict what color your MXID will be assigned before creating your account. Gone are the days of creating accounts until you get a color you like (or is that just me?).

The (whole 50 lines of) code is available here: https://github.com/0x1a8510f2/mxid-color-gen.

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1maunium.net247
2conduit.rs344
3maescool.be495.5
4alemann.dev562.5
5nognu.de568.5
6matrix.org600
7matrix.netho.tk821
8neko.dev850
9asra.gr876
10mindlesstux.com1248

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1conduit.rs142
2joeth.uk221
3kernel-error.com251
4dendrite.s3cr3t.me354.5
5rustybever.be358
6willian.wang364
7dendrite.hazmat.jacksonchen666.com456
8zemos.net46686

That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!

The Foundation needs you

The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.

It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.

Support us