Matrix Live

Dept of Spec 📜

Andrew Morgan (anoa) {he/him} 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:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

This last week's focus was primarily spent on ensuring MSCs are moving towards Final Comment Period (FCP; the step before an MSC is accepted) at a healthy pace. Below are the MSCs which were on Tuesday's pings, and their current status:

  • MSC3916: Authenticated media
    • Needs just 2 more checkmarks SCT members to enter FCP (started the week needing 6).
  • MSC4138: More methods in CORS
    • Needs 1 more checkmark from the SCT to enter FCP (started the week needing 1).
    • Currently blocked on clarified text regarding its scope.
  • MSC2781: Removing reply/edit fallbacks
    • Needs just 2 more checkmark from the SCT to enter FCP (started the week needing 2).
    • Currently blocked on some clarified behaviour and process ordering.
  • MSC2867: Marking rooms as unread
    • Needs checkmarks from 3 more SCT members to enter FCP (started the week needing 3).
    • Currently blocked on ensuring that this addition to spec doesn't make notifications more complicated.

Client and server developers are encouraged to review these MSCs in particular because they're on a path to being included in the next spec version. This doesn't have to mean implementing them, but if there's something which doesn't sound quite right in the proposal text then leave a comment on the diff to raise a concern. The SCT will take these comments into consideration as the MSC enters FCP - the 5 day countdown to ensure any last comments are considered before the proposal is accepted into the spec as stable.

Next week's focus will largely be the same as usual: we'll focus on unblocking Matrix 2.0 MSCs/features as a priority, and MSCs which require more checkboxes to enter FCP will be raised for prompt review. We're always on the lookout for MSCs ready for FCP, but can sometimes miss something - let us know in #sct-office:matrix.org if it looks like something is ready to go but hasn't caught our eye yet.

Dept of Bridges 🌉

IMAP/Mastodon MAP Bridges

jbara announces

Two new bridges are in town !!

Mastodon Bridge

For a long time, there were no Mastodon bridges, but now we have one! Currently a work-in-progress, this bridge uses masto.js to manage a Mastodon account. It offers basic functionalities like receiving tagged posts in the designated chatroom and posting with tag support. Many more features are on the way, so stay tuned!

Email Bridge

We've also developed a new email bridge that takes things a step further than postmoogle. With imap-map-bridge, you can now use your personal email, making it the first Matrix puppeting bridge that lets you bridge your email account. This bridge works as a mail client using nodemailer for sending and node-imap for receiving emails. This allows you to send and receive emails from your Matrix client in designated room(s).

Both bridges utilize the matrix-appservice-bridge library and are currently in the alpha stage. We welcome any feedback or contributions from the community!

Dept of Clients 📱

Element X Android (website)

Android Matrix messenger application using the Matrix Rust Sdk and Jetpack Compose

Jorge reports

Another week, another TWIM for EX Android! This week the main changes we made were:

  • 📬️ One of the most requested feature by the community: adding a setting to change your push provider in Settings > Notifications > Advanced settings. It'll only be available if it detects both Google Play Services support and NTFY installed in the device.
  • 🚢 Reproducible builds for F-Droid: we got very close to achieving it for the last release, we hope everything will be OK for the next one and we'll finally be able to release new versions on F-Droid!
  • 🗨️ A simplified way to display notifications. We previously had to maintain a persistence layer which made the system way more complex and caused some unexpected issues. With this, your notifications should be more reliable, although if the app is killed and restarted your previous notifications won't be restored. You'll have to navigate to the room list and enable the 'unread' filter to see what you missed.
  • 🆙 To achieve the change in notification handling we had to bump the minimum supported OS version for the app to Android 7 (API 24). While we're usually not eager to bump the minimum supported version by the app, the fix above was probably worth it. We hope this change won't affect too many users.
  • 🔑 Sign in with QR code was finally merged! However, since this feature requires your homeserver to also support it, it'll take some time to get everything ready to enable it for all users.
  • 🧑‍🤝‍🧑 Better support for auto-generated names for DMs.
  • 🚀 Improvements for the animations when enabling/disabling room filters. Thanks frebib!

Dept of SDKs and Frameworks 🧰

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

Emma [it/its] reports

Woah, it's been a month since I last posted an update? Some bugs were squashed, some developer experience improvements, but most importantly of all...

Call for help!

A large rewrite of how events are handled in LibMatrix is being attempted. If you know C# and want to try a hand at implementing better handling of events in LibMatrix, feel free to join in! During this work, some naming changes are also being considered.

The goal of this work is to improve the experience of developing around, binding against and using LibMatrix, and to make it so editing events is non-destructive to existing and custom content.

Another goal is to potentially allow building LibMatrix into Ahead-of-Time compiled applications, as this should give a massive performance boost!

Additions

  • Valid membership types are now defined as constants so these are available to developers for easier reference.
  • Some logging has been added to warn if a piece of code attempts to access a mapped representation of an unknown event type, which may point to a developer having missed registration. Similarly, logging has been added if a developer tries to register a given event type multiple times.

