πŸ”—Matrix Live

πŸ”—Dept of Status of Matrix 🌑️

πŸ”—Governing Board (website)

The Governing Board is an advisory board that is made up of elected representatives from all across the Matrix ecosystem.

Gwmngilfen reports

A few weeks ago the Governing Board brought you news of a Working Group process, and the first ones had been proposed using it. I'm happy to report that we now have our first two active Working Groups!

πŸ”—New Groups

Firstly, we have the Website Working Group, which (from their charter) has "responsibility for editorial and technical oversight of the main Matrix websites and social media channels. This includes the main matrix.org website, conference website, and the various social media channels". They've already had their first meetings, and you can find them in #matrix.org-website:matrix.org

Secondly, we have the Events Working Group, which (again from the charter) is "the main organising team of the official events hosted by the Foundation, such as the Matrix Conference or co-hosting FOSDEM Fringe". They are just spinning up their processes, and you can find them in #events-wg:matrix.org

πŸ”—More Groups Wanted

We want to see many more groups! We have a couple of new groups under consideration by the Board which I hope to bring you news of soon, but in the meantime, discussion and/or volunteering for potential new groups is very welcome in #governing-board-office:matrix.org ! (And yes, I still want to get the Docs and UX groups running, speak to me in that room if you wish to volunteer πŸ˜›)

Thanks for your efforts & work, on behalf of your Governing Board!

πŸ”—Department of website updates 🌐

πŸ”—Matrix.org Website Content and Contribution Documentation update

MTRNord (they/them) announces

For the people contributing to the matrix.org website, we had some longer standing questions about how to contribute and how our templates work. We finally got around after a little over a year of iteration to merging these documentations to our repository.

To give a short overview of the changes we made:

  • The CONTRIBUTING.md
    • now mentions our mission and target groups of the website
    • mentions how we measure progress on changes
    • Documents how we take decisions on content
    • was changed that we require PRs for changes to the website (though we leave some slack to this process where it makes sense)
  • The CONTENT.md - It is a whole new document about how you write content. You want to write a Blog post, a Documentation page, or add things to the ecosystem? You find this information here.

You can find both files in the root of our repo or at https://github.com/matrix-org/matrix.org/blob/main/CONTRIBUTING.md and https://github.com/matrix-org/matrix.org/blob/main/CONTENT.md

In case of feedback or unclear things, please open an issue in the repo at https://github.com/matrix-org/matrix.org/issues/new :)

πŸ”—Governing Board and Working Group Pages added to the website

MTRNord (they/them) says

This week, the Matrix.org website has seen two important updates. As part of our ongoing work to improve the site's content, we've added two new pages that provide more details on the governance and organizational structure of Matrix.

The first update is the new Governing Board Page, which outlines the members of the Governing Board and the processes involved in its operations. This page serves as a resource for those interested in learning more about the governance of Matrix.org.

The second addition is the Working Groups Page, which lists the various working groups within the Matrix community. On this page, you'll find information about each group's mission and matrix room.

As usual, you can report errors on https://github.com/matrix-org/matrix.org or reach the website working group in #matrix.org-website:matrix.org .

πŸ”—Dept of Servers 🏒

πŸ”—Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Andrew Morgan (anoa) {he/him} announces

πŸ”—Synapse

Hello everyone! This week the Element team released Synapse v1.126.0 with some minor new features and many bug fixes. Important things to note are:

  • By default, only server admins may add a room to a homeserver's public rooms list.
  • The expiry date of the signing key used to sign Synapse's debian packages was recently renewed. The old key is due to expire tomorrow, March 15th, 2025. If you have not updated your local copy of the key, you may experience issues with upgrading Synapse after this date. For most users, a simple apt-get upgrade should suffice.

Read more about both topics in the upgrade notes. 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+.

Doug says

@this-week-in:matrix.org

πŸ”—Element X iOS

This week we’ve been monitoring the TestFlight of version 25.03.2 which is our first build of the app with Rust’s event cache enabled. There have been numerous fixes in the SDK following all of the feedback we received and we’re planning to make a second TestFlight next week with all of these fixes incorporated.

Other than that we discovered an issue in the Notification extension causing it to exceed it’s memory limit (a generous 24MB), and we’ve started work on the detection of potentially malicious links being included in a formatted message.

And let’s sneak a small update on the classic Element iOS app into this post: The project has been updated to support Xcode 16, which hopefully will be the last time the app needs to switch Xcode versions 🀞

πŸ”—Dept of VoIP πŸ€™

πŸ”—Element Call (website)

Native Decentralised End-to-end Encrypted Group Calls in Matrix, as a standalone web app

Florian Heese says

πŸ”Š VoIP Updates: Element Call News!

Hey Matrix community! The VoIP team has some exciting updates on Element Call:

πŸ“– New README & Self-Hosting Guide

We've updated the README to better explain Standalone vs. Widget/In-App mode in Element Call and how calls work over federation. Alongside, we've also refreshed the self-hosting guide to help you set up your own instance.

