Matrix Live

Unfortunately no Matrix Live this week, your host and editor apologises for the inconvenience!

Dept of Status of Matrix 🌡️

Libera Chat bridge sunsetting

Josh Simmons says

This week we were sorry to announce that we are not able to bring the Libera.Chat bridge back online. We have already begun working through clean up tasks, such as clearing ghosts, and expect to be done by December 22. If you see any bridge artifacts left past that point, please let us know.

We know that many communities and individuals were relying on the bridge, and we regret the impact this situation has on them.

If you are one of those who have relied on the bridge in the past, you may be asking: what now? You do have options.

People who need a bridge for their community can run their own: the matrix-appservice-irc software is still maintained. Only its Libera.Chat instance, which was configured to persist connections across restarts, is being shut down. Please be mindful of the network, and read Libera.Chat’s recommendations and their Matrix FAQ when doing so.

For more information, read our full announcement and Libera.Chat’s announcement.

Matrix on Wikidata

Christian Paul (jaller94) reports

Wikidata is an open knowledge base, containing structured information to be read by humans and machines. I love it and I contribute to it a lot.

This week, I added a few more items from the Matrix ecosystem which I want to highlight:

You may have heard of this event series called Matrix Community Summit (Q123583505). In the past, we've had the Matrix Community Summit 2022 (Q123583515) and the Matrix Community Summit 2023 (Q123583556).

One output of these community summits is the Matrix Salon Podcast (Q123583531), which is a podcast featuring community members. Check it out! After all, you already seem to be interested in Matrix (Q22906785) given you're currently reading This Week In Matrix (Q123583570).

Dept of Spec 📜

Andrew Morgan (anoa) announces

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://spec.matrix.org/proposals.

MSC Status

New MSCs:

  • There were no new MSCs this week.

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

Closed MSCs:

Spec Updates

Last week we released Matrix v1.9 🥳 Please read the accompanying blog post to learn more.

As always, we are now well underway on the planning for what will go in to Matrix v1.10. Expect some updates on that front in the next coming weeks.

Random MSC of the Week

The random MSC of the week is... MSC2409: Proposal to send EDUs to appservices!

I have a feeling that this one must have come up before. But it's had some activity recently, so let's cover it!

Ephemeral Data Units (EDUs) are Matrix events that are intended to only exist for a finite amount of time. Examples of which are presence, read receipts and typing notifications. These features are useful, and you could imagine them being very useful for bridges - where it's good to be able to bridge when someone is typing a message across to another third-party network! Rich Matrix bridges are typically built using the Application Service API.

In today's Matrix spec, EDUs that fly around the homeserver are never sent to application services. This can lead them to resorting to workarounds where they call /sync as one of their puppeted users in order to pull EDUs. While this works (with some exceptions), its a second source of data input on top of the usual Application Service API. It's also notably resource intensive on the homeserver, especially when bridging large numbers of users.

MSC2409 is a proposal to define how EDUs could be sent over the Application Service API. This is especially useful for a fourth type of EDU - to-device messages. These are messages sent from one to one or more other user devices. This is heavily used for facilitating end-to-end encryption, where message keys are sent between devices. Sharing these with Application Services allows them to participate in E2EE chat rooms. Arguably this is the most exciting use case of this MSC.

This MSC is already heavily in use today, but remains an outstanding MSC. It was originally written by @Sorunome, who put a lot of effort into it after getting it off the ground. Now, @Half-Shot has picked up the torch and is intending to drive it to completion. In fact, it just got proposed for FCP today! Do give it a gander if this is something you think might be useful to you or the software you use!

Dept of Servers 🏢

Synapse (website)

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

Erik says

The previous week the Matrix.org Foundation released Synapse 1.97.0rc1, Sygnal 0.13.0, and Sydent 2.6.0 and 2.6.1.

This week Synapse 1.97.0 was released.

As announced previously, Element will soon fork these projects. Any changes needed by server administrators will be communicated via our usual announcements channels (including TWIM), but we are striving to make this as seamless as possible. See also the Foundation's blog post for their point of view.

Of note:

  • Synapse now supports asynchronous uploads. Thank you to Sumner Evans at Beeper for persisting with this piece of work!
  • Synapse (on development branch) now supports Matrix spec versions 1.7, 1.8 and 1.9!
  • Various performance fixes for Synapse, particularly for large, multi-worker deployments. Please let us know how it performs in practice!
  • Sygnal supports Python 3.10+ and drops notifications for rejected pushkeys.
  • Sydent now implements MSC4040.

Our continued thanks to our contributors and #synapse:matrix.org.

Dept of SDKs and Frameworks 🧰

Emma [it/its] ⚡️ announces

Rory&::LibMatrix (.NET 8 matrix bot/client library)

No new major features this time around, as I havent found the energy to work on stuff. Any help I can get is super appreciated!

Changes

  • Moved ArcaneLibs dependency to submodule of LibMatrix, rather than it being a submodule of a parent project.
    • Fixed erroneous and redundant dependency imports.
  • Copied code style rules from parent project and applied them.

And, as always:

Ruma (website)

A set of Rust library crates for working with the Matrix protocol. Ruma’s approach to Matrix emphasizes correctness, security, stability and performance.

Kévin Commaille announces

Our last update was almost two months ago, and things were rather quiet in Ruma-land.

We have made a few bug fix releases that got us to Ruma 0.9.4, and we also just landed support for Matrix 1.9, which is not yet part of a release. Here is a list of the main changes:

  • Improve the helpers to build messages with relations or mentions
  • Add support for MatrixRTC events (MSC3401 and MSC4075)
  • Send One-Time Key claims to appservices (MSC3983)
  • Fix deserialization of conditional push rules without conditions
  • Refine the unstable sliding-sync implementation

