matrix.org/content/blog/2024/02/2024-02-23-twim.md

18 KiB

+++ date = "2024-02-23" title = "This Week in Matrix 2024-02-23" path = "/blog/2024/02/23/this-week-in-matrix-2024-02-23"

[taxonomies] author = ["Thib"] category = ["This Week in Matrix"]

[extra] image = "https://matrix.org/blog/img/matrix-logo.png" +++

Matrix Live

{{ youtube_player(video_id="8vjjwxx7k1w") }}

Dept of Status of Matrix 🌡️

Thib says

This week MTRNord and myself have launched the Matrix.org Website Office Hours. We hope to turn that into an accessible way to onboard new contributors. Come join the fun with us, and help us making the world a better place!

Dept of Spec 📜

Andrew Morgan (anoa) 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://spec.matrix.org/proposals.

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

The Spec Core Team are continuing to internally reflect and evaluate on our processes. Not too much to say publicly here yet, but hopefully in a few weeks' time.

Otherwise there has been a surge of new MSCs coming into the fray related to all different portions of the spec. Lots to chew on for those invested!

A general call for help for folks to write up some spec PRs - aka turning our current list of accepted MSCs into actual PR against the spec itself. If that sounds like something you'd like to help out with, even if you've never touched the spec before, please consider writing one up! You can see examples of Spec PRs here, and can join #matrix-docs:matrix.org for help 🙂

And thank you to zecakeh for writing one up yesterday!

Random MSC of the Week

The random MSC of the week is... MSC3843: Reporting content over federation!

This MSC is short and very readable, so I suggest doing so on your own! But in short, this MSC proposes a new Server-Server endpoint to report either an event or an entire room to a remote homeserver. This makes sense if that remote homeserver is the one housing the user(s) whose content you are reporting. Alternatively, you could use this as a mechanism to alert other homeservers of an ongoing spam wave.

This proposal also introduces a new error code, M_UNACTIONABLE, if the homeserver does not accept the report for whatever reason.

Personally I feel that this would be a useful tool to get abuse reports from server A to server B, whereas all current tooling either doesn't have that functionality, or pushes it off to bots (which can be a bit clunky). Having a standard API for it (which clients can then add UI for) seems like a better path forward.

Dept of Servers 🏢

Synapse (website)

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

Andrew Morgan (anoa) says

This week Synapse v1.102.0rc1 was released. With it are some performance fixes, and a fix for stuck notifications. If you're able to test and report bugs, please do!

Otherwise we are aware of an issue with notification counts being too high on mobile clients, and believe we have narrowed down the issue. This PR has a potential fix, and we'll aim to get it out as soon as possible.

Dept of Clients 📱

Quaternion (website)

A Qt5-based IM client for Matrix

kitsune reports

Version 0.0.96.1 is out, bringing a few essential fixes. Not much to talk about, just go and upgrade!

Element X iOS (website)

A total rewrite of Element-iOS using the Matrix Rust SDK underneath and targeting devices running iOS 16+.

Mauro Romito announces

  • El-X 1.5.8 has been released
  • new translations for bulgarian swedish and ukrainian have been added, and will soon be included in the next releases
  • The recovery key can now also be used to recover your chat backups/verify your device
  • If the user has set up a global OS proxy configuration, the app is now able to determine the proxy and use it!
  • Filters work is making progress, and now we can also filter by favourites.
  • Moderation features are making progress
  • We're improving our logging backend by using Rust to write the log files

Dept of Non Chat Clients 🎛️

Circles (website)

E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.

cvwright reports

We are happy to announce that Circles, the secure social network built on Matrix, is now available in the iOS App Store: FUTO Circles. With this release and our recent release in the main F-Droid repo, this leaves only the Google Play Store on our to-do list.

The initial App Store version is identical to beta v0.9.9 and brings only minor updates over v0.9.7 and v0.9.8. We expect to be very busy over the next few weeks as we add a few remaining features and bug fixes from our post-1.0 backlog on iOS, and as we get ready to launch Circles Android on the Play Store.

If you're interested in Circles, please stop by and say hello in #circles:futo.org

Dept of SDKs and Frameworks 🧰

matrix-sdk-store-media-cache-wrapper (website)

ben reports

Just a quick one on the side: We have just announced the stable release of the matrix-sdk-store-media-cache-wrapper Rust crate on crates.io for the matrix-rust-sdk. If you, too, want to separate the internal store state from the downloaded media in a safe and secure way with your matrix-rust-sdk-based project, this is for you. Enjoy.

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

Emma [it/its] reports

Lots of changes this time around, and a whole homeserver test jig has started development!