πŸ“¦ New Bundling Mechanism for In-App use-case

A new bundling approach is coming to ensure Element Call Widget is included directly in Messenger App bundles. Planned rollout dates:

  • Element X -- 2025-03-31
  • Element Web & Desktop -- 2025-04-08

⚠️Heads-Up: Removal of fallback MatrixRTC backend

Currently, the default Element Call widget at call.element.io provides a fallback MatrixRTC backend (sponsored by Element) that helps in cases where a Matrix deployment lacks its own MatrixRTC backend.

With the move to In-App bundling, we plan to sunset this fallback soon. If you rely on this fallback, please follow the self-hosting guide to ensure your site deployment supports MatrixRTC/Element Call properly.

Stay tuned for more updates, and as always, happy hacking! πŸš€

πŸ”—Dept of SDKs and Frameworks 🧰

πŸ”—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

Ivan πŸ¦€ reports

πŸ”—matrix-rust-sdk

Several people are on a mission! We are pretty extremely busy running after each minute of the day to track the last bugs in the Event Cache. Meanwhile, the memory usage and the performance are being improved greatly in the Event Cache and in the Timeline. Also, great progresses are being made in OIDC and in the bindings. Finally, your regular dose of robustness in the crypto layer. Let's dig in together, it's an exciting time!

πŸ”—Event Cache

The Event Cache (matrix_sdk::event_cache) is a new API that stores all your events. It now supports lazy-loading, and thus provides an improved offline support, but also a much faster user experience. Before adding more features, we are tackling the last bugs. And, oh, how nasty they are. We can group the patches in a couple of categories.

