Matrix Live

Dept of Status of Matrix 🌡️

Josh Simmons reports

The wait is over! We are now accepting applications from projects and organizations that want to join the Foundation as Ecosystem and Associate Members.

You may recall that in December we announced two new membership tiers to ensure we have healthy community representation as we introduce more open governance for Matrix. Specifically, we created Ecosystem and Associate Member tiers. Ecosystem Members are open source projects that speak Matrix, and Associate Members are FOSS foundations, nonprofits, and academic institutions.

We’re excited to bring more folks into the fold, and thrilled to welcome Thunderbird, Draupnir, and Conduit as our first Ecosystem Members 🎉 Curious who else has joined as a member recently? Check out our Supporters.

We’d also like to recognize Thunderbird for sponsoring the Foundation, which helps us get a little bit closer to making the Foundation’s activities sustainable 🚀

Thib announces

There is a question we often get asked: why do you operate the Matrix.org homeserver, and why do you keep registrations open? We don't want to become the gmail.com of Matrix after all. We covered those in this post.

https://matrix.org/blog/2024/03/why-matrix-org/

Dept of Spec 📜

Andrew Morgan (anoa) says

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:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

Next Friday, March 22nd, is the release date of Matrix v1.10! Watch this space for when the blog post goes live.

A new release of the spec means it's planning time for the subsequent one. For v1.11 we're looking to focus on Trust & Safety, authenticated media and Extensible Events. See this message in the Office of the Matrix Spec Core Team room for further details. If you have something that you'd like to suggest that isn't already on that list, please do so in that room!

Otherwise there has been lots of activity in the spec-writing side of things this week. 5 new PRs and 2 merged during this week alone! A mix of spec PRs and general fixes/improvements to the spec itself. Thank you to everyone who's pitching in!

Random MSC of the Week

The random MSC of the week is... MSC3999: Add causal parameter to /timestamp_to_event!

The gist of this proposal is that the existing GET /_matrix/client/v1/rooms/{roomId}/timestamp_to_event endpoint (which allows you to jump to a point in a room based on a given date and time), could suffer from some edge cases. Particularly if you're heavily using /timestamp_to_event to form your room timeline (which the Matrix Viewer does).

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Andrew Morgan (anoa) announces

Synapse v1.103.0 is due out next week, carrying with it some upcoming features and bug fixes:

  • Stabilise, and enable by default, support for MSC4041 (Retry-After header).
  • Fix performance issues when joining very large rooms that can cause the server to lock up (thanks to @ggogel for their persistence on this one!)
  • Fix a bug introduced in v1.76.0 that prevented joining remote rooms when a module uses the on_new_event callback.

...and more!

We have a release candidate out (v1.103.0rc1) if you would like to help test early and shake out any bugs before the full release. Otherwise, expect v1.103.0 to land next week. Thanks!

Dept of Clients 📱

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

  • Release candidate 1.5.13 to be released soon! it will include filters and mark as read/unread/favourite
  • We improved our testing by having all of our views preview tested on both iPhone and iPad and multiple languages
  • A lot of progress has been done on moderation management in rooms.
  • We improved our logging for UTD events, this will help us improve the quality of decryption over time.

Element X Android (website)

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

benoit announces

  • Element X Android 0.4.5 is now in production. It adds the ability to mark a room as favourite and adds some action regarding moderation (moderation is still under a disabled feature flag).
  • The next release candidate (0.4.6) can already be downloaded from GitHub here: https://github.com/element-hq/element-x-android/releases/tag/v0.4.6 and will soon be available on the PlayStore if you’re a tester. The loading of the room members is much faster, especially in crowded rooms, and the UX has been tweaked too.
  • We are working on room filtering, but the feature is not enabled yet on production. You can use the nightly build to be able to enable it from the settings, Developer options.
  • The room moderation feature is now closer to completion: if you are an admin you can now change the roles of other users, the default power levels for some actions. If you are either an admin or a moderator you can now remove, ban or unban users.
  • We are also working on a tool to be able to check the quality of Element X Android translations. It is available at https://element-hq.github.io/element-x-android/ If you spot any mistakes / typo / inconsistency in any languages, feel free to reach us! You can help translate the application at https://localazy.com/p/element. We manage the translations in French and German, but other languages are provided by the community. Also, we enable the language only if the translation progress is close to 100%. For layout issues, please report an issue using https://github.com/element-hq/element-x-android/issues/new/choose. Thanks!

Beeper (website)

All you chats in one app.

tulir says

We've released a new Android app that's awesome and rebuilt from the ground up instead of being an Element fork. It uses Kotlin and Jetpack Compose for the UI and mautrix-go for all the Matrix things. For more details, check out our blog post: https://blog.beeper.com/p/new-beeper-android-app-open-beta

Dept of SDKs and Frameworks 🧰

Matrix Rust SDK

bnjbvr announces

  • More logging has been added to the crypto crate, to better understand unable-to-decrypt (UTD) events. In particular, it's possible to listen to the UI timeline's UTDs events, using a special dedicated hook
  • Back-pagination has been added to the Event Cache, and the UI timeline now makes use of that, in place of its own code.
  • The event cache now has an experimental fancy data structure to represent events, implemented as a linked list of chunks. It's not used yet, but it's being integrated.
  • A filter to show only invites has been added to the Room List service.
  • When fetching all the room members, the computation for disambiguating names has been optimized, resulting in much smaller run times for Room::sync_members() et al. (And a benchmark has been added to prove it!)
  • And your usual load of refactorings and smaller bugfixes and improvements.

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