Changes

  • Remote homeserver timeout increased from 2 minutes to 5 minutes.
  • Homeserver resolver now falls back to HTTP if HTTPS is not available (I should probably add a toggle for that ^^')
  • Fixed power level checks
  • API calls now use ResponseHeadersRead mode for responses, meaning that some larger API calls (eg. sync, mmebers, ...) now deserialise faster, due to being deserialised while still streaming!
  • DisbandRoomAsync was renamed to PermanentlyBrickRoomAsync in order to clarify it's function and intent.
  • Common sync filter presets now return ephemeral objects, meaning any change to their contents will no longer be reflected in calls later on (eg. between different clients)
  • Bot SDK: Command listener uses a very small sync filter (only m.room.message, by not self), as this allows far faster initialisation.

New features

  • Filter uploads now allow @me (literal) in senders/not_senders, these will be substituted by the current user's MXID. This allows far easier templating.

New sub-project: Rory&::LibMatrix.HomeserverEmulator

A new project has appeared! This is an attempt at having a quick and dirty "homeserver" implementation in order to allow for fast iteration on development whilst offline. Upon an attempt to log in, a random account is generated with random rooms, in order to provide "realistic" test data.

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict says

This week just a small bugfix release (v4.2.5) of Trixnity.

bugfixes:

  • fix deadlock in start/stop-sync handling (thanks to @justjanne:matrix.org for finding and analyzing this bug)
  • fix ConcurrentModificationException in Concurrent-Collections

simplematrixbotlib (website)

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

imbev reports

simplematrixbotlib releases v2.11.0

pypi: https://pypi.org/project/simplematrixbotlib/2.11.0/

git: https://codeberg.org/imbev/simplematrixbotlib/src/tag/v2.11.0

  • The on_reaction_event listener now uses matrix-nio's ReactionEvent instead of UnknownEvent

  • api.send_text_message method now has a reply_to parameter, making it easier to reply to events

  • The minimum matrix-nio version is now 0.24

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

bnjbvr announces

It's been a while since the last update for the Rust SDK, so we're happy to report many improvements since the last time!

  • New APIs have been added to the main SDK: reading and setting room power levels, retrieve interesting tags (favourite, low priority), marking a room as unread following MSC2867.
  • When creating a Client, a convenient way to auto-discover if an URL is a homeserver URL or a server name has been added: ClientBuilder::server_name_or_homeserver_url().
  • Work has started on a new Event Cache, which should help with extracting some useful features out of the Timeline API, and put them back into the main SDK. This includes notably: automatically retrying decryption after new keys have been received, back-pagination of events, computing unread markers and updating read receipts in a single place. Stay tuned as the work moves forward.
  • The Room List service has more filters (all, unread, groups, DMs, favourites), and can combine them together (and, not).
  • Timeline: it's now possible to mark a room as read (and let the SDK automatically select the event that will receive a read receipt).
  • And of course your usual bunch of bugfixes, internal refactorings and performance improvements. It would be too long to list them all, but those involve the following categories: sliding sync, unread markers, indexeddb, backup support, many at the FFI layer used for EX apps, etc.

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi announces

matrix-docker-ansible-deploy now supports the new mautrix-meta bridge (following news of the deprecation of the old mautrix bridges).

mautrix-meta is a single bridge, which can run in different modes and bridge to Messenger (via Facebook, Facebook over Tor or via Messenger) and Instagram. The playbook makes this bridge available via 2 separate Ansible roles, allowing you to easily run 2 instances of mautrix-meta, for bridging to both services at the same time.

Consult our changelog entry for more details on migrating.

Dept of Interesting Projects 🛰️

Aine announces

Matrix Rooms Search project got a huge under-the-hood update!

At etke.cc we were busy with instrumenting our projects this week, and the biggest impact is seen with the MRS.

But let's start with some highlights from the changelog first:

  • Integrated Sentry APM Tracing
  • Fixed Federation API discovery (thanks ralfi and tulir for localizing it)
  • Rewrote avatars logic
  • Rewrote outgoing http requests logic - fixed edge cases with odd context cancellations, added retrier for 5xx responses

And the impact is: new 765 online and federateable servers were discovered (+8.6%)! Moreover, 287 of them (+11.4%) are publishing room directories over federation 🎉

The updates were already tested on the demo instance, and the change is visible on the MatrixRooms.info/stats page (Feb 21 -> Feb 22).

Apart from that, MSC1929 integration has been reworked. From now on, MRS will try to use m.role.admin email(-s), and if none found, use any valid email present in the support file. Plus, MRS now serves the /.well-known/matrix/support file of its own. Documentation has been updated to reflect the changes.

Try MatrixRooms.info (even directly from your matrix apps!), check the source code, and say hi in the #mrs:etke.cc room

Matrix Federation Stats

Aine announces

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

As of today, 9567 Matrix federateable servers have been discovered by matrixrooms.info, 2801 (29.3%) of them are publishing their rooms directory over federation. The published directories contain 20071 rooms.

Stats timeline is available on MatrixRooms.info/stats

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.

Rank Hostname Median MS
1 ari.lt 247
2 nerdhouse.io 278
3 aguiarvieira.pt 284
4 envs.net 285
5 chatinamatrix.xyz 304
6 fostered.uk 305.5
7 plocki.org 417
8 matrix.its-tps.fr 430
9 utzutzutz.net 501
10 viorsan.space 744

#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.

Rank Hostname Median MS
1 nerdhouse.io 128
2 ari.lt 138
3 aguiarvieira.pt 167
4 dendrite.s3cr3t.me 170
5 fostered.uk 220
6 spritsail.io 222
7 matrix.its-tps.fr 226
8 chatinamatrix.xyz 234
9 h2.gay 304
10 darkness.services 350

That's all I know

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