Ensuring lazy-loading works everywhere:

  • Wait for the initial previous-batch token (#4724)
  • event looks inside the store (#4708)
  • Duplicated events are always removed (#4706)

Ensuring we don't miss events and we resolve gaps during syncs or backwards paginations correctly:

  • Don't remove a gap when it's the only chunk in memory (#4779)
  • Deduplicate events with the cache when they are received from a backwards pagination (#4748)
  • Remove an empty events chunk after pushing a gap in sync (#4734)
  • Consolidate the logic around retrieving the latest gap (#4733)
  • Call /messages directly in the room pagination (#4731)

A new super-power: a RoomEventCache automatically shrinks itself when no more subscribers are listening to it. It frees memory, your device says thank you:

  • Automatically shrink a room's linked chunk when all subscribers are gone (#4703)
  • Unload a linked chunk whenever we get a limited sync (#4694)

πŸ”—Timeline

The Timeline (matrix_sdk_ui::timeline) receives its prize too. It is now able to re-decrypt Unable To Decrypt (UTD) received by the Event Cache. (The decryption module will move into the Event Cache later). Another bug was fixed where too many read receipts were set on too many messages.

  • Decrypt TimelineEventKind::UnableToDecrypt coming from the event cache (#4794)
  • Adjust the event origins in the Timeline and the EventCache (#4795)
  • Don't duplicate read receipts of hidden events after a pagination (#4749)

πŸ”—Memory usage and Performance

Old devices? Low-end devices? You're in our hearts and you're not forgotten! A couple of patches improve the performance and reduce the memory usage greatly!

  • The memory usage of a Client has been reduced by a factor of 65'536Β times (#4787, #4799)
  • SqliteEventCacheStore is 35Β times faster, yup, you read it well (#4739)

πŸ”—Rooms

Matrix is about events and rooms right? Rooms have been improved!

  • If MSC3266 isn't implemented on your homeserver, invites room summary now fallbacks to another mechanism to fetch all the needed data (#4780)
  • A new EncryptionState type has been defined, it helps to clarify the 3 possible encryption states: Encrypted, NotEncrypted and Unknown (#4777)
  • Always know when a room is encrypted or not (with sliding sync); It saves calls to /state/m.room.encryption, thus providing faster feedback when opening a room or showing a notification (#4778)

πŸ”—Crypto

Crypto is relentlessly improving, making it more and more robust everyday! Who said decentralized end-to-end encryption was easy?

  • Redecrypt non-UTD messages to remove no-longer-relevant warning shields (#4644)
  • Retry decryption from a long-lived async task, instead of lots of detached ones (#4715)
  • Add support for the shared history flag defined in MSC3061 (#4700)
  • Use the DecryptedOlmV1Event when encrypting to-device events (#4690)

πŸ”—OIDC

Someone is putting OIDC on a rocket. We have a lift-off!

  • Align logout behavior with MSC4254 (#4674)
  • Merge session tokens (#4772)
  • Improvements to url_for_oidc (#4771)
  • Match the proper error type for invalid refresh token (#4767)
  • Use oauth2 for token revocation (#4763)
  • Start replacing mas-oidc-client with oauth2 (#4761)
  • Run integration tests for experimental-oidc feature too (#4727)
  • Align OidcAuthCodeUrlBuilder behavior with next-gen auth MSCs (#4699)

πŸ”—Refactoring

Because refactoring is part of the live-cycle of a project:

  • Extract TimelineBuilder tasks into their own functions (#4796)

πŸ”—Bindings

The bindings have been improved greatly too! First off, all the block_on calls have been removed, and the Tokio runtime starts fewer threads and blocking threads, thus reducing the memory usage again:

  • New way to provide a lightweight tokio runtime for memory-constrained apps (#4766)
  • Rename setup_tracing into init_platform (#4790)
  • Remove useless block_on (#4757)

Do you remember the new media retention policy? Now it's available for the bindings!

  • Allow clearing all the non-critical caches + set a media retention policy (#4745)

Finally, OIDC updates and room updates as seen above:

  • Restore some needed OIDC prompts in the FFI layer (#4791)
  • Add RoomInfo::encryption_state (#4788)
  • Remove Room::is_encrypted (#4786)
  • Unify a bit more Room::timeline_with_configuration and RoomListItem::init_timeline (#4735)

πŸ”—Misc

Multiverse, our tiny terminal debug-oriented Matrix client, is receiving some love:

  • Support passing a server URL (#4797)
  • Many small clean ups (#4764)
  • Don't wait for sync service state changes when shutting down (#4765)

Finally, the Matrix Rust SDK is faster to build in release mode with LTO disabled:

  • Disable LTO on release builds (#4751)

πŸ”—Good Luck Ben

We say good luck to Benjamin for his talk at Rust in Paris about How To Compile Rust Code Faster: Compiler 101. It's today!

πŸ”—Dept of Ops πŸ› 

tulir says

πŸ”—synapse-http-antispam

I made a new Synapse module which registers spam checker callbacks and forwards calls to another service over HTTP: https://github.com/maunium/synapse-http-antispam

Meowlnir now implements the user_may_invite callback to block incoming invites based on moderation policy lists.

πŸ”—Dept of Bots πŸ€–

tulir says

πŸ”—Meowlnir

In addition to blocking invites via synapse-http-antispam, Meowlnir received some other new features, such as managing server ACLs and kicking users using glob patterns. It also now implements MSC4204: m.takedown moderation policy recommendation and MSC4205: Hashed moderation policy entities.

Tom Foster [he/him] announces

πŸ”—nsfwbot Image Moderation Bot for Matrix v0.3.0

This plugin has been going strong for over 6 months! πŸŽ‰ As well as CI testing and general other maintenance, we now have some strong quality of life improvements based on real-world usage and feedback:

  • Complete Code Restructuring: Refactored from a single file to a cleaner, object-oriented architecture for better maintainability and readability.
  • Configurable Threshold: You can now set your own threshold for NSFW detection (default 0.65) to help avoid false-positives while maintaining effective detection.
  • Enhanced Error Handling: Improved handling of image processing errors, including the option to either ignore processing errors or report them to your moderation room.

More feedback is always appreciated. Future enhancements may include user banning options and wider support for additional filetypes, so contributions in this area would be very welcome! Visit the GitHub Repo for more info!

πŸ”—Dept of Events and Talks πŸ—£οΈ

HarHarLinks reports

πŸ”—Matrix @ FOSSASIA 2025

ΰΈͺΰΈ§ΰΈ±ΰΈͺΰΈ”ΰΈ΅ΰΈ„ΰΈ£ΰΈ±ΰΈš from Bangkok πŸ‡ΉπŸ‡­! A few Matrix enthusiasts have gathered here at FOSSASIA to make Matrix better known in Asia! We have a booth on the exhibition floor and multiple talks!

On Thursday, Yan gave an introduction and overview of Matrix on the security track. Just now, Nadine is giving a talk on interoperability on the Open Source 101 track. Tomorrow, I (HarHarLinks) am going to talk about Tuning Your Chat also on the Open Source 101 track. Streams are available on YouTube and recordings will available soonℒ️

People are very enthusiastic about nurturing the Open Source community and awareness across Asia. Matrix is not very well-known, but people are excited about the possibilities of an open, sovereign, and secure communication technology.

FOSSASIA ending will also mark the end of the Matrix Workation Asia 2025. We had an amazing time in Thailand, and are looking forward to the next workation. Stay tuned!

Matrix booth at FOSSASIA 2025 represented by HarHarLinks, and Nadine

Matrix booth at FOSSASIA 2025 represented by HarHarLinks, and Nadine

πŸ”—Matrix Federation Stats

Aine [don't DM] announces

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

As of today, 10834 Matrix federateable servers have been discovered by matrixrooms.info, 3204 (29.6%) of them are publishing their rooms directory over federation. The published directories contain 20415 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
1rory.gay212
2bi-vibes.com216
3nexy7574.uk217
4conduwu.it235
5usbpc.xyz247
6codestorm.net259.5
7synapse.rntpts.de288
8maunium.net295
9tomfos.tr308.5
10catvibers.me311

πŸ”—That's all I know

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

To learn more about how to prepare an entry for TWIM check out the TWIM guide.

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