Emma [it/its] reports

Working on some scope cleanup, moving utilities into subclasses in order to make extensions more cleanly separated, along with some nice bot changes, in order to allow more versatility and customisation.

Changes

  • Moved named filters to hs.NamedCaches.FilterCache
    • This also means that any named filter handling functions have been removed from AuthenticatedHomeserverGeneric
  • Bot utils: AddMatrixBot no longer adds default commands (see additions)

Additions

  • Added BodyWithoutReplyFallback to RoomMessageEventContent
  • Added file/media cache at hs.NamedCaches.FileCache
    • This allows avoiding reuploads of files that are commonly reused, such as reaction images
  • Added WithCustomEmoji(string mxcUri, string name) to MessageBuilder
    • You can now add custom emojis to messages, whether you're using a custom emoji pack or not
  • Added WithCodeBlock(string code, string language = "") to MessageBuilder
  • Added WithCollapsibleSection to MessageBuilder - sometimes a code blocks or details can get very long :)
  • Added generic named cache implementation (NamedCache<T>(string name))
    • You can now easily implement your own caches mapped to account data as Dictionary<string, T>
    • Language is optional but can be omitted for clients that don't support it
  • Added hs.NamedCaches in order to group named caches for different data types
  • Bot utils: Added extended bot configuration support:
    • AddMatrixBot no longer adds command support or default commands
    • There's a configuration option (MentionPrefix), to allow mentioning the bot directly, as prefix
    • Added methods to services.AddMatrixBot():
      • AddCommandHandler() - Adds command handler
      • AddCommands(Type[] commandClasses) - Allows adding a list of command classes, without necessarily including builtins like !help
      • DiscoverAllCommands() - Registers all commands that can be found, including builtins such as !help
      • WithInviteHandler(Func<InviteEvent, Task> handler) - Allows easy addition of invite handling with custom logic (eg. must be in x room)
      • WithCommandResultHandler(Func<CommandResult, Task> handler) - Allows overriding command/permission error handling in order to add custom messages, or extra logging
  • Bot utils: Added Aliases and Unlisted to ICommand, allowing bots to add aliases and hide commands from !help
  • Bot utils: Added support for multiple prefixes, and prefixes with spaces (needs more testing)
  • Bot utils: Added support for command names with spaces (needs more testing)

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!

Dept of Events and Talks 🗣️

Netzpolitischer Abend

HarHarLinks reports

Every first Tuesday of the month, the Digitale Gesellschaft e.V. ("digital society") hosts the Netzpolitischer Abend ("internet politics evening") at c-base Berlin, Germany, with - you may have guessed it already - talks covering digital and internet politics (usually in German). I hope that does not stop you, because the 134th edition from 1709665200 2024-03-05 20:00 CET featured talks on some great topics ranging from Feminist Internet Politics over Freedom of Press to the Latest News on Chat Control. The most interesting topics to you, dear TWIM reader, might be Nadine's update on her Polychat project (#polychat-ambassadors:datanauten.de) and Yan (aka yncyrydybyl aka t) giving a brief introduction on the Matrix protocol and Foundation, an overview how Matrix is being implemented in the German public administration, and answering questions from the in-person attendees. View Yan's talk on YouTube, Vimeo, or watch the live stream of the whole evening here. Here are some links to the things Yan shows in his presentation, I tried to also include links to the English versions where available:

Tip: If you'd like to follow Digitale Gesellschaft/Netzpolitischer Abend, you can subscribe to their social media or their website feed/youtube feed using your favorite tool; mine is called hookshot.

Andy's Matrix bot live stream

andybalaam announces

I'm still live-streaming hacking on a Matrix bot in Rust every week, Thursdays at 15:00 UK time. Watch the streams live on https://andybalaam.uk.to/ and find the recordings at https://diode.zone/c/andybalaam_programming/videos

Dept of Interesting Projects 🛰️

Gregor announces

External videos & posts, reaction images, polls… There are many things I like to see inline in conversations without having to follow a link. emweb is a prototype for a lightweight protocol to solve for all of these and more, while keeping implementation burden low.

I am looking for interested parties that want to help refine the idea, especially with regard to security and UX. There is also a lot more prototypes to build and spread inspiration. A few from the top of my mind: coin flips, games likes tic tac toe or chess, live location sharing…

So far I have two scrappy host implementations: one for the Matrix client Cinny (hosted here) and one for the Mastodon client Elk (hosted here). The Elk fork is not just an emweb-host but also a guest, so you can send links to Mastodon posts on it within the emweb fork of Cinny, and they will be directly embedded into your chat.

If this piqued your interest, talk to me @Gregor:matrix.org

Matrix Federation Stats

Aine announces

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

As of today, 9473 Matrix federateable servers have been discovered by matrixrooms.info, 2816 (29.7%) of them are publishing their rooms directory over federation. The published directories contain 20025 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
1maunium.net247
2nerdhouse.io291
3075-141-169-120.res.spectrum.com:8447343
4aguiarvieira.pt346
5plocki.org420
6chatinamatrix.xyz474
7ilmari.org476
8matrix.netho.tk537
9littlevortex.net646
10rom4nik.pl678.5

#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.me154
2aguiarvieira.pt182
3pain.agency204.5
4matrix.its-tps.fr216
5spritsail.io235
6transfem.dev367
7inu.is439.5
8matrix.org524.5
9herkinf.de601
10doctoruwu.uk672

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