The full set of changes can be viewed in the corresponding crates' changelogs (or GitHub releases).

If you feel like contributing, take a look at one of our "help-wanted" issues. Implementations of MSCs are also very welcome!

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

Jonas Platte reports

Matrix Dart SDK (website)

Matrix SDK written in pure Dart.

td says

Haloo, here's your dart sdk breaking changes report since the last twim (v0.21.0)

v0.24.0

  • This release deprecates client.presences in favor of client.fetchCurrentPresence(userId) as part of our journey to a more database centric memory management. However, client.presences is still functional and tested at least until the next major release.
  • Breaking change for users of dehydrated devices feature. This feature now implements the latest version of the MSC. It has been adapted to the current recent Synapse version and will from now on be incompatible with previous versions.

v0.23.0

  • This release includes a small breaking change. Starting a verification request now always returns a future. Specifically this changes the DeviceKeys startVerification method to also return a future.
  • Additionally this release fixes a severe regression in the online key backup (keys only got uploaded once after startup or before logout), excessive linebreaks in markdown messages and a few edge cases around when presence is sent.

v0.22.0

  • You will notice a small warning for redactedAnEvent and removedBy localization events

As for the work currently being done:

  • a new database backend implementation.(moar perf mwhahaha)
  • matrixRTC changes (extending msc3401 :3)

Complement (website)

Matrix compliance test suite

Kegan says

I have been working on a new project called complement-crypto which aims to write an extenstive, exhaustive set of end-to-end E2EE tests for Matrix clients. The aim of this work is to ensure encryption in Matrix Rust SDK in particular is robust to all kinds of failure modes: from connectivity blips over federation, server restarts and corrupted data, to actively malicious homeservers.

It tests Matrix Rust SDK via the FFI bindings that Element X uses, as well as a rust-crypto enabled version of JS SDK which uses WASM bindings. This provides the compromise that it's high-level enough that tests just call functions like "sync", "send message" and "join room" rather than "upload one-time keys", "query keys" and "send to-device messages". However, it's low-level enough to not require a UI or an emulator so it remains fast and able to run in Github Actions.

Some highlights:

  • Provides full Alice, Bob client permutations of JS,JS / Rust,Rust / JS,Rust / Rust,JS. This ensures Element X and Element Web-R will interoperate correctly.
  • Some proposals and issues are already coming out of this work.
  • Uses mitmproxy to intercept CSAPI request/responses to allow targeted modification of traffic. For example, sending a 504 Gateway Timeout on certain paths but not others. This can also be used to craft malicious server responses (though no tests do this yet).
  • Runs fast: 8 minutes currently. Unfortunately, testing network timeouts and retries will inevitably increase this time.
  • Can hypothetically run clients other than Rust SDK enabled ones, provided they can implement the api.Client interface the tests use. Homeserver wise, so long as it is Complement-compatible it will work out of the box (e.g Dendrite/Conduit).

This project is still in its early stages currently but the groundwork is now in place to expand out the tests and add new ones we've never thought of before. I hope the net result will be a more stable, robust and secure Matrix ecosystem.

Dept of Interesting Projects

ben announces

Acter website

Yesterdays's release (Android ,iOS & iPad, Windows, Linux ) brings an exciting new feature for on-boarding your team mates and several UX improvement and fixes. See yourself what changed since the last Apps update:

Super Invites

Most anxiously awaited, this release brings Super Invites to Acter. SuperInvites are a neat way to onboard anyone to a set of spaces and chats quickly by allowing you to create and configure any invite tokens associated with any number of rooms you directly add them upon redeeming. Made possible through a homeserver extension, we have developed it is realized by inviting and automatically accepting the invite upon redeeming on the homeserver. Additionally, as you can see in the demo in the PR in Acter super invites are configured to also act as registration tokens and we directly redeem them upon registration, too. That you can finally create an invite token from within Acter associated with a set of rooms and sent that to your mates and ask them to download and register with that token and they will directly end up in these rooms without further interaction. Like Magic ✨.

Improvements

UI/UX has still been a high priority for the team and thus we proudly present several fixes and enhancements, too. Most notably, you can now edit your sent chat messages. Additionally, I found the newly improved stateful navigation to be super nice and smooth. Alongside the routing fixes, you can also link subspaces after having created them now.

Last but not least, we have introduced a new UI/UX flutter end-to-end integration test framework and slowly started building up UI-driver tests to ensure we regress and bugs stay fixed. Unfortunately, it doesn't yet run on CI, but we are working on that (if you have done that before and can help, please DM me!)

Matrix Federation Stats

Aine announces

collected by MatrixRooms.info - an MRS instance by etke.cc

As of today, 8327 Matrix federateable servers have been discovered by matrixrooms.info, 2164 (26%) of them are publishing their rooms directory over federation. The published directories contain 276357 rooms.

How to add your server | How to remove your server

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.net242
2nerdhouse.io298.5
3shortestpath.dev305
4matrix.org312
5plocki.org344
6matrix.maymundere.org355.5
7tcpip.uk361.5
8envs.net472
9almum.de754.5
10rom4nik.pl778

#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
1dendrite.s3cr3t.me108
2nerdhouse.io129.5
3spqr2gang.com156.5
4tcpip.uk172.5
5matrix.maymundere.org200
6inu.is361
7kanp.ai459
8matrix.its-tps.fr576
9forlorn.day629.5
10shiftsystems.net960

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