Changes

  • [!!] LibMatrix feature development is now split up into separate branches. This aims to make LibMatrix easier to link against as the master branch should now be considered more "stable", and should allow committing changes to be more forgiving since one doesn't have to think as much about pushing unfinished code.
  • A failure during homeserver delegation lookup will no longer cause applications to hang on a second attempt.
  • All HTTP connections are now routed through a single HttpClient, which means you should now see far less connection negotiation time every time a new MatrixHttpClient is instantiated. This is caused by the fact that HttpClient keeps connections alive. This behavior can be reverted by building LibMatrix with a build flag.
  • Passing a proxy to homeserver instantiation no longer uses a method that breaks some ways a developer might do debugging.

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!

Matrix Rust SDK

bnjbvr says

Oh wow, it's been a while since the last update, and the Rust team has been quite busy in the meanwhile! I'll try to keep it short, but here are the biggest improvements we've made over the last month or so, approximately in chronological order:

  • Support for MSC3266 for fetching room previews. The Client::get_room_preview() will try to use the info of a known room first, then use MSC3266, then resort to using state events from that room, to get enough preview info to display for a room before joining it.
  • It's now possible to open a "detached" Timeline, that is focused on a specific event, for instance after clicking a permalink. In this case, it allows for interactive backward and forward pagination, and won't show live events as they're synced.
  • There's an optional UTD hook in place that gets called every time the Timeline sees an event that couldn't be decrypted. This is what powers statistics on UTDs at Element for the ElementX apps, and allows us to track the number of UTDs over time.
  • In crypto-land, support for secret bundles as well as logging in with QR code using OIDC has landed in the SDK. This has been awaited for years, and it was quite a large project, congratulations to all involved in turning this into reality!
  • The work on the EventCache storage is moving forwards nicely, with internal listeners to observe updates onto the internal Linked Chunks data structures.
  • Support for Matrix RTC call notifications has landed.
  • Computing a room's display name is now more often done client-side, even in the presence of a sliding sync proxy; before, it would be the proxy computing a room name, and the client plainly reused that. This will enable new use cases, like being able to translate DM room names based on the user's language.
  • And a large number of internal refactorings, bug fixes, dependency updates, code and testing improvements all over the place.

Our focus for the next weeks is going to be work on the EventCache, implementing a more robust sending queue that's available outside the Timeline API, and polishing the QR code login and other fun stuff. All hail the Holy Crab!

matrix-nio

OdoItal reports

matrix-nio 0.25.0rc2 is available as a release candidate; there've been a lot of changes since 0.24.0, including some that may reasonably be called "breaking" depending on what parts of the private API are being used.

I'm still planning on updating the changelog properly, but I figured it was at least high time that the changes themselves be made available for easy installation first.

But the two biggest changes that I'd appreciate any feedback/bug reports on:

  • Compliance with MSC2844 (using the v3 endpoints instead of r0)

  • Adding threading/aggregated event relations/threaded read receipts API support

    • Basically it's now possible to iterate through events in a thread root, or aggregated related events (such as m.react!) on a message

New methods on AsyncClient of note:

Elm SDK (website)

A more consistent alternative to the matrix-js-sdk, written in Elm.

Bram says

With the new beta version 3.3.0, the SDK can finally talk to the Matrix API! It's simple for now, but this live demo WITH debugging tool shows the simplicity of sending message events to a room. This means that the Elm SDK now has the same functionality as a mature Matrix webhook! 🎉

If you have any questions, you'd like to get involved or you'd like to know more, feel free to join the conversation at #elm-sdk:matrix.org. Given that Elm compiles to JS, the Elm SDK aims to be a more rigorous alternative to the matrix-js-sdk, so any feedback on the way is welcome. 🚀

Dept of Events and Talks 🗣️

Matrix User Meetup Berlin

saces says

Next Matrix user meetup 5.6.2024, 8 pm @ c-base

Meet other matrix users, chat about Matrix, the rest, and everything else, discuss your Matrix ideas, sign each other in persona, and maybe spice the evening with a good mate or beer.

Also when the bbq is lit you may wish you brougth your favorite item :)

Every first Wednesday of the month in the c-base at 8pm ('til the next pandemic).

Matrix room: #mumb:c-base.org

Dept of Interesting Projects 🛰️

clokep reports

I’ve updated the homeserver spec versions dashboard with supported room versions and the default room version over time for each homeserver.

I also corrected a few inaccurate pieces of data folks found with the supported spec versions data. (Thank you!)

Matrix Federation Stats

Aine reports

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

As of today, 9424 Matrix federateable servers have been discovered by matrixrooms.info, 2852 (30.3%) of them are publishing their rooms directory over federation. The published directories contain 160435 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.

RankHostnameMedian MS
1doctoruwu.uk202
2awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay231.5
3girlboss.ceo239.5
4uwu.sulian.eu264
5aguiarvieira.pt285
6maunium.net302
7craftingcomrades.net325.5
8sulian.eu427
9lewd.social435.5
10plocki.org438

#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
1doctoruwu.uk83
2authenyo.xyz90
3girlboss.ceo100
4uwu.sulian.eu123
5awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay127
6nerdhouse.io164.5
7aguiarvieira.pt176
8dendrite.s3cr3t.me185.5
9sulian.eu209
10feline.support258.5

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