Reading view

There are new articles available, click to refresh the page.

Matrix in full force at FOSDEM

By: Thib

The Matrix.org Foundation and community are very happy to announce that this year, they will be in full force at FOSDEM, with a community event right before the conference, a booth to welcome everyone during the conference, and a dev room to explore topics in depth!

Jan 31 - Matrix Community Event

We organize an event before FOSDEM for the community to meet and talk about Matrix without fear of missing out on all the great talks at FOSDEM. The event will take place on January 31 at 1 pm CET at HSBXL and last the whole afternoon. Please note that HSBXL moved since last year.

A picture of a group of people smiling, behind a Matrix flag

It's an unconference/barcamp: come and bring your ideas, share them at the beginning of the event, and small groups will form spontaneously.

Please note that the Matrix Community Event has the same Health & Safety Policy as the Matrix Conference.

As last year, attending the event is free, and we're looking for sponsors to show their commitment to the ecosystem by refreshing our community with drinks and feeding it with pizzas! Of course, you will be credited in our event wrap-up post on matrix.org. We're open to additional ideas to get you the recognition you deserve.

Join the FOSDEM Barcamp room if you're interested in the event, and reach out to events-wg@foundation.matrix.org to sponsor!

Feb 1&2 - Booth

This year again, we are happy to have a booth for the duration of the event. This is our opportunity to talk with the broader open-source community, share our latest updates, and listen to people's feedback. We can also help the broader community spread the word with cool stickers and T-shirts!

A picture of three male presenting people behind a table, smiling in front of Matrix branded t-shirts and stickers

We're looking for volunteers to run the booth with us. This includes talking to the community, sharing project news, and selling merch. Don't worry if it's your first time: We have a booth handbook ready for volunteers and want to limit the time commitment to 2 hours per day.

Reach out to events-wg@foundation.matrix.org if you're interested in staffing the booth with us! We will work out together which slot works best for you. People who sign up before December 15 are entitled to a special edition T-shirt!

Feb 2 - DevRoom

Some topics are too complex to be discussed at a booth. Fortunately, we have a DevRoom on Sunday 2 afternoon to talk about topics in greater depth. Be it a technical talk about state resolution or a success story about how Matrix got deployed in your organization, we want to hear about it all!

A picture of Matthew & Amandine presenting their slides. Amandine holds the microphone from Matthew. They're in front of slides spelling out "5 years from now, everyone will communicate via Matrix"

The Call for Proposals is still open, but be quick! It will close on December 1, and we can't bypass that deadline!

The whole team is looking forward to meeting you at FOSDEM!

This Week in Matrix 2024-11-15

By: MTRNord

Dept of Status of Matrix 🌡️

Sunsetting the Sliding Sync Proxy: Moving to Native Support

Will L announces

Work on Sliding Sync – which provides a significantly faster and more scalable sync experience in Matrix clients – has moved to focus on native support, and away from the proxy.

The Sliding Sync Proxy on the Matrix.org homeserver will be decommissioned on November 21st, and client support in Element X will be removed on January 17th.

More details for users as well as server and client developers in Matrix.org's latest blog post

First Official Governing Board Meeting

HarHarLinks says

It is Friday TWIMday the 15th of November, and the Governing Board just came out of their first official meeting after the informal one at the Matrix Conference back in September. The focus of this meeting was to define the structure of the Governing Board, so we expect the results will not have an immediate tangible effect outside the Governing Board, but it gives the Governing Board the basic process to enable taking more perceptible decisions.

This includes discussion about how we want to communicate with each other, but we also defined how we vote on actual decisions and some other basic rules for the Governing Board. As a part of that we elected a chair and vice chair for the Governing Board, who are going to help the Governing Board with facilitation tasks. Greg "Gwmngilfen" (chair) and Kim "HarHarLinks" (vice) were elected and are happy to share this post as one of our first actions in this role today. 😁 We also started some subcommittees of the Governing Board, to enable us to work efficiently in smaller groups focussed on specific topics. The rough topics for the initial four committees are Governance, Trust & Safety, Community, and Finances. What their exact scopes are going to be is left as a first task to the respective committees to define along with other bootstrapping, such as electing committee chairs and vice chairs. The set of initial committees is intentionally kept small to remain flexible and open the door for refining them later when we have more experience with how our day to day operations look like. We also discussed defining initial working groups, which would be structured as groups below the committees to fulfil more specific roles and would be the primary way for the Governing Board to include the community. However, we decided to defer that to the committees for now. We got through all the big parts on our agenda but ran out of time before having a formal vote on what communication tools we want to use. We have a great proposal which we are going to vote on asynchronously.

In general we had quite a productive meeting and reached agreements on many topics with clear next steps in other areas. The Governing Board might not have tackled yet the topics you would have prioritised, but it now has an asynchronous voting process and should be able to progress in other areas using the committees.

See you soon with more news from the Governing Board!

Dept of Spec 📜

Andrew Morgan (anoa) {he/him} [back Nov 5] 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:

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 Update

Once again there has been a flurry of activity on the spec repo itself, with Kévin Commaille continuing to fix up various aspects of the spec and the technical underpinnings of the website itself. They are also writing up spec PRs for recently accepted MSCs, such as MSC2781: Remove the reply fallbacks from the specification and MSC4138: Update allowed HTTP methods in CORS responses.

Many kudos for their continued efforts on advancing the spec!

Homeserver Deployment 📥️

Element Docker Demo

Matthew says

Last week I teased https://github.com/element-hq/element-docker-demo on Matrix Live - a two-liner for standing up a Matrix 2.0 stack for experimentation: ./setup.sh; docker compose up.

This week I published a proper walkthrough showing how you can use it for both a local setup with mkcert as well as a federated server setup with letsencrypt, complete with QR login and federated MatrixRTC calling with Element Call. The point is to show just how simple it can be to play with Matrix 2.0 and let folks experiment with the implementations (and help ensure any issues are flushed out before it gets baked into the spec for good!)

Today's Matrix Live: https://youtube.com/watch?v=6iMi5BiQcoI

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 reports

  • Knocking work is still going on, some other UIs have been implemented.
  • Local echoes for media work has made good progress and will be enable in Nightly and development builds
  • Share extension work is now also available in Nightly! Be sure to try it out!
  • Finnish has been added to the available languages
  • The app is now fully supporting XCode 16.1

Dept of VoIP 🤙

Element Call (website)

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

spaetz announces

Given the installation of an element call is still tricky (although there is a demo docker image now, rectifying this), here are my notes on how I installed element call (or rather its backend) on a Debian box using a mix of local services and a docker image: https://sspaeth.de/2024/11/sfu/

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for developing Clients, Bots, Appservices and Servers

Benedict announces

I released a new version of Trixnity. It now supports Ktor 3 including an up to 90% performance boost for IO operations.

Dept of Services 🚀

etke.cc (website)

Your matrix server on your conditions

Aine [don't DM] reports

Synapse Admin Updates

A while back, we at etke.cc announced our Synapse-Admin fork, and this week we're excited to share more new features and QoL changes!

Prevent accidental user overwrites

The Synapse Admin API endpoint for creating new users and updating existing ones is actually a single Create or modify endpoint, that means you could accidentally overwrite an existing user when you don't mean to. This change adds a username availability check to the user create/edit form that will warn you if you're trying to "create" a user with a username that's already taken. If you accidentally ignore this inline warning message, you will see a modal window upon saving which will ask if you really intend to overwrite the existing user or not.

Why not just disable overwriting completely and only allow editing via the proper "edit user" UI? Because overwriting an existing user is the only user-friendly way to reclaim an erased user / MXID, so completely removing this feature is not a good idea!

Allow providing login form details via GET params

This is a small QoL change - now you could bookmark Synapse Admin URL with prefilled username and homeserver, e.g. https://admin.etke.cc/?username=matrixadmin&homeserver=matrix.example.com. Not a big deal, but nice to have.

Automatically check for updates

The Synapse Admin will do the same thing as Element Web by asking for static files in the background (every hour). If the index page is changed, it will show a notification with a button to reload the page - yep, another small quality-of-life improvement

Source code, admin.etke.cc (CDN version), say hi in the #synapse-admin:etke.cc

Dept of Events and Talks 🗣️

Fedora launch with Matrix Automation

Adrian says

This week, (basically right now) Fedora is running a Virtual event to commemorate the release of Fedora 41.

This year we're continuing to use Matrix as the chat platform for the event and my Pretix invite bot (https://github.com/fedora-infra/maubot-pretix-invite) has been slowly gaining improvements and has been fairly useful in bulk inviting people from this registration form to the Matrix rooms.

If you're able to sign up before noon Eastern, U.S. time, here is the link: https://rsvp.fedoraproject.org/releases/f41-latam-na/

If not, you can join the live stream on Fedora's YouTube channel or wait for the recordings to come out after the event.

Happy F41!

Matrix in a Podcast

@mcnesium:matrix.org says

Last week a friend and I were invited to join this podcast show to talk about Matrix and what makes it different from XMPP. The show is a rather casual chat and in German, but HarHarLinks suggested to announce it here anyway.

FOSDEM Fringe

HarHarLinks announces

Last TWIM we announced the Matrix Devroom at FOSDEM 2025. Two years ago, the Matrix community started a FOSDEM fringe event: The Matrix Foundation and Community Meetup and BarCamp (what a mouthful!). We are happy to announce to be continuing this series!

Like the last times, the fringe event will take place at the local hackerspace HSBXL hackerspace - but if you were there last time, ⚠️ be aware that they moved to a new location! ⚠️ You can find everything about it at https://hsbxl.be/enter/.

The event will start around noon and run until the evening. The last two times we were incredibly happy to find amazing sponsors that enabled us to provide free drinks and pizza for attendees, and we would like to stick to that tradition! If you are interested in sponsoring the fringe event, be it for pizza, drinks or another idea you have, please approach us on Matrix through the Community Events room, the Foundation Office room or by email at mailto:events-wg@foundation.matrix.org.

Beyond that, watch this space for more FOSDEM news to be announced!

Dept of Interesting Projects 🛰️

TARDIS - Time Agnostic Room DAG Inspection Service

Kegan reports

tl;dr - there's a new room DAG visualiser called TARDIS that can do real state resolution.

I've always struggled to properly understand how the state resolution algorithm works. I find it hard to understand the specification, and various blog posts didn't really make things click for me.

With that in mind, I recently spent some time working on a visualisation tool based on a project Matthew first wrote back in 2020 called TARDIS - Time Agnostic Room DAG Inspection Service. The backronym is surprisingly accurate. With this tool, you can step through "debugger-style" events in a room, seeing the shape of the DAG change. Originally this was all it could do, but I knew it could be so much more, so I set about prototyping the improvements I would make to it.

The main thing I wanted to add was the ability to actually perform state resolution on the DAG as it appeared at that point in time. Being able to do this would unlock a number of possibilities:

  • Teaching: example DAGs could be loaded to explain how state resolution really works.
  • Debugging: developers can load existing rooms into TARDIS to debug incorrect room state calculations.
  • Testing: drop the UI and DAGs could be automatically loaded, resolved and asserted that the state at each event is correct, effectively making a server agnostic state resolution test suite.
  • Performance: complex graphs can be repeatedly resolved, and the architecture would allow us to calculate and visualise how the algorithm is walking the DAG to see how efficient it is.
  • Experimentation: any state resolution or DAG changes to the protocol could be visualised.

I wasn't given a lot of time to work on this, but I did manage to achieve the teaching/debugging aims. I didn't manage to add all of the teaching scenarios, so for now there's only ones explaining the various sort orders used in the state res algorithm.

What's more, this is all hosted so you can try it out without needing to install anything.

How it works

TARDIS gets its data from JSON5 files. These files are intended to be hand-crafted, which is why they aren't pure JSON files. It includes a set of preloaded files to explain parts of state resolution. Each file contains a single "Scenario" which includes:

  • The events in the room, already sorted in processing order.
  • Annotations for when TARDIS steps into a given event, if any.
  • Precalculated state at a given event, if any.

The scenario is then processed and rendered using d3-dag, just like Matthew's original prototype. To perform state resolution at the current event, TARDIS extracts the state sets for the event and makes a WebSockets connection to a "shim server". It is the shim server's job to perform state resolution. TARDIS comes with a Synapse shim, which imports the internal packages required to do state resolution, so it is using the same code paths as a real Synapse server. You can independently run a shim server locally, either in a virtualenv or as a docker container.

The magic happens when you press the "Resolve State" button which:

  • Makes a WS connection to the shim server,
  • Sends the state sets for the currently selected event,
  • The shim server asks TARDIS for the event JSON for certain event IDs (this is why it uses WebSockets and not HTTP),
  • The resolved state is returned to TARDIS,
  • The resolved state is shown as green nodes on the graph.

State resolution relies heavily on event IDs, and event IDs are calculated fields. The JSON5 file format allows placeholder fake event IDs e.g $JOIN which are preprocessed into real event IDs. Rather than reimplementing canonical JSON, redaction algorithms, and room version handling in TARDIS, it uses gomatrixserverlib as a WASM package to handle this.

What's next?

Unlocking the ability to automatically test state resolution would be a huge milestone, and complement (pun intended) other server-agnostic test suites I have developed in the past (Complement and Complement-Crypto). The test suite would read a JSON5 file to pull out the test DAG, which would have an additional key which has the assertions for that DAG, automatically talk the WS protocol to the shim server to get the resolved state for each event, and check it matches the assertions in the file. This would make it significantly easier for people to reimplement the state resolution algorithm correctly in non-Synapse homeservers.

Performance wise, the shim server is asking TARDIS for event JSON mid-algorithm. This provides a unique insight into the workings of the algorithm. Whilst the original drawings had the idea of "flashing" the nodes as they are requested, a more useful goal would be to just tally up how many times the shim server asks TARDIS for an event. This would allow TARDIS to visualise algorithmic complexity. We could then have a representative set of "realistic" DAGs and test changes to the algorithm for speed e.g given a DAG of n events, Algorithm 1 requests n and Algorithm 2 requests 2n therefore Algorithm 1 is faster.

Matrix Federation Stats

Aine [don't DM] reports

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

As of today, 10361 Matrix federateable servers have been discovered by matrixrooms.info, 3181 (30.7%) of them are publishing their rooms directory over federation. The published directories contain 21664 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
1girlboss.ceo210
2puppygock.gay234
3bark.arf.wf251
4awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay254
5transgender.ing261
6ncat.cafe324
7nexy7574.uk345.5
8constellatory.net383
9pissing.dev563
10nexy7574.co.uk633

Sunsetting the Sliding Sync Proxy: Moving to Native Support

We will be decommissioning the sliding sync proxy next week (21/11/2024) and Element are removing client support in mid-January (17/01/2025).

Sliding Sync is designed to provide a significantly faster and more scalable sync experience in our clients. The initial implementation was first prototyped in Element Web backed by an entirely experimental server proxy. The implementation had half an eye on low bandwidth use cases, and the prototype led to MSC3575. We then realised that a simpler approach would be beneficial, and reused the same (experimental) proxy concept to facilitate beta testing with Element X, this time making it available on matrix.org. In doing so, we learned valuable lessons, leading to a refined and simplified API design in MSC4186. The proxy itself was only ever considered as a temporary arrangement to aid speed of development, rather than being a long term solution.

Simplified Sliding Sync MSC4186 (also known as native sliding sync), has since been implemented in Synapse, with encouraging results. Now that we don’t expect the API shape to change significantly, we recommend homeserver developers to implement MSC4186 natively.

The Matrix.org Foundation does not have the resources to keep up maintenance of the proxy service or its codebase, and plans to decommission the proxy from Mid-November and archive the sliding-sync repo.

Recognising that the community needs time to adopt sliding sync natively, Element will keep client support for the old API (MSC3575) until the 17th of January, 2025.

The Timeline

  1. Now: EX Apps support migrating from the proxy server to native Sliding Sync. The apps automatically detect when the homeserver supports native Sliding Sync and offers the option to migrate. If users choose to migrate, they will be prompted to log in again. This migration is optional, as the apps continue to support both native Sliding Sync and the proxy.
  2. November 21st: Service decommissioning. We plan to decommission the proxy service on Matrix.org and archive its codebase.
  3. January 17th: Element X stops supporting MSC3575. EX apps (and matrix-rust-sdk) will remove proxy support, fully shifting to native SS. The migration on EX apps will be forced. Users will get logged out so that they can log in again using native Sliding Sync. We encourage server developers to implement Sliding Sync natively by this point.

What This Means for Users

To continue enjoying the speed of Sliding Sync your homeserver and client must support the native Sliding Sync implementation (MSC4186).

At the time of writing, the latest versions of Synapse support native Sliding Sync, as do the Element X clients. There may be other server / client implementations that also have or are in the process of adding support. If you do use Element X apps, native Sliding Sync is used for every new login. For those currently using Element X through the proxy service, the app will prompt you to log out to switch to native Sliding Sync. While this migration is optional for now, it will become mandatory on the 21st of November for those on Matrix.org, when the proxy will be decommissioned. Element X will discontinue support for the previous Sliding Sync implementation (MSC3575) entirely by January 17th.

Guidance for Server & Client Developers

Server & Client developers are encouraged to implement MSC4186 for native sliding sync. Server developers should be aware that by the 17th of January Element clients will drop support for MSC3575, marking a transition to the native system.

We appreciate your understanding as we take this step forward for the Matrix ecosystem.

This Week in Matrix 2024-11-08

By: Thib

Matrix Live

Today's Matrix Live: https://youtube.com/watch?v=HmoVN1x4kO8

Dept of Status of Matrix 🌡️

Matrix at FOSDEM 2025

Thib (m.org) says

We're happy to announce that this year again we will have a DevRoom at FOSDEM!

We have half a day to talk about all the great projects we have been working on as a community. Our devroom should be on Sunday afternoon, even if it's not completely set in stone for now.

You can submit a talk following one of the two formats:

  • 20 min talk + 10 min Q&A, for topics that can be covered briefly
  • 50 min talk + 10 min Q&A, for more complex subjects which need more focus

Be quick, the Call for Proposals ends on December 1st and we can't extend it. FOSDEM organizers will close all DevRooms CfPs, and we can't bypass it!

Find all the dates & details on our Call for Proposals

Governing Board Meeting

Nico says

Next Friday (November 15th) the governing board will have its first official meeting! Topics include the governing structure (how do we decide stuff), forming committees (how do we work on topics and who participates where), selecting a chair and vice chair for the board (to steer meetings) and define how we want to communicate. Some of those topics are still in flux and will be defined further throughout this week. If you are interested, your representatives might be able to tell you more and answer your questions!

We are looking forward to having our first official meeting as the board and hopefully we will have productive results to share with you all soon!

Ecosystem Governing Board Members Office Hours

HarHarLinks reports

Earlier this year, the members of the Matrix Foundation voted for members from their own constituency to represent them at the Governing Board. Nico, Bram and myself were elected to represent the Ecosystem.

While we are usually approachable and responsive in all kinds of ways, there are some topics or situations better to discuss synchronously. We therefore starting today Wednesday 6th November start with weekly office hours every Wednesday at 17:00 German time (CET = UTC+1 during winter). 🐸 We will be responsive to chat in the Ecosystem Public Forum room and will also share a link to a (video) call there.

Please find more detail in the announcement post over here.

Update: Our first office hours went great! We covered quite a lot of topics both between us representatives and the community members who joined - so much so that we overran our time slot by 50% 😅 There is going to be one more office hour next week before the first official governing board meeting, so join the office hour (or write us async) if there is any topic you want us to bring up with the governing board. We would also like to emphasise that we are offering this way of communication for you, the community, so please give us feedback over at the Ecosystem Public Forum in regard of the choice of time slot, etc.

Dept of Spec 📜

Andrew Morgan (anoa) {he/him} [back Nov 5] 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:

  • No MSCs are in FCP.

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

There was a flurry of PRs to the spec website itself this week. In addition to the myriad of fixes and clarifications, the underlying technology got an update!

https://spec.matrix.org is a static site generated with Hugo, and we use the docsy Hugo theme. Matrix.org has their own fork, with minor changes to self-host all third-party JS/CSS assets instead of downloading them from CDNs.

This fork had gotten a bit outdated however, mostly because updating it and re-downloading the CDN assets was a bit of a pain. This week Kévin Commaille both automated this task and subsequently updated our docsy fork to the latest and greatest. Thank you!

We'd also like to call out @Johennes, @bnjbvr, @AllMightLegend, @uhoreg and @dkasak for their contributions to the spec this week. Thanks all!

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Devon Dmytro says

There was no new release this week, but we have been working hard on getting a few specific things ready to go for the release. You can expect the v1.119.0rc1 release to be out early next week.

Alongside the usual allotment of new features and bug fixes, we have been working hard on:

  • Lifting the minimum supported Python version to 3.9
  • Updating Synapse test infrastructure in order to pull in the latest version of Twisted (24.10.0)

Thank you to all our contributors for helping to make Synapse the best it can be. As always, feel free to stop by #synapse:matrix.org to join in on the discussion and if you encounter a bug make sure to report it here.

Dept of Bridges 🌉

Parsee

LDA announces

Oyé, oyé, nouvelle alpha sur le plus petit pont ! I just released the Parsee v0.2 alpha today. I've not being able to work as much on it as before, but I did get quite some bugsquashing features, and plain dumb experiments like getting it to build and start on an (emulated) DEC Alphaserver with some minor changes to Cytoplasm, more commands to make admins' lives easier, and reworked Matrix->XMPP formatting in order to make it more pleasant.

I've also dabbled in some MbedTLS support, but it is still unstable(and slow), done slightly more work with avatars, and fixed some known bugs that would make handling Parsee annoying.

As of next(v0.3 will probably be out by 2025), I am mostly working on optional Janet extension support, to make Parsee even more powerful and extensible.

We're still available over at Matrix and XMPP(xmpp:marsee@conference.monocles.eu) if you want to try it out.

Dept of Clients 📱

Benedict says

We released a new version of Tammy including some UI fixes for older Android devices. For those who are hearing about Tammy for the first time: Tammy is a new multiplatform Matrix messenger powered by Trixnity Messenger.

Quaternion (website)

A Qt5-based IM client for Matrix

kitsune says

This is the first 0.0.97 pre-release primarily focused on migration to libQuotient 0.9. Not much to talk about aside from this. The release notes and some prebuit binaries can be found at the usual place.

Element X iOS (website)

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

Mauro Romito says

  • A new RC for EX iOS will soon be released 1.9.5
  • In the new RC EX iOS will be capable of also receiving verifications requests through the SAS protocol (while before was only able to send them)
  • We also added a toggle to enable media optimisation that will process media files, to save up data and memory space by compressing them. The option is on by default but can be turned off
  • The work for implementing sending, receiving and accepting/declining knocks on rooms is progressing
  • Alongside knocking we are also implementing management of room aliases

Dept of Services 🚀

Synapse Admin Updates

Aine [don't DM] reports

A while back, we at etke.cc announced our Synapse-Admin fork, and this week we're excited to share more new features, QoL changes and bug fixes!

We'll begin by discussing technical and under-the-hood updates before moving on to UI features.

SYNAPSE_ADMIN_VERSION env variable

Starting from the least interesting - if you want to build Synapse Admin yourself in an environment where git is unavailable, you can now use SYNAPSE_ADMIN_VERSION env var to set version, instead of relying on git tags.

Logout that actually does the job

Earlier, the logout did send a request to the Matrix logout API endpoint, but didn't clean up things like local storage that is used as a state/session store. Well, now it does 🤷

Proper restrictBaseUrl despite its type

Previously, you could limit Synapse Admin instance to work with specific homeserver(-s) using the restrictBaseUrl config var that accepted both string (like "restrictBaseUrl": "https://example.com") and slice (like "restrictBaseUrl": ["https://example.com", "https://example.net"]). Such an approach has proven to be problematic in multiple cases, but today the last inconvenience with it has been solved - now single-item slices will be treated the same way as the string does (and yes, they are treated differently in the UI), using the only value of the slice.

Configuration in /.well-known/matrix/client

We found out that people tend to use Synapse Admin instances hosted outside their actual servers, and even use a single Synapse Admin instance to manage multiple servers. Unfortunately, such a setup means you can't rely on the config.json file that comes with Synapse Admin instance because it won't contain server-specific configuration… So, here is the solution - just add configuration to your /.well-known/matrix/client file under cc.etke.synapse-admin key, here is an example of how to mark mautrix-telegram puppets as appservice-managed users:

{
  "cc.etke.synapse-admin": {
    "asManagedUsers": ["^@telegram_[a-zA-Z0-9]+:example\\.com$"]
  }
}

works for any config option

Generate random passwords with ease

when creating or updating users. With this change, a new button has been added to the user's create/update form where you can generate a random password in 1 click.

Experimental Features and Rate Limits controls are here!

Now you can enable specific Experimental Features per user, and adjust user's rate limit overrides on the user's page.

Source code, admin.etke.cc (CDN version), say hi in the #synapse-admin:etke.cc

Matrix Federation Stats

Aine [don't DM] announces

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

As of today, 10391 Matrix federateable servers have been discovered by matrixrooms.info, 3184 (30.6%) of them are publishing their rooms directory over federation. The published directories contain 22281 rooms.

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

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.

Call for Participation to the FOSDEM 2025 Matrix Devroom

By: Thib

Hello everyone,

The Matrix.org Foundation is excited to host a Matrix.org Foundation and Community devroom in person next year again at FOSDEM! Half a day of talks, demos and workshops around Matrix itself and projects built on top of Matrix.

We encourage people working on the Matrix protocol or building on it in an open source project to submit a proposal! Note that companies are welcome to talk about the Matrix details of their open source projects, but marketing talks are not welcome.

Key dates

  • Conference dates: 1st and 2nd February, 2025
  • Devroom date: 2nd February, 2025
  • Submission deadline: Sunday, 1st December, 2024
  • Announcement of selected talks: Friday, 15th December, 2024

You must be available in person in Brussels to present your talk.

Talk Details

The talks can follow one of the two formats:

  • 20 min talk + 10 min Q&A, for topics that can be covered briefly
  • 50 min talk + 10 min Q&A, for more complex subjects which need more focus

We strongly encourage you to prepare a demo when it makes sense, so people can actually see what your work looks like in practice.

Of course, the proposal must respect the FOSDEM terms as well:

The conference language is English. All content must relate to Free and Open Source Software. By participating in the event you agree to the publication of your recordings, slides and other content provided under the same licence as all FOSDEM content (CC-BY).

Code of Conduct

All speakers and attendees agree that all of the presentations and discussions in our devroom are held under the guidelines set in the FOSDEM Code of Conduct. We expect attendees, speakers, and volunteers to follow the CoC at all times.

If you have any questions about the CoC or wish to have one of the devroom organisers review your presentation slides or any other content for CoC compliance, please email us and we will do our best to assist you.

Submitting a Proposal

Proposals must be submitted on FOSDEM's conference management system: https://pretalx.fosdem.org/. Heads up that last year FOSDEM shelved the good old Pentabarf in favour of Pretalx. All submissions must go through Pretalx: https://pretalx.fosdem.org/fosdem-2025/cfp. When submitting a proposal, make sure to select the Matrix.org Foundation & Community track.

We expect to receive more requests than we have slots available. The devroom organisers will be reviewing the proposals and accepting them based on the potential positive impact the project has on Matrix, as defined in the Mission section of https://matrix.org/foundation.

If a project proposal has been turned down, it doesn't mean we don't believe it has good potential. Maintainers are invited to join the #twim:matrix.org Matrix room to give it some visibility.

This Week in Matrix 2024-11-01

By: MTRNord

Dept of Status of Matrix 🌡️

Matrix 2.0

Matthew reports

Today's Matrix Live: https://youtube.com/watch?v=ZiRYdqkzjDU

We've also announced Matrix 2.0 as now being usable by mainstream users, to complement the keynote from The Matrix Conference - giving an update on all the APIs that will form Matrix 2.0! https://matrix.org/blog/2024/10/29/matrix-2.0-is-here/

The wait is over, videos from The Matrix Conference 2024 are here

Matthew reports

The Matrix Conference talk videos have been published - check them out at https://2024.matrix.org/watch/ and see Josh's round-up of the conference at https://matrix.org/blog/2024/10/29/matrixconf/

Dept of Spec 📜

uhoreg 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:

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Till announces

This week we released Synapse v1.118.0. The major thing to be aware of is that Python 3.8 is now end-of-life. As per our Deprecation Policy for Platform Dependencies, Synapse will be dropping support for Python 3.8 in the next release; Synapse 1.119.0.

Otherwise, Synapse 1.118.0 is the first release to support Python 3.13! PostgreSQL 17 is also supported as of this release.

Other highlights in this release include an experimental implementation of MSC4210: Remove legacy mentions, and the ability to set one's display name upon registering via JWT. In addition, there's the usual round of bugfixes and internal changes. See the release changelog for the full details!

Dept of Clients 📱

🎉 Exciting News: Introducing Tammy!

Benedict says

We're thrilled to announce the first official release of Tammy! Built from the ground up in Kotlin Multiplatform, Tammy is a new, innovative Matrix Messenger designed for Desktop (Windows, Mac, Linux), Mobile (currently Android, with iOS coming soon), and Web (in Beta). It is built on the robusts Trixnity and Trixnity Messenger SDKs and is Open Source too. Technically it's just a whitelabel Matrix messenger, that can be deeply customized by developers.

Why Choose Tammy?

  • Simple: Enjoy an intuitive UI with a sleek and unobtrusive look.
  • Fast: Experience a smooth and responsive experience.
  • Customizable: Developers can start with a ready-to-use messenger and customize it extensively to meet their specific needs. Just one line of code can reshape Tammy entirely through different configurations!

So give it a try and leave your feedback at #tammy:imbitbu.de - we're very excited to hear what you think!

Commet v0.3

airyz reports

Hello! it's been a while since the last major release, but we have finally released v0.3 of Commet! There is a ton of new features and improvements, so we'll just give the highlights:

  • Threads are now fully supported
  • Drastically improved the performance of the chat timeline
  • Initial support for sub-spaces
  • Encrypted room search

There's a whole bunch more to find, so check out the release on GitHub! That's all for now!

Fractal (website)

Matrix messaging app for GNOME written in Rust.

Kévin Commaille says

😱 What’s that behind you⁉️ Oh, that’s the new Fractal 9 release❣️ 😁 🎃

  • We switched to the glycin library (the same one used by GNOME Image Viewer) to load images, allowing us to fix several issues, like supporting more animated formats and SVGs and respecting EXIF orientation.
  • The annoying bug where some rooms would stay as unread even after opening them is now a distant memory.
  • The media cache uses its own database that you can delete if you want to free some space on your system. It will also soon be able to clean up unused media files to prevent it from growing indefinitely.
  • Sometimes the day separators would show up with the wrong date, not anymore!
  • We migrated to the new GTK 4.16 and libadwaita 1.6 APIs, including CSS variables, AdwButtonRow and AdwSpinner.
  • We used to only rely on the secrets provider to tell us which Matrix accounts are logged-in, which caused issues for people sharing their secrets between devices. Now we also make sure that there is a data folder for a given session before trying to restore it.
  • Our notifications are categorized as coming from an instant messenger, so graphical shells that support it, such as Phosh, can play a sound for them.
  • Some room settings are hidden for direct chats, because it does not make sense to change them in this type of room.
  • The size of the headerbar would change depending on whether the room has a topic or not. This will not happen anymore.

As usual, this release includes other improvements and fixes thanks to all our contributors, and our upstream projects.

We want to address special thanks to the translators who worked on this version. We know this is a huge undertaking and have a deep appreciation for what you’ve done. If you want to help with this effort, head over to Damned Lies.

This version is available right now on Flathub.

We have a lot of improvements in mind for our next release, but if you want a particular feature to make it, the surest way is to implement it yourself! Start by looking at our issues or just come say hello in our Matrix room.

Element X iOS (website)

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

Doug announces

This week we’ve finished two features that will land in next week’s release candidate:

  • There’s a new advanced setting for Optimised Media Uploads that is enabled by default. This will resize your images and videos for faster uploads and reduced data usage.
  • The app now responds to verification requests when you sign into your account on a different device. Finally!

Additionally we’ve continued to refine the flows for managing your Recovery Key and Key Storage, making them more consistent and easier to understand.

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for developing Clients, Bots, Appservices and Servers

Benedict announces

I released Trixnity 3.9 with Matrix 1.12 support and some minor improvements and bugfixes.

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 reports

Ruma 0.11.0 is fresh off the (key)press and includes a lot of work:

  • Implement all changes and new features of Matrix 1.11 and 1.12, like authenticated media and unread markers.
  • A new type was created to facilitate the use of the Content-Disposition HTTP header in the media endpoints.
  • We used to rely on DeviceKeyId in a lot of places where we expected an algorithm:key_name string. Not only was it confusing because the name was wrong in most cases, it also had poor semantic value. To fix that, we created a lot of new types that, used with KeyId, try to validate properly the parts of the string according to their expected types.
  • Unstable support for the simplified sliding sync API (MSC4186) and cancellable delayed events (MSC4140).

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

Thanks to all our contributors! If you want to join them to help Ruma grow, the first step is as easy as joining us in #ruma:matrix.org!

Rory&::LibMatrix (website)

.NET 8 matrix bot/client library/SDK

Emma [it/its] reports

Recently, we've held a poll in #libmatrix:rory.gay around source code availability. Due to community interest, we're now hosting read-only mirrors of all Rory&::LibMatrix repositories on Github! You can find the repositories under the Rory-LibMatrix organisation there. We don't provide any guarantees of monitoring those repositories (issues, pulls, ...), but it does open up a new way to contribute: Pull Requests! If you choose to make a pull request via Github, please remember to let us know about them in #libmatrix:rory.gay, or the subproject's own Matrix room, or they might get missed!

Maybe in the future we will set up mirrors on Codeberg aswell, if this proves to be maintainable.

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 us know, we'd love to hear all about it!

Dept of Services 🚀

etke.cc (website)

Your matrix server on your conditions

Aine [don't DM] reports

Synapse-Admin Updates

A while back, we at etke.cc announced our Synapse-Admin fork, and this week we're excited to share more QoL changes!

  • Logo and Icon - Synapse Admin got its own icons instead of a "generic" [m]
  • Community room has been created - welcome to #synapse-admin:etke.cc ! not a code change per se, but a QoL improvement for the community nonetheless!
  • Sanitize CSV on import - previously when you tried to use bulk registration feature you had to keep CSV file exactly how it should be, including case, spaces, etc. With this change, even headers like Id or DisplayName will work
  • Extended manifest.json with proper version and whatnot on build - previously manifest.json with version info was generated on CI only, so if you tried to build Synapse Admin yourself, you lost that info. With this update the manifest.json generation moved to the build phase, and the manifest itself was extended for your convenience. Example: https://admin.etke.cc/manifest.json

Do you remember the Visual Customization from the previous announcement? ProTip! you can drag/move the customization window

Source code, admin.etke.cc (CDN version), say hi in the #synapse-admin:etke.cc

Dept of Events and Talks 🗣️

saces announces

Matrix User Meetup Berlin

Next Matrix user meetup 6.11.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.

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

Matrix room: #mumb:c-base.org

Dept of Built on Matrix 🏗️

Acter (website)

Your social organizing app build on matrix: A secure space to gather, engage and grow your community!

ben reports

It has been while since we send an update to TWIM--because we have been busy onboarding Activists, NGOs and working closely with them to figure out what else is needed. Of course we have also been busy working on the revamp of the App, including the design,but also many features. You can learn more about that in my summary blog post Acter Dragonfly Edition. tl;dr: Completely new UX with cool features, more organizational tools and customization - everything looks cooler and works a lot smoother.

We have also overhauled our website, moved all the different things (news, podcast, documentation) to a single entry point under acter.global. I am particularly happy about the new help center with a global search, the new starting guide and the new extended App features page, which we intend to grow with additional sub-pages going more into detail.

Lastly, with our growing user bases, so grows the workload on the operation. Thus we have opened another jobs position: We are looking for a Matrix App Infrastructure and Support Engineer helping us run the Synapse instance, surrounding services and troubleshoot with users when they face problems. If that sounds interesting to you, apply soon, we will close it when we've found a suitable candidate and quite a few have already applied.

Matrix Federation Stats

Aine [don't DM] reports

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

As of today, 10402 Matrix federateable servers have been discovered by matrixrooms.info, 3173 (30.5%) of them are publishing their rooms directory over federation. The published directories contain 22282 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
1conduwu.it184
2nexy7574.uk186.5
3awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay195
4itzzen.net211
5transgender.ing216
6girlboss.ceo223
7constellatory.net251.5
8puppygock.gay252
9tomfos.tr257
10ipv6.girlcock.systems262

That's all I know

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

The wait is over, videos from The Matrix Conference 2024 are here!

PHEW! One month later and I’m still buzzing from the inaugural Matrix Conference in Berlin. This was the first time we’ve gathered such a broad cross-section of the ecosystem both upstream and downstream, bringing together contributors, vendors, and end-users in the same place at the same time.

The result was a fantastic demonstration of how much we can learn from each other, how much progress we’ve made, and how valuable it is to have The Matrix.org Foundation as an ecosystem steward that can bring us all together.

When we were planning the conference, we weren’t sure how big the demand would be. Having hit capacity and sold out of tickets weeks before the event, we know to aim higher next time! We’ll get a larger venue next year, but it was very gratifying to have sessions where the room was literally full!

You could really feel the energy: all told, we had 236 participants from 12 countries across 3 continents, representing 79 different organisations, join us across 4 days of events featuring 52 speakers.

You can find the slides and video recordings on the website, or see the photo albums.

Thumbnails of all the conference talks

Thumbnails of all the conference talks

And the world noticed, with press in The Guardian, Heise, and Fast Company.

Andrew Morgan, Spec Core Team member, presents on stage.

Andrew Morgan, Spec Core Team member, presents on stage.

None of this would’ve been possible without the vision of Matthew Hodgson and Amandine Le Pape, a deep collaboration between the Foundation and the Matrix Community Events team – namely Kim Brose, Nadine Minagawa, and Yan Minagawa, the help of the production team at Plain Schwarz, more than a dozen on-site volunteers, and the hospitality of the venue staff at Mitosis LAB.

And at the center, working behind the scenes to orchestrate everything? The Foundation’s own Thibault Martin, whose attention to detail, warmth, and expert juggling brought it all together.

Amandine Le Pape, Matrix co-founder and Guardian, thanks the team and sponsors.

Amandine Le Pape, Matrix co-founder and Guardian, thanks the team and sponsors.

Now, as you may know, events like this are not cheap to produce. We couldn’t have pulled it off without our event sponsors, Element, DINUM, Famedly, Connect2x, and Nordeck, as well the Foundation’s funding members, Element, Beeper, Futurewei Technologies, Fairkom, Famedly, Fractal Networks, Gematik, IndieHosters, Verji Tech AS, and XWiki.

Even with all that support though, we ran The Matrix Conference at a loss. It’s not unusual for first year events to run at a loss, it’s just not something that the Foundation can afford to do again as we are still working toward financial sustainability. We had hoped to break even, but we knew that the Foundation needed to take the risk in order to demonstrate its value to the ecosystem and attract more funders.

Because not only did The Matrix Conference create opportunities to connect across the ecosystem, learn from each other’s experiences, recruit talent, make deals, and convene the Governing Board… It also fostered our sense of community, harmonized our efforts, and laid the groundwork to ensure Matrix is a stable, modern protocol that we can all rely on far into the future.

We need your help building on that groundwork to secure the future of Matrix. Join the Foundation as a funding member, and secure your sponsorship of next year’s conference which will be held in Strasbourg, France in the autumn of 2025 – if we can hit our funding targets.

And with any luck, together we’ll produce an even better and more valuable event for the ecosystem in 2025!

Matrix 2.0 Is Here!

Hi all,

Since the outset of Matrix, our aim has always been to provide a protocol that lets you build open, decentralised, secure communication apps which outperform the mainstream centralised alternatives. It’s been a twisty journey - first focusing on making Matrix work at all (back in 2014), and then getting it out of beta with Matrix 1.0 in 2019, and now focusing on making Matrix fast, usable and mainstream-ready with Matrix 2.0.

Meanwhile, the pendulum of decentralisation continues to accelerate in our direction. Our friends at Bluesky have shown that it’s possible to build decentralised social apps which are mainstream friendly enough for Presidents to recommend them; Elon continues to destroy Twitter and showcase the importance of decentralisation to everyone, and even Meta is dabbling in decentralised social media (and decentralised communication!)

So, where does Matrix sit in all this? Well, in order to make the transition to mainstream, we’ve been beavering away to implement four main pillars in Matrix 2.0:

  1. Instant login, instant launch, and instant sync (aka Simplified Sliding Sync, MSC4186)
  2. Next Generation Auth (aka Native OIDC, MSC3861)
  3. Native Matrix Encrypted Multiparty VoIP/Video (aka MatrixRTC, MSC4143)
  4. Invisible Encryption (MSC4153 & friends).

Between these, we believe that Matrix can now be used to build apps which genuinely outperform the mainstream alternatives - and what’s more, these MSCs now all have implementations you can use today. The MSCs themselves are not all finalised and ready for merge (but are getting close), and when they pass FCP (Final Comment Period) to merge into the spec, we will formally bump the spec release to version 2.0.

We actually declared Matrix 2.0 as ready for action back at The Matrix Conference last month, and now that the videos have been published you can watch the launch right here:

Today's Matrix Live: https://youtube.com/watch?v=ZiRYdqkzjDU

Since the conference talk things have already moved on a bit, though, and we’ve landed a bunch of tweaks to address teething issues - and so here’s the current state of action:

1. Simplified Sliding Sync

Simplified Sliding Sync is the final version of Sliding Sync - the API which provides instant login, launch & sync in Matrix 2.0. To say that the API has been through a lot of iterations is an understatement, but we’re finally there with MSC4186, which simplifies the original Sliding Sync API (MSC3575) by removing the concept of a server-determined room list ordering entirely, and instead lets the client sort the roomlist as needed (while letting the client paginate in the roomlist incrementally, to ensure instant responsivity, no matter how large your room list is).

Simplified Sliding Sync is now implemented natively in Synapse as of 1.114, and so there is no longer any need to run a Sliding Sync Proxy in order to use the API. In fact, the Sliding Sync Proxy is being deprecated and the old Sliding Sync code will be removed from matrix-rust-sdk in the nearish future. Unfortunately we don’t have bandwidth to maintain both the native implementation Synapse as well as the proxy shim - and the proxy inevitably has suffered from a lot of limitations (e.g. having to do a full v2 initial sync for new logins, slowing them down to v2 performance - as well as duplicating storage between Synapse and the proxy). There’ll be a dedicated deprecation blog post for the proxy and pre-simplified Sliding Sync shortly. Meanwhile, work is well underway for native Sliding Sync support in conduit, conduwuit and grapevine - conduwuit guesses “next few weeks” for native Simplified Sync Support to land. Dendrite is unfortunately still not funded, so will happen on a best effort basis.

In terms of performance, native Simplified Sliding Sync in Synapse is spectacular - outperforming the proxy throughout, and making the old sync v2 API look positively prehistoric. Gone are the days of waiting for your app to sync, even if you’ve been offline for weeks/months; gone are the days of waiting minutes to login, and gone are the days of staring at a spinner as your app launches. It really is a new era - and having been hyping it since the first demo at FOSDEM 2023, I promise we won’t bang on about sliding sync any more after this; it’s finally here and landed and we can move on and enjoy it! For more details, see Ivan’s talk from The Matrix Conference:

Today's Matrix Live: https://youtube.com/watch?v=kI2lSCVEunw

2. Next Generation Auth

Next Generation Auth is what we’re calling the migration to using industry standard OpenID Connect as the authentication API in Matrix 2.0, moving on from the custom auth API that Matrix has historically used. We’re calling this Next Gen Auth because we were seeing a lot of folks incorrectly assuming that adopting OpenID Connect for auth meant we would somehow be encouraging 3rd party social login or single-sign-on - which is not the case.

Next Gen Auth is simply swapping out Matrix’s old custom auth APIs with equivalents which are defined by the OpenID Foundation; after all, Matrix is a communication protocol, not an authentication protocol. In return, we get much more mature and secure authentication APIs - and access to the whole OpenID Identity Provider ecosystem, including support for Two Factor Auth and Multi-Factor Auth, hardware authentication tokens, passkeys, and device-based login flows (aka QR Login). We also stop both Matrix clients and servers having to implement the sprawling legacy Matrix authentication API surface - ensuring that users only ever hand their account password to their auth server, rather than having to trust their clients to handle it securely, which in turn plays much nicer with password managers (who only have to remember how to auth with your auth server, rather than a myriad different clients). It also lets you share authentication between apps if you want; gives us access_token refresh (at last!) to avoid long-lived access_tokens hanging around; and in future will also support OIDC scopes so you can limit the access particular clients get to your account.

In short, Next Gen Auth is transformative, and the initial implementation at matrix-authentication-service (MAS) is ready for admins to deploy and use (and in future will be available embedded in Synapse too). Unfortunately it is not yet live on matrix.org (given we have to migrate tens of millions of accounts, complete with all the social login complexities) but we’re hoping to get it there in the coming months.

Probably one of the clearest immediate benefits of Next Gen Auth is the ability to do a full login including setting up all your end-to-end-encryption simply by scanning a QR code on an existing client, courtesy of MSC4108 and OAuth 2.0 Device Authorization Grants. In other words, you don’t have to specify a server, or your username, or account password, or your recovery key - you just scan a QR code and you’re in. The very latest Element X releases on iOS & Android have this implemented and enabled by default, and so if you’re on a server which has deployed MAS, you can go to “link new device” in Element Web/Desktop to show a QR code to instantly log in.

For more info on all things Next Gen Auth, see Quentin’s talk from The Matrix Conference:

Today's Matrix Live: https://youtube.com/watch?v=wOW8keNafdE

3. Native Matrix Group VoIP/Video: MatrixRTC

Next we have MatrixRTC: end-to-end-encrypted group voice and video conferencing over Matrix. Historically, group VoIP in Matrix has relied on third party conferencing systems (Jitsi, and before that FreeSWITCH) - providing no support for Matrix’s end-to-end encryption, or indeed Matrix’s user identities, decentralisation or decentralised access control.

With MatrixRTC this changes: we now have a standard way to establish large-scale end-to-end-encrypted group video calls via Matrix, leveraging all the benefits of Matrix’s end-to-end-encryption infrastructure, user identity, room permissions, etc. It also supports different media stacks to actually handle the media conferencing - today, the main implementation uses the LiveKit SFU, but there’s also an experimental full-mesh WebRTC implementation.

Element Call has been the driving app behind MatrixRTC, and as of today is now enabled in the release versions of both Element Web/Desktop and Element X to provide native MatrixRTC calling embedded in the apps: if you hit the video call button you will now have the option to spin up a MatrixRTC call via Element Call rather than via Jitsi or Legacy 1:1 calling, and if the room is end-to-end-encrypted, all the conference will be too.

Meanwhile - MatrixRTC isn’t just Element Call: Famedly showed off experimental interop with FluffyChat at FOSDEM back in Feb, and Element showed off experimental interop with BigBlueButton in August. Given more and more conferencing tools are converging on LiveKit as a best-in-class SFU, it’s an amazing opportunity to use Matrix and MatrixRTC to power the end-to-end-encryption and decentralisation and get standardised voip/video interop from the outset.

For more info, see Timo’s talk from The Matrix Conference:

Today's Matrix Live: https://youtube.com/watch?v=OXPuYbfiXDQ

That said, there are a few caveats right now:

  • We do not have interoperability between legacy Matrix 1:1 voice/video calling and MatrixRTC (and it’s not clear if/when we will get to it) - but Matrix 2.0 clients like Element X exclusively use MatrixRTC for VoIP/video, including for 1:1 calls. This is in order to only maintain one VoIP stack, and so that you get multidevice and multiuser support for free, even in 1:1s. As a result, we’re in the process of figuring out how to warn legacy callers that MatrixRTC-only clients won’t be able to answer their calls (e.g. MSC4220) - this hasn’t shipped yet.
  • iOS 18 broke CallKit + WebRTC, so Element X iOS has had to disable fancy OS-natively-integrated MatrixRTC calling; and has a support issue open with Apple to try to solve this.
  • We’ve had some fun teething issues thanks to the volume of signalling in MatrixRTC exposing some sync bugs - these are almost solved, but probably mean MatrixRTC should still be considered beta for a few more days until the fixes land.

4. Invisible Encryption

The final pillar of Matrix 2.0 is Invisible Encryption - making Matrix’s end-to-end encryption as seamless and invisible as the centralised alternatives (Signal, WhatsApp, iMessage and friends). This does not mean reducing security in any way - just the opposite, in fact. It means:

  1. Ensuring that Unable To Decrypt (UTD) bugs never happen. Huge amounts of work has gone into this over the course of the year, especially via complement-crypto as a comprehensive end-to-end-test suite for both matrix-rust-sdk and matrix-js-sdk based Matrix clients. We are finally at the point where UTDs are so rare that most people simply never see them, and any reports get jumped on (and complement-crypto tests get written) whenever they emerge. Anecdotally, I now get way more “waiting for message…” errors on WhatsApp than I do on Matrix, these days! For more details on the Hunt For UTDs, see Kegan’s talk from The Matrix Conference:
Today's Matrix Live: https://youtube.com/watch?v=FHzh2Y7BABQ
  1. We are excluding non-cross-signed devices from Matrix (MSC4153). The fact that Matrix ever supported the idea of users enabling encryption on a device without proving that they are the valid owner by signing it (by verifying it with another device, or providing their recovery key/passphrase) is a nasty hangover from back before we introduced cross-signing. Nowadays, the fact that non-cross-signed devices exist acts to reduce security and complicate UX and implementations with big scary red warnings whenever an unverified device joins a conversation. Instead, once MSC4153 lands, we’re going to simply exclude unverified devices entirely - not encrypt to them, and not decrypt from them. We can then get rid of all the confusing warnings associated with them.

  2. We’re also solving the confusing “grey shield” warnings: “the authenticity of this message cannot be confirmed on this device” and similar. These are avoidable warnings caused by message keys which can no longer be tracked back to the original sender - e.g. if they’re restored from backup, or if the original sending device has been deleted. We’re fixing these with authenticated backup (MSC4048) and including device keys on Olm events (MSC4147) respectively.

  3. Finally, we’re moving to Trust On First Use (TOFU). This means that even if you didn’t explicitly verify another user, you still get warned if their identity changes (unlike previously, when it was ignored). An initial implementation just landed in matrix-rust-sdk a few weeks ago, and so appropriate warnings at the application level should arrive shortly - matching the equivalent Signal or WhatsApp “this user’s identity has changed” warnings, albeit not yet synced between devices.

As you can probably tell, Invisible Encryption is something of a moving target; for instance, the scope could extend to cover all scenarios where users might expect messages to be decryptable (e.g. Dehydrated Devices: the ability to decrypt messages sent to you when you are not logged in anywhere - or Sharing Keys when new users join a room/space). However, the 4 points above are the main ones, and they are in the process of landing right now.

The end result is already an immeasurable improvement in the reliability and robustness of Matrix’s encryption - and once the remaining pieces land, the user experience of a Matrix client should be that the encryption is almost entirely invisible to the user - unless something bad is happening; much like TLS.

Valere & Patrick’s talk on Invisible Crypto from The Matrix Conference would get embedded here, but unfortunately the audio was mangled - we’ll rerecord it and publish it shortly. In the meantime, you can find their slides here.

What’s next?

Well, first of all we’re going to stop announcing Matrix 2.0 - it’s finally here (modulo the spec release)!

There’s obviously a bit of follow-up still to be done though:

  • Getting MAS live on matrix.org
  • Gracefully handling the lack of interop between legacy Matrix calls and MatrixRTC
  • Landing the various remaining components of Invisible Crypto
  • Broadening the implementation base for these APIs, and rolling it out across the ecosystem

Beyond Matrix 2.0, though, there’s a large pile of other areas which need attention:

  • Improving state resolution. We’re currently investigating a set of issues where the merge resolution algorithm has misbehaved, and are planning a new room version to address it - watch this space for updates.
  • Trust and Safety. Abuse is increasing concern, and moderation and trust & safety tooling work has ended up fragmented and balkanised. The Governing Board is putting together a cross-ecosystem working group to try to address this - again, watch this space for updates.
  • All the business-as-usual MSCs which have stacked up - Custom Emoji, Extensible Profiles, Custom Presence, etc.
  • It’d also be good to finally realise the full performance advantages of faster room joins…

And then, in the longer term - what might Matrix 3.0 bring? Honestly, at this point, it’s an open question. Could it be landing major Trust & Safety changes in order to radically empower users to avoid and mitigate abuse? Could it be switching to MLS (or Decentralised MLS) for encryption? Could it be the glorious return of P2P Matrix (if it was funded)? Could it even be figuring out if/how to converge with (or layer on top of) MIMI or other federation protocols? Answers on a postcard to #sct-office:matrix.org please!

Conclusion

If ever there was a time to exhort your friends to give Matrix another go - this is it.

Matrix 2.0 has been a long time coming, and we need to get the word out that the step change forwards has finally arrived, and that apps built on Matrix 2.0 can seriously outperform the mainstream alternatives. Ideally, this could be Matrix’s “Firefox moment” - when from the ashes of old open source code, a new generation appears which can punch its weight against the proprietary incumbents.

Right now the only Matrix 2.0 client is Element X (and Element Web/Desktop if you enable the experimental Simplified Sliding Sync implementation in labs on develop/nightly builds) - see element.io/blog for full details - but we expect to see at least matrix-rust-sdk and matrix-js-sdk based clients using the new APIs as a matter of course in the coming months, and then hopefully everyone else too.

So: if you run a Matrix server, please consider deploying MAS to enable next-gen auth (Sebastien Spaeth’s blog also has a good indie tutorial) - and add Element Call to give MatrixRTC a try. Over the coming months we should see more support in more Matrix distributions, until hopefully we will all be living in a Matrix 2.0 world!

Huge thanks are due to everyone who has helped design, build, and iterate on Matrix 2.0, and to everyone who has kept the faith as we’ve put it all together. A special thanks also to BWI who helped fund much of Element’s work on this for the benefit of Matrix as a whole.

Finally, if you want Matrix to prevail - please join the Foundation and support the project financially. We urgently need organisational members, especially after the costs of running The Matrix Conference, and particularly if your organisation is commercially dependent on Matrix, you simply must become a member. While it’s very flattering that Matrix gets treated as a commons these days, without financial support the underlying Matrix project will die and your project will fail. Whereas if everyone building on Matrix supported us, we would be moving way faster and with fewer constraints - so please get involved at matrix.org/support and help.

Thanks for flying Matrix!

Matthew

This Week in Matrix 2024-10-25

By: Thib

Matrix Live

Today's Matrix Live: https://youtube.com/watch?v=5q3njjtlaVU

Dept of Spec 📜

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

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

Steady progress across a range of MSCs this week. I'm particularly excited to see MSC2409 to reach FCP given its widespread use. Perhaps MSC4203: Sending to-device events to appservices is next?

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Andrew Morgan (anoa) {he/him} says

This week we released Synapse v1.118.0rc1. The major thing to be aware of is that Python 3.8 is now end-of-life. As per our Deprecation Policy for Platform Dependencies, Synapse will be dropping support for Python 3.8 in the next release; Synapse 1.119.0.

Otherwise, Synapse 1.118.0 is the first release to support Python 3.13! PostgreSQL 17 is also supported as of this release.

Other highlights in this release include an experimental implementation of MSC4210: Remove legacy mentions, and the ability to set one's display name upon registering via JWT. In addition, there's the usual round of bugfixes and internal changes. See the release changelog for the full details!

Dept of Clients 📱

Extera

OfficialDakari says

Some improvements for Extera are made. Here is what I've changed:

  • Reaction styles. I've completely redesigned reactions in messages.
  • Perfect browser back button handler. Primarily it's made for mobile. Now you can close modal dialogs with back button, and it works.
  • Custom CSS themes! Now you can add Custom CSS Themes to Extera.

Also, here are upcoming things:

  • Custom JS plugins. You will be able to inject JavaScript into Extera, like themes.
  • Custom AI bots with persona (on extera.xyz homeserver). I will announce in Extera's chat when AI platform for Matrix will be out. Users will be able to create AI bots with GPT-4o + custom system prompt and more.

Best regards, Extera team developer

Element X iOS (website)

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

Doug reports

  • Element X iOS 1.9.3 is in TestFlight and will be available next week. It adds support for rendering media captions in the timeline, showing verification badges when looking at a room member’s details and fixes a bug with media upload where we sometimes included an incorrect image size.
  • Work on support for Knocking continues and we’re currently updating the Reaction Picker to include a Frequently Used section so you don’t have to hunt for your favourite emoji all the time.
  • Version 1.9.3 is the last version of Element X iOS that will support iOS 16. The next version we will release will require iOS 17 or 18 as we prepare the way to fix some longstanding bugs that should be addressed by using newer SwiftUI components.

Dept of Widgets 🧩

Matrix Widget Toolkit

Kim Brose (Nordeck) reports

It's been a bit over a month since we updated our Matrix Widget Toolkit to the newest MUI, React, Redux, and Matrix versions just before the Matrix Conference, so we are happy to share the newest update with you today.

While the list isn't long, it is quite significant. We migrated away from Facebook's Create React App (CRA) framework in favour of the new and actively maintained Vite framework (mind the French pronunciation 😉). This allows us to update some dependencies with known issues that were kept back behind CRA. Along with that, we also swapped out our testing framework from Jest to the Vite-native Vitest. If you're consuming the toolkit, you might already be using our @matrix-widget-toolkit/testing package, which conveniently exposes a helper to mock the widget API. These breaking changes caused us to release a new major version of the testing package.

With that, up-to-date package versions of the toolkit components are now:

  • @matrix-widget-toolkit/testing@3.0.1, based on vitest
  • @matrix-widget-toolkit/api@3.4.2, @matrix-widget-toolkit/mui@2.0.6, @matrix-widget-toolkit/react@2.0.3, all now tested using vitest
  • @matrix-widget-toolkit/widget-server@1.0.6, with a slightly newer nginx as its base

All the packages can be found in the releases section of our repo.

You can see a demo of what the toolkit can do using our demo widget.

If you have any questions or feedback, please reach out to us using our public room #nordeck:matrix.org.

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for developing Clients, Bots, Appservices and Servers

Benedict says

A new release of Trixnity is out. It supports files larger than 2.1GB now, has some API improvements and there are some new helpers regarding file handling. Additionally a few bugs has been fixed. Matrix 1.12 support is also implemented, but will be part of the next release.

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 says

Hello everyone! Here's for the first Matrix Rust SDK update for a long time, for updates which happened this week, as generated by our new release process helper! More news about a new Matrix SDK release coming Soon™.

SDK

  • Support for preallocated media content URI has been added in Media::create_content_uri(), and uploading the content for such a preallocated URI is possible with Media::upload_preallocated().
  • Uploaded medias can now be cached in multiple attachment-related methods like Room::send_attachment.
  • When SendAttachment::store_in_cache() is set, the thumbnail is also cached with a sensible default media request (not animated, scaled, same dimensions as the uploaded thumbnail).
  • RoomListService::subscribe_to_rooms no longer has a settings argument.
  • Room list service: Add m.room.topic and m.room.pinned_events in all_rooms.
  • Room list service: Add the m.call.member state event in the required state.
  • (internal) Event cache: Dropping a LinkedChunk UpdatesSubscriber release the reader token for the GC.

Crypto

  • We now persist the error that caused an event to fail to send. The error QueueWedgeError contains info that client can use to try to resolve the problem when the error is not automatically retry-able. Some breaking changes occurred in the FFI layer for timeline::EventSendState, SendingFailed now directly contains the wedge reason enum; use it in place of the removed variant of EventSendState.
  • Add more reason codes to UtdCause.
  • matrix_sdk_crypto::type::events::UtdCause::Membership has been renamed to ...::SentBeforeWeJoined.
  • Don't warn about verified users when subscribing to identity updates.

Matrix Dart SDK (website)

Matrix SDK written in pure Dart.

Matrix Dart SDK (website)

td says

meep quick major version release twim announcement -

v0.34.0

  • Powerlevel updates are no longer local echo'd, we wait for the update to come down sync.
  • Fix a ton of edgecases parsing message bodies
  • We also added v1.12 endpoints support.
  • Auto-generated objects now also have proper equality and hashcode overrides so you can just compare 2 objects now.

That's it for now, see you soon bye byee

libQuotient (website)

A Qt5 library to write cross-platform clients for Matrix

kitsune announces

libQuotient 0.9.0

After a few release candidates, the new stable branch and the new version of libQuotient are officially released! Matrix 1.12 under the hood, cross-signing support (finally in stable), lots of refactoring and cleanup after transition to Qt6-only code and a flurry of smaller features and fixes. The release notes are where you would expect them.

Elm SDK (website)

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

Bram says

Elm SDK beta 3.6.0

Despite being a minor update, the number of new features is major! The beta 3.6.0 Elm SDK update adds the following features:

  • Added Matrix.Room.getState to explore a room's state
  • Added Matrix.leave to leave rooms
  • Added Matrix.Invite module
  • Added Matrix.Event.redact and Matrix.Room.redact to redact events
  • Added Matrix.Room.name, Matrix.Room.topic & Matrix.Room.pinned_events to quickly access the most commonly used state events

Additionally, using backwards compatibility, the Elm SDK now supports ALL official spec versions! (Including historical ones.) This means that you can safely update the Elm SDK without needing to wait for your homeserver to update. You can now view the supported versions document for an in-depth table.

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi reports

matrix-docker-ansible-deploy now supports installing and configuring Matrix Authentication Service (MAS).

Huge thanks to Quentin Gliech from the Element / Matrix Authentication Service team for answering our numerous questions about MAS.

Our Setting up Matrix Authentication Service documentation page has more details about this new service, what you might expect from the switch and how you can migrate your existing (Synapse) homeserver setup to it.

Dept of Services 🚀

Synapse-Admin

Aine [don't DM] reports

A while back, we at etke.cc announced our Synapse-Admin fork, and we're excited to share more QoL changes and a new feature

Apart from that, the #synapse-admin:etke.cc room has been created - do not hesitate to say hi!

Source code, admin.etke.cc (CDN version)

Dept of Bots 🤖

Draupnir (website)

Gnuxie 💜🐝 reports

Draupnir, a moderation bot, has released v2.0.0-beta.8. This release includes improvements to safe mode, we now show which persistent configuration properties have caused Draupnir to enter safe mode. We also have made a few changes to Draupnir's logging to give system admins feedback on how Draupnir is configured. For all the details, check the release notes.

I've also written a blog update about what I have been working on over the last month or so and I also talk through an update to the Draupnir roadmap.

https://marewolf.me/posts/draupnir/2406.html

Please note that in this release the minimum node.js version required to run Draupnir has been updated from Node 18 to Node 20. If you are using Debian, please follow our documentation for using Debian and node source here, which was kindly contributed by Sky.

If you have any questions or need help with anything related to Draupnir, please find us in our support room at #draupnir:matrix.org.

Matrix Federation Stats

Aine [don't DM] reports

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

As of today, 10274 Matrix federateable servers have been discovered by matrixrooms.info, 3145 (30.6%) of them are publishing their rooms directory over federation. The published directories contain 22149 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
1conduwu.it151
2transgender.ing185
3envs.net192.5
4tomfos.tr197
5awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay203
6pissing.dev208
7constellatory.net233.5
8girlboss.ceo251.5
9nerdhouse.io256
10synapse.rntpts.de292.5

That's all I know

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

This Week in Matrix 2024-10-18

By: Thib

Dept of Social Good 🙆

spaetz says

The German Data Protection Officer is creating a catalogue of criteria to assess messengers. They still take feedback till Nov 15. List of criteria is available in German and English.

Toot: https://social.bund.de/@bfdi/113306169664247379

English criterion pdf link is: https://www.bfdi.bund.de/SharedDocs/Downloads/EN/Konsultationsverfahren/3_Messengerdienste/Katalog-SMA-Front-End.pdf?__blob=publicationFile&v=2

Dept of Spec 📜

TravisR 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:

Closed MSCs:

Spec Updates

Matrix 1.12 went out last week! This release contains a few Trust & Safety improvements, bug fixes for authenticated media, an ability to mark rooms as unread, and several other quality of life features. Check it out, and get an early preview for what the next release might look like 👀

If there's something you'd like the Spec Core Team to take a look at, let us know in our office room: #sct-office:matrix.org

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Quentin Gliech reports

This week we released v1.117.0. The highlights of this release are essentially many small performance increases, mostly for the new MSC4186 sliding sync implementation.

As always, check out the full release notes to make sure you don't miss any of the exciting changes! Feel free to stop by #synapse:matrix.org to join in on the discussion and if you encounter a bug make sure to report it here.

Dept of Clients 📱

Extera

OfficialDakari announces

Hello again, users of the Matrix! It's been a week since last TWIM post and 2,5 months after first Extera commit! Anyway, here is what happened this week:

  • More animations! Developer found out about Framer-motion and now puts animations everywhere. Jump to latest/unread buttons now slide into view instead of showing up instantly.
  • Fixed pinned messages request spam. Now pinned messages window doesn't DoS the homeserver.
  • Bubble layout improved again! Message timestamps are moved to the bottom of messages. Also added icon indicating message status. It even tells if someone has read the message!
  • Redesigned emoji board and upload board. Upload board now looks like in Discord and more fits into Material UI.
  • Rust Crypto. Extera now uses Rust crypto because of recently disclosed vulnerability.

Also, Extera's alt frontend for YT Music will be released very soon.

Best regards, Extera team developer

mautrix and gomuks updates

tulir reports

This month's bridge releases include the WhatsApp bridge upgrading to the Megabridge architecture as well as small bugfixes for other bridges.

In non-bridge news, a couple weeks ago I finally started writing my own web client, and now gomuks web is starting to be usable enough for chatting. At some point in the future, I'll migrate the gomuks terminal UI over to the new framework as well.

Read more at https://mau.fi/blog/2024-10-mautrix-release/

Fractal (website)

Matrix messaging app for GNOME written in Rust.

Kévin Commaille says

It's time to experience La vie en rose! We just released Fractal 9.rc and to show our support 🩷 for Breast Cancer Awareness Month, we decided to change the accent color to pink. And it is also packed with bug fixes, take a look for yourself:

  • We used to only rely on the secrets provider to tell us which Matrix accounts are logged-in, which caused issues for people sharing their secrets between devices. Now we also make sure that there is a data folder for a given session before trying to restore it.
  • Our notifications are categorized as coming from an instant messenger, so graphical shells that support it, such as Phosh, can play a sound for them.
  • Some room settings are hidden for direct chats, because it does not make sense to change them in this type of room.
  • The size of the headerbar would change depending on whether the room has a topic or not. This will not happen anymore.

As usual, this release includes other improvements, fixes and new translations thanks to all our contributors, and our upstream projects.

It is available to install via Flathub Beta, see the instructions in our README.

As the version implies, it should be mostly stable and we expect to only include minor improvements until the release of Fractal 9.

If you are wondering what to do on a rainy day, you can try to fix one of our newcomers issues. We are always looking for new contributors!

Ement.el (website)

Matrix client for Emacs

alphapapa announces

Ement.el, a Matrix client for the GNU Emacs text editor and Lisp environment, has been released at version 0.16. Changes since the last release include:

Compatibility

Additions

  • When option ement-room-images is disabled (preventing automatic download and display of images), individual images may be shown by clicking the button in their events.

Changes

  • Option ement-room-coalesce-events may now be set to (and defaults to) a maximum number of events to coalesce together. (This avoids potential performance problems in rare cases. See #247. Thanks to Arto Jantunen for reporting and Sergio Durigan Junior for testing.)

Fixes

  • Replies to edited messages are correctly sent to the original event (whereas previously they were sent to the edit, which caused reactions to not be shown). (#230, #277. Thanks to Phil Sainty for suggesting, and to dionisos for reporting.)
  • Set filter-buffer-substring-function in room buffers to prevent undesired text properties from being included in copied text. (#278. Thanks to Phil Sainty.)
  • Command ement-disconnect no longer shows an error message. (#208.)
  • Retrieval of earlier events in a just-joined room. (#148. Thanks to Richard Brežák for reporting, and to Phil Sainty for testing.)
  • Cache computed displaynames in rooms (avoiding unnecessary reiteration and recalculation). (#298. Thanks to Rutherther for reporting and testing, and to Phil Sainty.)
  • Customization group for options ement-room-mode-hook and ement-room-self-insert-mode. (Thanks to Phil Sainty.)
  • Inheritance for some faces. (#303. Thanks to Jonas Bernoulli.)

Feel free to join us in the chat room: #ement.el:matrix.org!

Element X iOS (website)

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

Mauro Romito says

  • Made some good progress on the knock join rule implementation
  • Some media upload optimisation were done client side to allow a more optimal media experience
  • Fixed some bugs in particular a nasty one that did not allow images to be opened when sent from EXA
  • The identity banner will now always show the user id to reduce ambiguity

Element X Android (website)

Android Matrix messenger application using the Matrix Rust SDK and Jetpack Compose.

benoit reports

  • F-Droid release flow is now fixed, users should be able to upgrade to the latest version from this store.
  • The identity banner will now always show the user id to reduce ambiguity
  • Working on various features like room knock and incoming verification request.
  • Fixing many bugs and polishing the app, in particular microphone lost when background-ing the app during a call on Android 14.
  • We made some fixes for RTL languages, the app should be rendered correctly in this case (not released yet)

Dept of SDKs and Frameworks 🧰

Rory&::MatrixUtils - General utility suite for Matrix

Emma [it/its] reports

Just a small change to better integrate with tools like communitybot

Changes:

  • Added ability to create a new policy list directly (without relying on the broken room creator)
  • Added a dedicated sidebar item to access and manage policy lists

Re: matrix.org: users on matrix.org can access LibMatrix & related rooms again!

The "first party" instance is available at https://mru.rory.gay, and is a clientside-only web app!

And, as with all of the other projects:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, layout/UI/UX improvements, anything!
  • Discussion, suggestions and ideas are welcome in #mru:rory.gay

Dept of Ops 🛠

synadm (website)

Command line admin tool for Synapse (Matrix homeserver)

jacksonchen666 (they/it) says

The documentation for synadm has been updated with 2 changes:

  1. The most obvious theme change: You can see the new docs theme on https://synadm.readthedocs.io/en/latest/ right now (compared to https://synadm.readthedocs.io/en/v0.46.1/)
  2. There is now an API to CLI mapping page for synadm, linking to the Synapse Admin API docs and the synadm command that uses the linked Synapse Admin API. This is useful for seeing what's implemented and what's not, or if you forgot which command does what you want.

That's roughly all the big changes. We also want to thank everyone who has contributed so far, and at the same time welcome new contributors. The “API to CLI Mapping” docs chapter was created to give a clear overview of what synadm can do and what’s not yet implemented. Check it out, use it, come and join #synadm:peek-a-boo.at and help us make synadm better and more feature complete!

Dept of Services 🚀

etke.cc (website)

Your matrix server on your conditions

Aine [don't DM] announces

Synapse-Admin Updates

A while back, we at etke.cc announced our Synapse-Admin fork, and this week we're excited to share a single major update, but oh boy, if you use MAS you'd love it!

Login with Access Token is here 🎉

Yes, that's not a full MAS compatibility, but at least now you can generate a proper token using mas-cli and use it as-is, without odd quirks like blocking access to specific endpoints to modify the token.

Source code, admin.etke.cc (CDN version), already available in MDAD playbook

Matrix Federation Stats

Aine [don't DM] announces

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

As of today, 10219 Matrix federateable servers have been discovered by matrixrooms.info, 3143 (30.8%) of them are publishing their rooms directory over federation. The published directories contain 21159 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
1tomfos.tr188
2conduwu.it198.5
3transgender.ing214.5
4bark.arf.wf221
5awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay231
6envs.net264.5
7mehren.cloud276
8nerdhouse.io297
9maunium.net341.5
10constellatory.net358

That's all I know

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

Security disclosure for matrix-js-sdk (CVE-2024-47080) and matrix-react-sdk (CVE-2024-47824)

Hi all,

We are disclosing two high-severity vulnerabilities in matrix-js-sdk and matrix-react-sdk related to MSC3061, which specifies sharing room keys with newly invited users for message history access.

Affected versions

Vulnerability details

When inviting a user to an encrypted room, in the legacy (pre-Rust) encryption implementation, matrix-react-sdk forwarded existing message keys to the newly invited user so they could decrypt shared message history as per MSC3061. The implementation is provided by matrix-js-sdk, which incorrectly applied the same rules for sending existing keys to the invited user as for sending new keys, which allows them to be sent to unverified devices and unverified users. While there's always some risk of key exposure to a server-side attacker when you're interacting with unverified users, the risk is higher for historical keys.

Root cause and remediation

The root cause of the matrix-react-sdk vulnerability is a function call into vulnerable functionality implemented in the matrix-js-sdk. The matrix-react-sdk vulnerability was addressed earlier, in matrix-react-sdk version 3.102.0, by removing the call. The matrix-js-sdk vulnerability will be addressed in version 34.8.0 to remove the vulnerable functionality completely. Because of these differences, two separate advisories were warranted.

Note that the vulnerability is only present in the matrix-js-sdk when running the old, non-Rust encryption stack. The vulnerable functionality was never implemented in the Rust-based stack. As a result, clients using the matrix-js-sdk in Rust crypto mode (i.e. calling initRustCrypto rather than initCrypto) are not vulnerable, even if on a nominally vulnerable version.

Furthermore, matrix-android-sdk2 and matrix-ios-sdk have similar functionality that is gated behind an experimental setting—we recommend avoiding use of this setting, though there are no specific advisories since the feature has only been available in an experimental state.

Proposed specification changes

To fix this functionality in terms of the specification process, we will open an MSC to explicitly clarify that MSC3061 key forwarding should only forward keys to verified devices owned by verified users, ensuring that historical keys are never shared with untrusted devices. This also encourages users to verify each other to enable reading message history, thereby improving Matrix security against interception.

Note on project ownership

The matrix-react-sdk is no longer a Foundation project but that of Element and has been moved to https://github.com/element-hq/matrix-react-sdk. However, the vulnerability in question was introduced, found and patched while it was still under Foundation ownership. For this reason, the Matrix.org Security team decided to treat this as a Foundation advisory. Future advisories for matrix-react-sdk (if any) will come from Element.

This Week in Matrix 2024-10-11

By: MTRNord

Matrix Live

Today's Matrix Live: https://youtube.com/watch?v=b1jJlT2ENT8

Dept of Clients 📱

Extera

OfficialDakari reports

Hello, everyone!

During this week, a few things happened in Extera. Here is what changed:

  • Animations. Now, Extera has some animations in it. Member drawer opening/closing animation or navigating animation.
  • More material design. We made emoji&sticker pack settings use Material Design too.
  • A lot better threads! Threads are now really nearly usable. They now have different routes too.
  • Message menu in material design. Deleting and reporting messages form has Material Design too.

Our server got some changes too:

  • Federation is now happening through Cloudflare WARP.
  • We've got Git instance!

Also, we've started actively working on Extera Music (name is subject to change) - our alternative front-end for YouTube with playlists and a lot of cool things.

Nheko (website)

Desktop client for Matrix using Qt and C++17.

Nico announces

Nothing much interesting to say currently, but one thing might be interesting to Nheko users:

We noticed that http/3 increases the CPU usage of Nheko a lot (by 10-20x!) and makes the connection in general unstable. We use libcurl in the backend and depending on your distribution http/3 might get enabled by default. In my case this meant even when idle Nheko was using 10% or more CPU. The next release will disable http/3 by default for this reason. In my case this brings down CPU usage to 0.5% again, which is a noticeable improvement to battery life.

Why the CPU usage increases this much with http/3 has a multitude of reasons (and isn't libcurl's fault, but more related to how http/3 works as well as some crypto library shenanigans). I won't go into the details there, but feel free to discuss this in #nheko:nheko.im. Specifically we were hoping for http/3 to improve the reconnection logic and make roaming between IPs a better experience. So far the opposite seems to be the case, but if you have any suggestions on what we could improve, they are very welcome!

Dept of Widgets 🧩

NeoBoard Widget v1.20.0 (website)

milton announces

Version 1.20.0 of NeoBoard is a small incremental update following 1.19.1 after a short month with a presentation at The Matrix Conference. This version brings the following updates:

Disable Grid During Presentation

We made the Presentation Mode easier to use by disabling the grid automatically when starting to present, and restoring it after presenting. Of course if you need it, you can still toggle it back on during presentation.

Small Screen Improvements

We also tweaked the bottom toolbars a bit: Some of the less important buttons are now hidden automatically so NeoBoard remains usable even when the available screen space is narrow. Enlarge the window, and they will reappear. 🪄

While we were at it, we also fixed an alignment issue in Safari, so we have the same experience on all platforms.

You can get the full release notes here and here's a reminder that you can always try it now: just add NeoBoard as a widget to one of your rooms by following these instructions.

We invite you to try all of this and would love to get some feedback at #nordeck:matrix.org.

Dept of SDKs and Frameworks 🧰

Elm SDK (website)

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

Bram announces

Zoooom! 🏎️ The Elm SDK now supports all spec versions, including the new version 1.12!

With this patch update, support now includes version 1.12 - but don't worry, old (even deprecated!) spec versions remain supported. The Elm SDK adapts its communication to whatever your homeserver supports, so you can safely update your Elm library without needing to wait for your homeserver to update. This design makes the SDK nearly trivial to update to the latest spec version - and hence very fast. Zoooom!

Dept of Ops 🛠

etke.cc (website)

Your matrix server on your conditions

Aine [don't DM] says

Synapse-Admin: Bugfixes & Improvements

A while ago, we at etke.cc announced our Synapse-Admin fork, and this week we are here with the fork news again.

No significant changes were made this week (however, MAS users will like the-next-big-thing, even tho it's a workaround), this is more maintenance release with small QoL improvements:

Source code

Dept of Bots 🤖

communitybot plugin for maubot (website)

wreck announces

quick reminder for the uninitiated: the communitybot plugin is a maubot plugin to aid administrators of communities on matrix! it supports community management controls to make it easy to add new rooms to your Space, track inactive users, redact files or offensive messages in some or all of your rooms, and keep out the ne'er-do-wells.

with the latest update for the communitybot plugin for maubot, you can now have your bot subscribe to public ban lists by having your bot join their room (like the CME banlist, included in the config by default!). when subscribed, the bot will automatically ban malicious/spam accounts when they join any of your rooms. this is read-only functionality, so if you're interested in publishing or defining your own policy lists, you will still be better served by a project like Draupnir.

which begs the question: who should use this? the answer, as well as suggested community structure, are now in the readme. feel free to join #dev:mssj.me to discuss further or get help!

Matrix Federation Stats

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

Aine [don't DM] reports

As of today, 10152 Matrix federateable servers have been discovered by matrixrooms.info, 3118 (30.7%) of them are publishing their rooms directory over federation. The published directories contain 22188 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
1bark.arf.wf174
2conduwu.it218
3tomfos.tr225
4saneke.eu269
5constellatory.net301
6maunium.net307.5
7ncat.cafe307.5
8uwu.zemos.net315
9bi-vibes.com319
10transgender.ing428

That's all I know

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

Matrix v1.12 release

Hey all,

Welcome to the Matrix 1.12! It’s been just over 3 months since Matrix 1.11 introduced authenticated media, and today we’re bringing more Trust & Safety features to the ecosystem, alongside the normal clarifications and general improvements to the protocol. This release is also technically a few days late on the quarter, but it’s for good reason! Folks from across the ecosystem got together in Berlin for the Matrix Conference, and after things wrapped up we were busy following up on ideas started on site. We can’t wait to see all of these ideas materialize as MSCs, but in the meantime, back to the honorary Q3 release of the spec:

Matrix 1.12 marks the recommended date for all servers to enable their media freeze, similar to matrix.org’s back in early September 2024. Servers which haven’t yet enabled their media freeze are strongly encouraged to do so, if it makes sense for their users. Matrix 1.12 also brings some improvements and clarifications to authenticated media, and a total of 9 MSCs covering a wide range of features.

Read on for a few highlights, and the full changelog at the end of this post.

Account locking

Prior to Matrix 1.12, the available account states for a user were “active” and “deactivated”, with no options for in-between or less destructive states. MSC3939 adds a new state, “locked”, to the mix which preserves the user’s account, but logs them out and doesn’t let them back in until the lock is removed. This new state could be used to prevent an attacker from brute forcing an account, handling out of band verification, or be a reaction to a moderation/terms of service decision. The server admin can then later reverse the lock with no impact on the user’s rooms, messages, or account information, unlike with deactivation.

When paired with MSC3823-style suspension, server admins have more non-destructive options to stop a user’s pattern of behaviour. They can completely kick the user out of their account with locking, or allow them to continue using the account in “read only” mode. MSC3823 is pending some implementation checks at the moment, but is expected to land in the next couple of releases.

Clients looking to implement locking or suspension will need to look at error codes, and continue calling /sync to determine when the account state changes (either back to active, or deactivated). MSC3939 and MSC3823 both have suggestions for what the UI might look like for a client as well.

Marking rooms as unread

Finally, it’s possible to mark a room as “unread” after reading it. The existing read receipts structure makes this a uniquely difficult task to do traditionally, but MSC2867 found a way to get the same effect using account data instead. This approach doesn’t always maintain the unread message count, if it can even be calculated, but does offer users an ability to mark a room as something to come back to.

Client implementation can be a bit tricky when interacting with the overall notification system, but some may find it easy to add support for. In future it may be possible to mark individual messages as unread, or have the server calculate unread-ness over Simplified Sliding Sync, for example.

Up next in Matrix 1.13 and beyond

Matrix 1.13 is expected to be released between late November and early December 2024. Many of the Matrix 2.0 features are undergoing finishing touches, particularly on the MSC side, and may also be ready for inclusion in the spec release. Meanwhile, we’re keeping an eye on MSCs proposed for Final Comment Period, and taking suggestions for MSCs which may be ready for the next stage in the process: if there’s something you think is ready for FCP, let us know in the SCT Office room!

The full changelog

The full changelog for Matrix 1.12 is:

Client-Server API

Deprecations

  • Deprecate the server_name query parameter on POST /_matrix/client/v3/join/{roomIdOrAlias} and POST /_matrix/client/v3/knock/{roomIdOrAlias}, as per MSC4156. (#1933)

Removed Endpoints

  • Remove references to device-specific push rules. (#1842)
  • Remove the deprecated name attribute on HTML anchor elements, as per MSC4159. (#1870)

Backwards Compatible Changes

  • Add 403 responses on GET /_matrix/client/v3/profile/{userId}/avatar_url and GET /_matrix/client/v3/profile/{userId}/displayname, as per MSC4170. (#1867)
  • Add support for marking rooms as unread, as per MSC2867. (#1895, #1941)
  • Add via query parameter on POST /_matrix/client/v3/join/{roomIdOrAlias} and POST /_matrix/client/v3/knock/{roomIdOrAlias}, as per MSC4156. (#1933)
  • Add account locking, as per MSC3939. (#1934)
  • Guest accounts can now download/thumbnail media from the new authenticated endpoints, as per MSC4189. (#1959)

Spec Clarifications

  • Rename and sort the modules in the feature profiles table for easier skimming. (#1855)
  • Clarify that room avatars cannot be encrypted. (#1871)
  • Document the acronyms and alternate names for the "Secrets" section. (#1875)
  • Improve recommendation for how to form transaction IDs. (#1888)
  • Clarify that the deprecated dont_notify and coalesce push rule actions MUST be ignored, not rejected. (#1890)
  • Fix various typos throughout the specification. (#1892)
  • Add missing references to m.set_displayname, m.set_avatar_url, and m.3pid_changes in capabilities table. (#1897)
  • Clarify that the fallback login page calls window.matrixLogin.onLogin instead of window.onLogin. (#1899)
  • Remove confusing description of restricted rooms with no valid conditions. (#1903)
  • Clarify that window.matrixLogin.onLogin is called with the response body of POST /_matrix/client/v3/login. (#1905)
  • Document the m.get_login_token capability, as per MSC3882. (#1908)
  • Clarify that the User identifier object in POST /_matrix/client/v3/login contains additional properties that depend on the identification type. (#1909)
  • Don't mention that GET /_matrix/client/v3/profile/{userId} can return additional properties because this is true for almost every endpoint. (#1910)
  • Improve wording of the unauthenticated media deprecation box. Contributed by @HarHarLinks. (#1916)
  • Additional properties in GET /.well-known/matrix/client don't have to be objects. (#1920)
  • Document that the spec uses RFC 2119 keywords. Contributed by @HarHarLinks. (#1928)
  • Specify Content-Type and Content-Disposition usage in the media repo, as per MSC2701 and MSC2702. (#1935)
  • Additional keys in GET /_matrix/client/v3/capabilities don't have to be objects. (#1945)

Server-Server API

Backwards Compatible Changes

  • Add 403 response on GET /_matrix/federation/v1/query/profile, as per MSC4170. (#1867)

Spec Clarifications

  • Remove origin field from PDU example because it doesn't exist in the schema anymore. (#1918)
  • Document that the spec uses RFC 2119 keywords. Contributed by @HarHarLinks. (#1928)
  • Fix required fields in GET /_matrix/key/v2/server response schema. (#1930)
  • Use "server name" instead of "DNS name" to avoid confusion with the "DNS name" component of "server names" as defined in the appendices. (#1946)

Application Service API

Spec Clarifications

  • Document that the spec uses RFC 2119 keywords. Contributed by @HarHarLinks. (#1928)

Identity Service API

Spec Clarifications

  • Document that the spec uses RFC 2119 keywords. Contributed by @HarHarLinks. (#1928)

Push Gateway API

Spec Clarifications

  • Document that the spec uses RFC 2119 keywords. Contributed by @HarHarLinks. (#1928)

Room Versions

Spec Clarifications

  • Fix a formatting issue in state resolution v2. (#1896)
  • Document that the spec uses RFC 2119 keywords. Contributed by @HarHarLinks. (#1928)

Appendices

Spec Clarifications

  • Document that the spec uses RFC 2119 keywords. Contributed by @HarHarLinks. (#1928)

Internal Changes/Tooling

Spec Clarifications

  • The Matrix.org Foundation no longer requires "real" or "legally identifiable" names in order to contribute to projects. (#1886, #1914)
  • Document the removal changelog category. (#1907)
  • Use dedicated fonts for better support of mathematical symbols. (#1919)
  • Document that the spec uses RFC 2119 keywords. Contributed by @HarHarLinks. (#1928)
  • Provide markdown checklists for changelogs under /changelog/$VERSION/checklist.md. (#1937, #1954)
  • Add the deprecated field to properties of OpenAPI definitions and JSON Schemas. (#1940)
  • Use relative permalink to redirect to latest changelog. (#1956)

This Week in Matrix 2024-10-04

By: MTRNord

Matrix Live

Today's Matrix Live: https://youtube.com/watch?v=VZTvpGuo9aA

Dept of Spec 📜

The weekly spec update

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

MSCs in Final Comment Period:

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Update

Lots of interesting MSCs came in this week! Note that last week's are also listed as the spec update was skipped.

A swath are looking to improve moderation in Matrix, while others aiming to improve the story around notifications and end-to-end encrypted bridges. There's also been lots of discussion on the hot MSC4133: Extending User Profile API with Key:Value pairs, which can be built upon with spec'd profile fields such as m.timezone (MSC4175).

MSC4208 is the result of splitting out the custom fields portion of that MSC, as it was determined that that portion of MSC4133 needed further discussion before merging.

Finally, MSC4189: Allowing guests to access uploaded media being merged closes one of the final gaps with the authenticated media epic.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Andrew Morgan (anoa) {he/him} says

This week we released v1.116.0. The highlights haven't changed since our announcement of v1.116.0rc2 last week. See the changelog for the full details.

Thank you to all our contributors for helping to make Synapse the best it can be. As always, feel free to stop by #synapse:matrix.org to join in on the discussion and if you encounter a bug make sure to report it on our issue tracker.

Dept of Clients 📱

Element-Web

tulir announces

My PR for rendering media captions was just merged into element web :3 https://github.com/element-hq/matrix-react-sdk/pull/43

This allows for a caption to be shown next to the media filename by adding support for the changes from MSC2530

Extera Material Design

OfficialDakari says

Last 5 days I was working on Material UI redesign as usual. Here is what changed:

  • Speed dial button
  • Profile edit window
  • Room and space settings
  • floating buttons in room timeline

Also I've brought back sound effects and Project Sekai related auth background. They are now stored locally (P.S.: Hardcoding Matrix Media URLs was the worst idea)

Element X iOS (website)

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

Doug announces

This week have have been working on "Identity Pinning Violation Notifications" (TOFU via the Rust SDK), the ability to hide images in the timeline for Trust & Safety purposes and we’ve started exploring what Knocking could look like in the app.

Dept of SDKs and Frameworks 🧰

Rory&::MatrixUtils - General utility suite for Matrix

Emma [it/its] reports

Tiny updates this week :)

A short list of major changes:

  • You can now add sessions with an access token, this opens up usage of RMU to users of homeservers without password login. No more messing with localstorage!
  • Fixed a bug with the policy list editor, that caused state keys to be double URL-encoded. You can now successfully edit and remove policies again!

The "first party" instance is available at https://mru.rory.gay, and is a clientside-only web app! If RMU has provided value in your daily routines or as a one time thing, please do consider donating over at Liberapay!

And, as with all of the other projects:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, layout/UI/UX improvements, anything!
  • Discussion, suggestions and ideas are welcome in #mru:rory.gay

Rory&::LibMatrix (website)

.NET 8 matrix bot/client library/SDK

Emma [it/its] says

A few bugfixes and bodges left and right :)

Changes

  • Bots can now load their access tokens from a file! You're welcome, systemd users! 🔒
  • Fixed and improved interoperation with tools like Draupnir. (Breaking: don't URL encode your state keys anymore!)
  • Minor work towards packaging & potentially publishing to NuGet! Maybe LibMatrix in your local package repo soon? 🦊 👉👈
  • Breaking: Room predecessor support has been removed. Thanks, #foundation-office:matrix.org!
  • Rooms where a name had been set before but subsequently removed, should now correctly pick an alternative name to display. No more "< small void where text is supposed to be >".
  • Made it easier to use custom types when reading events.
  • You can finally add mentions and newlines to messages.

If you want to help out on these topics, please feel free to reach out at #libmatrix:rory.gay! (N.B. Sorry, matrix.org users, the room is currently inaccessible. We hope to have this resolved soon!)

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 us know, we'd love to hear all about it!

Dept of Services 🚀

etke.cc (website)

Your matrix server on your conditions

Synapse-Admin Updates

Aine [don't DM] reports

A while back, we at etke.cc announced our Synapse-Admin fork, and this week we're excited to share two major updates (yep, again):

  • Authenticated Media support
  • Options to remove media and redact events on user removal

The former one brings Matrix 1.11 Authenticated Media support to Synapse-Admin

The latter one adds 2 toggles to the user erasure confirmation dialog:

Apart from major changes, a bunch of small changes were made as well:

  • Unify media icons in the sidebar and on user's view page
  • Add proper previews for uploaded images and a download button for non-image uploads
  • Do not block rooms from joining on delete by default (to avoid accidental blocks)

Source code

Dept of Bots 🤖

Draupnir (website)

Gnuxie 💜🐝 reports

Draupnir v2.0.0-beta.7 has been released. Ever been told to open /devtools to fix your bot's corrupted or invalid account data? In this release, we are gathering feedback for a new feature called "Safe Mode". If Draupnir fails to start from a recoverable error, Draupnir will start with limited capabilities and prompt you to select a recovery option. You can then use a command to restart the bot.

We'll be iterating "Safe Mode" over the next two weeks and focussing on assisting system admins with diagnosing setup issues. So don't forget to join us in our support room #draupnir:matrix.org and tell us what you think.

baibot (website)

Slavi reports

Since the official announcement of baibot, we've had a few releases (see the changelog) that bring important improvements like:

Rory&::MatrixContentFilter - An extensible, proactive moderation bot

Emma [it/its] announces

Here's a new project we've been working on for a bit now :)

Primary features:

  • Granular access controls
    • Per room configuration
    • Bot-wide or per-room user ignore lists, including per filter configuration
  • Ability to interface with the bot externally (assuming you have an access token for the bot user) - Configuration is hot-reloadable over account data
  • Planned filters:
    • Disallow uploading images (mostly implemented, missing configuration handling)
    • Disallow uploading videos (missing)
    • Disallow posting links (missing)
    • Limit user mentions (missing)
    • Limit message rate (missing)
    • Anything else you may be able to think of! (missing)

As always, to ensure we can keep developing and maintaining these tools, consider donating over at Liberapay!

And, as with all of the other projects:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, UX improvements, anything!
  • Discussion, suggestions and ideas are welcome in #mcf:rory.gay (Space: #mcf-space:rory.gay)

Dept of Non Chat Clients 🎛️

Matrix Rooms Search News (website)

Aine [don't DM] reports

It's been a while since we posted MRS updates, so let's start with...

What is MRS?

Matrix Rooms Search (MRS) is a standalone search engine and Matrix Directory server that indexes Matrix servers with enabled federation and published room directory (over federation), after that you can search rooms across whole Matrix Federation either directly from your matrix client app (details), or by using simple REST API of the MRS itself.

What's new?

Authenticated Media is here - now when you browse MRS using REST API (e.g. by using the demo server on matrixrooms.info), room avatars will be fetched by the new Matrix v1.11 Authenticated Media endpoints (old unauthenticated media endpoint is still used as well, so there is a fallback).

And another update - MRS now by default uses both exact match and fuzzy queries, so that should help will searching!

Source code, MatrixRooms.info, and don't forget to say hi in #mrs:etke.cc

Matrix Federation Stats

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

Aine [don't DM] announces

As of today, 10116 Matrix federateable servers have been discovered by matrixrooms.info, 3104 (30.7%) of them are publishing their rooms directory over federation. The published directories contain 21185 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
1conduwu.it222.5
2itzzen.net241
3tomfos.tr246
4ipv6.girlcock.systems270
5awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay277.5
6bark.arf.wf282
7saneke.eu295
8maunium.net296
9puppygock.gay305
10transgender.ing307

#ping-no-synapse

tulir reports

The no-synapse ping room which only allowed echo bots on non-synapse servers has been shut down. It often confused people because pings were still allowed from synapses, only the pongs were non-synapse. The general #ping:maunium.net room remains active.

That's all I know

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

This Week in Matrix 2024-09-27

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Devon Dmytro announces

This week we released v1.116.0rc2. Here are a few of the highlights:

...and a whole lot more. Check out the release notes for the full set of changes! Thank you to all our contributors for helping to make Synapse the best it can be. As always, feel free to stop by #synapse:matrix.org to join in on the discussion and if you encounter a bug make sure to report it here.

Dept of Clients 📱

Fractal (website)

Matrix messaging app for GNOME written in Rust.

Kévin Commaille says

Back to school, and Fractal is back too! The leaves are starting to cover the floor in our part of the globe, but you don’t have to shake a tree to get our goodness packed into Fractal 9.beta:

  • We switched to the glycin library (the same one used by GNOME Image Viewer) to load images, allowing us to fix several issues, like supporting more animated formats and SVGs and respecting EXIF orientation.
  • The annoying bug where some rooms would stay as unread even after opening them is now a distant memory.
  • The media cache uses its own database that you can delete if you want to free some space on your system. It will also soon be able to clean up unused media files to prevent it from growing indefinitely.
  • Sometimes the day separators would show up with the wrong date, not anymore!
  • We migrated to the new GTK 4.16 and libadwaita 1.6 APIs, including CSS variables, AdwButtonRow and AdwSpinner.

As usual, this release includes other improvements, fixes and new translations thanks to all our contributors, and our upstream projects.

It is available to install via Flathub Beta, see the instructions in our README.

As the version implies, there might be a slight risk of regressions, but it should be mostly stable. If all goes well the next step is the release candidate!

If you have a little bit of time on your hands, you can try to fix one of our newcomers issues. Anyone can make Fractal better!

Element X iOS (website)

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

Doug reports

  • This week brings the Release Candidate for v1.8.4 to TestFlight which amongst other things enables Message Pinning - long press on a message and tap Pin to try it out yourself!
  • v1.8.4 is also our first build to use Xcode 16 which should fix some iOS 18-related bugs and we’ve been fixing any smaller bugs that we’ve encountered as the week has progressed.
  • Lots of time has been spent on our tests (some of which fell apart a little after the Xcode 16 upgrade), and hopefully we’ll soon be back to enjoying a stable suite of tests.
  • Finally we’re tackling the big AGPL migration and are updating Element iOS Classic, Compound iOS and the Rich Text Editor to be inline with all of our Element licenses.

Element X Android (website)

Android Matrix messenger application using the Matrix Rust SDK and Jetpack Compose.

ganfra reports

  • This week we've released version 0.6.4 to Google Play Open Testing. Message Pinning is now stable - long press on a message and tap Pin to try it out yourself!
  • We have spend most of our time fixing bugs and improving code, including tests.
  • Finally we’re tackling the AGPL migration on various projects to be inline with all of our Element licenses.

Dept of SDKs and Frameworks 🧰

vodozemac-bindings for c++

tusooa🏔️ reports

vodozemac-bindings for c++ now works for builds without exceptions. We have also written a doc: https://iron.lily-is.land/w/from-libolm-to-vodozemac/ . Again, any help is welcome.

It now supports building on Windows. See Merge Request 10 for more details.

Dept of Services 🚀

etke.cc (website)

Your matrix server on your conditions

Aine [don't DM] says

A while back, we at etke.cc announced our Synapse-Admin fork, and this week we're excited to share two major updates:

  • Upgrade to React Admin v5
  • Restrictions on modifying specific users

The React Admin upgrade enhances the Synapse-Admin UI experience, especially if you found the previous dark theme too high-contrast.

The second update is a quality-of-life improvement you've always wanted but may not have known you needed. 🙂

Previously, we introduced a feature to prevent users from accidentally deleting their sole homeserver administrator account.

Now, we're addressing another common issue: inadvertently altering system user accounts managed by appservices (such as bridges and bots). Editing, deleting, locking, or changing the passwords of these appservice-managed accounts can cause serious problems. To prevent this, we've added a new feature that blocks these types of modifications to such accounts, while still allowing other risk-free changes (changing display names and avatars). By defining a list of MXID regex patterns in the new asManagedUsers configuration setting, you can protect these accounts from accidental changes.

If you're using matrix-docker-ansible-deploy, the playbook automatically handles this configuration setting to ensure appservice-managed user accounts remain safe.

Source code

Dept of Events and Talks 🗣️

Matrix User Meetup Berlin

saces announces

As we have all not seen each other for a long time, I can proudly announce:

Next Matrix user meetup 2.10.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.

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 🛰️

AlexGames: simple Lua/Rust WebAssembly powered board games running in a Matrix widget

axby announces

I put together a collection of simple board games written in Lua and Rust, built them to WebAssembly, and focused on a standalone web application that relies on a websocket server for multiplayer. I tried swapping out the websocket server for the Matrix widget API, and it works! This means that all you need is the static HTML/JS/WASM hosted on a server, and you can add a widget to a small Matrix room like this:

/addwidget https://alexbarry.net/dev/games/matrix-widget/?matrix_widget_id=$matrix_widget_id&matrix_user_id=$matrix_user_id

And you can play games with a friend, using Element web or desktop. No other server side handling required!

Here's a demo video, two Element web sessions playing chess together, using the Matrix room for game state changes: https://youtu.be/a_uR0tPeR18?t=15

Source code is available in a branch on GitHub here, and feel free to join #alexgames:matrix.org if you're interested in more, or want to find someone to try a game with. To try the standalone web version, you can visit https://alexbarry.github.io/AlexGames/ . I'd be happy to update and polish the Matrix widget version if there's interest. I also set up my project so that you could write your own games in Lua and upload them to the existing web/matrix version, without having to build the project. See my very simple API (e.g. draw_rectangle, handle_user_clicked) and the API demo example game.

Matrix in the News 📰

HarHarLinks reports

While the team is still working hard on the video recordings from The Matrix Conference (watch this space!), we got some news coverage:

Matrix Federation Stats

Aine [don't DM] announces

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

As of today, 9994 Matrix federateable servers have been discovered by matrixrooms.info, 3079 (30.8%) of them are publishing their rooms directory over federation. The published directories contain 21297 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
1conduwu.it211
2tomfos.tr213
3fost.re224
4awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay228.5
5puppygock.gay250
6girlboss.ceo275.5
7itzzen.net277
8bark.arf.wf315.5
9ipv6.girlcock.systems352
10speakup.nl375.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
1tomfos.tr66.5
2fost.re81.5
3conduwu.it83
4transgender.ing98.5
5girlboss.ceo131
6nerdhouse.io175.5
7bark.arf.wf176.5
8constellatory.net182.5
9littlevortex.net195.5
10ipv6.girlcock.systems208.5

That's all I know

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

This Week in Matrix 2024-09-22

By: MTRNord

Dept of Status of Matrix 🌡️

Josh Simmons (m.org) announces

We had our first Governing Board gathering today at the Matrix Conference in Berlin, with 17 of the 20 members present (4 of which joined remotely)! We got to know each other a little better and discussed many things including Trust & Safety and how we communicate with each other and with the community.

Since this wasn't an official meeting, no votes were taken. The first official meeting of the Governing Board will be taking place soon!

The Governing Board

The Governing Board

Matrix Conference 2024

The Matrix Conference 2024 is over, the videos are being cooked and the slides are being uploaded. We'll be sharing the recordings with you as soon as they're ready.

In the meantime, a big thanks to everyone who attended, spoke, and helped make it happen. We hope you had a great time and learned a lot about Matrix and the community. We hope to see as many or more of you next year!

The Matrix Conference 2024

The Matrix Conference 2024

Thank you to everyone!

Thank you to everyone!

Dept of Spec 📜

MSC3861: Next-gen auth for Matrix, base on OAuth 2.0/OpenID Connect

Quentin Gliech announces

During the conference I hacked together an interactive client implementation guide for MSC3861: Next-gen auth for Matrix, base on OAuth 2.0/OpenID Connect

https://areweoidcyet.com/client-implementation-guide/

This MSC has been greatly improved over the last few weeks, so I highly recommend checking it out!

The weekly spec update

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

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

Hello from the Matrix Conference 2024! richvdh, matthew, tulir, travisr, kitsune and I (anoa) are around - come find us at the conference if you want to talk spec!

And a final call to developers, protocol designers, and future MSC writers to attend the "Authenticated media & how to ship spec features" and "MSC Process Guidance" talks in LAB 4 at this year's Matrix Conference! We'll be discussing the spec process itself, as well as how large features (and breaking changes in the spec) get designed, developed, and deployed with support from the MSC process.

If you're thinking about how to get your idea for a feature out in the hands of users, these talks are for you!

Editors Note: It already was Matrix Conference! The talks about "Authenticated media & how to ship spec features" and "MSC Process Guidance" already happened and you can find the MSC written during the conference as MSC4197. Thanks to Matthew there even has been an implementation.

An MSC being written live at the Matrix Conference 2024

An MSC being written live at the Matrix Conference 2024

Dept of Bridges 🌉

Parsee - the jealous XMPP-Matrix bridge (website)

LDA reports

Haven't worked that much compared to the last three months(kinda am at a somewhat important year with school), but I've fixed up some issues and started adding PEP avatars this week, with VCard-based ones coming right up later, and got up static CI builds with some experimental MbedTLS to replace the previous OpenSSL/LibreSSL in that regard(bringing in binaries in the ~2MBs compared to the previous 5(!)). Will probably be working on more important user concerns, mostly involving the syntax for bridged users/MUCs and actual documentation for regular users, though except slightly less time allocated to the project, as I said, I got school, and a slightly more interesting project I have to contribute to that has already gone pretty far!

Megabridge

tulir announces

This month's mautrix releases include the first megabridge releases of the Meta and Google Messages bridges, as well as a new Google Voice bridge. On the non-bridge side, I started a new project for some reason: Meowlnir. Read the full post at https://mau.fi/blog/2024-09-mautrix-release/.

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 says

  • has now officially launched with 1.8.3
  • we finally have a registration flow for matrix.org, and a way to deactivate your account
  • Simplified Sliding Sync is now fully supported, and we allow users to migrate to it if their homeserver supports it.
  • Message pinning is not released yet, but will be soon, since its now in its testing state!
  • Check out more about EL-X at the matrix conference: https://cfp.matrix.org/matrixconf2024/talk/H3MCSB/

Dept of Non Chat Clients 🎛️

WorkAdventure is now a Matrix client

David Négrier says

We are thrilled to announce that WorkAdventure — the open, decentralized platform for building 2D virtual offices and events — is now also a Matrix client! Every WorkAdventure user will now have a Matrix account automatically created.

Today's Matrix Live: https://youtube.com/watch?v=UGHK63mQTz8

This is a huge win for WorkAdventure users. Even when someone is not connected to WorkAdventure, they can still be contacted through a Matrix client like Element X on a mobile phone, directly from WorkAdventure.

We believe this will also be a significant benefit for the Matrix community, as it opens a new use case for Matrix that makes it stand out from other messaging apps.

Technical details

From a technical point of view:

  • The client is developed in Svelte JS.
  • Provides an OIDC-aware connection to the Matrix server.
  • Supports end-to-end encryption.

I will present the new client —including insights on how we developed it— at Matrix Conf 2024 on Saturday, September 21st.

Read our blog article for the release.
Test it yourself!
Source code on GitHub

Matrix Wrench v0.14.3 (website)

Matrix Wrench is a web client to tweak Matrix rooms.

Christian Paul (jaller94) reports

Tweak your Matrix rooms in style. You can now choose your own UI colors in Matrix Wrench.

If you're working with Live Location Sharing (MSC3488, MSC3672), you may want to debug it using Matrix Wrench. It supports a static string, the browser's Geolocation API, and GPX files as input. When selecting a GPX file, it replays the recorded track in real time."

Matrix Wrench's changelog

The new interface for locations in Matrix Wrench

The new interface for locations in Matrix Wrench

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for developing Clients, Bots, Appservices and Servers

Benedict says

I'm thrilled to announce the release of Trixnity 4.7. It basically adds support for Matrix 1.11, ensuring that Trixnity stays up-to-date with the latest protocol standards. Additionally, users now have the ability to cancel message sending while the media of a message is being sent. There are several internal improvements and some bugs have been fixed in this release as well.

Matrix Dart SDK (website)

Matrix SDK written in pure Dart.

td reports

meep moop!, breaking change update! We released v0.33.0 and here's a quick rundown from 0.32.0:

  • v1.11 matrix spec has now landed via out autogen!
  • authenticated media support
  • cache well known for better offline support
  • database, race conditions and other fixes!

If you are at the matrix conf do join the matrix dart sdk talk for more technical details about the sdk.

That's it for now, until next time! bye byee 👋

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

Emma [it/its] reports

It's been a few weeks since I've last posted an update, hasn't it?

Changes

  • Support for authenticated media has been implemented. You should be able to load images again!
  • Single HTTP client implementation has been merged, network connections should now be more responsive!
  • Unit tests have been fixed, this should help catch bugs more reliably to ensure stability
  • JSON canonicalisation code has been merged, which passes all tests from spec. If you find an incorrect case, please do submit patches to add them to the unit tests!
  • Fixed a bug where joining a room that allows viewing history without joining would fail.
  • Fixed a bug with sending state events that contain special characters in state keys (eg. /). Bots & clients no longer need to work around this.
  • Added a function to the base Policy content class to calculate a Draupnir-compatible state key, this allows moderation bot authors to easily be in line with Draupnir's state keys :)
Pending changes
  • Add some more utility functions to make developer UX more friendly.
  • Reduced log output so you can follow what's actually going on.
  • Fixed a bug that causes sync to break completely due to trusting event schemas too much.
Changes on ModerationClient's LibMatrix branch
  • Support for storing sync data offline, allowing users to not do an initial sync every time the app is reloaded
  • Fixed some bugs with how sync changes are processed. Messages should no longer disappear
  • Optimised sync processing, didn't benchmark but it's noticeably faster for most users. Maybe by a factor of 20x?
  • Added support for a whole load of Synapse admin API's. Client authors can now include support for deactivating users, managing the media repository, and so much more!
  • Partial support for Custom profile properties (MSC4133), though this will land in main branch independently!

Project interests

  • Licensing: Have you been put off by our choice of AGPL v3? We'd love to hear about it! Is there a better license we could use? Do you have suggestions on how we could maybe implement exemptions?
  • Packaging & testing: We would like to get a CI pipeline and packaging going. Are you experienced with Git? We'd love to have you on board to ensure that our packages are as easy to install & use as possible!
  • Public code browsing accessibility: Would it help to set up read-only GitHub/GitLab/Codeberg/Forgejo mirrors? Would you be interested in contributing if these existed?
  • E2EE: Do you have experience with Matrix' E2EE? We'd love to hear from you in terms of implementing it in LibMatrix!

If you want to help out on these topics, please feel free to reach out at #libmatrix:rory.gay! (N.B. Sorry, matrix.org users, the room is currently inaccessible. We hope to have this resolved soon!)

RE: RE: Funding

Liberapay has been fixed! Donations help me pay my bills, and help me justify working on LibMatrix!

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 us know, we'd love to hear all about it!

Dept of Ops 🛠

Rory&::MatrixUtils - General utility suite for Matrix

Emma [it/its] reports

Lots of tools have been added, updated or reworked since the original post back in May!

A short list of major changes:

  • A general tool list has been added, as well as a Labs section! Visit your nearest RMU instance to learn all about them!
  • Policy list editor can create new policies (even in bulk!, though beware, bulk addition is still very much in beta, "works but no guarantees")
  • Bulk writing of bans via Policy List Editor has deprecated the "Mass CME Ban" tool, which had been written to cover a very specific use case. This opens up the tooling for a lot more users, especially when dealing with spam waves!
  • Partial support for the concept of authenticated media, though I'd like to raise a severe epilepsy warning!
  • Lots of stability and improvements due to upstream Rory&::LibMatrix changes and improvements
  • Some tools have seen a 60%+ performance improvement! (Policy List Editor mainly)
  • Membership history viewer is now more informative about what actually changed, enabling more uses for the tool
  • Joining a space's children is now recursive

The "first party" instance is available at https://mru.rory.gay, and is a clientside-only web app! If RMU has provided value in your daily routines or as a one time thing, please do consider donating over at Liberapay!

And, as with all of the other projects:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, layout/UI/UX improvements, anything!
  • Discussion, suggestions and ideas are welcome in #mru:rory.gay

A demo of the new policy editor features

Dept of Events and Talks 🗣️

Talk about Cryptographic Key Infrastructure in Matrix

Sumner Evans says

I gave a talk about Cryptographic Key Infrastructure in Matrix at the Matrix Conference on Saturday.

I wrote a companion article, which you can read on my blog.

Matrix Federation Stats

Aine [don't DM] announces

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

As of today, 9926 Matrix federateable servers have been discovered by matrixrooms.info, 3064 (30.9%) of them are publishing their rooms directory over federation. The published directories contain 22153 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
1fost.re170
2conduwu.it235
3nerdhouse.io268
4saneke.eu296
5bi-vibes.com311
6catboyindustries.co337
7puppygock.gay379
8rory.gay401.5
9doctoruwu.uk403
10codestorm.net409

#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
1fost.re86
2conduwu.it92
3transgender.ing164
4bi-vibes.com164.5
5saneke.eu178.5
6nerdhouse.io181
7uwu.sulian.eu216.5
8codestorm.net223.5
9inu.is254
10vengeful.eu258.5

That's all I know

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

Update on Native Matrix interoperability with WhatsApp

Hi all,

Back at FOSDEM in February we showed off how Matrix could be used for E2EE-preserving messaging interoperability as required by the Digital Markets Act messaging interoperability - and we announced that Element had been working with Meta on integrating with its DMA APIs in order to connect WhatsApp to Matrix. You can see the video here, and we also demoed interop working at the technical level to the European Commission a few days beforehand.

Subsequently WhatsApp launched its DMA portal on March 8th, and the proposed Reference Offer (i.e. the terms you have to accept as a Requesting Party in order to interoperate) was revealed. The Reference Offer for Facebook Messenger was launched on September 6th. At the time of the WhatsApp launch we flagged up some significant unresolved questions - the main points being that:

  1. WhatsApp would require their users to manually enable DMA in settings before they can receive any traffic from interconnecting service providers (e.g. Element) - meaning that WhatsApp users would not be reachable by default.

  2. WhatsApp would require the client IP of any interconnecting users, in order to apply ‘platform integrity’ anti-abuse / trust & safety controls.

  3. WhatsApp would not allow an interconnecting service to buffer messages serverside.

  4. WhatsApp would require each Matrix server provider to sign a separate agreement in order to interconnect - i.e. you can’t bridge other server’s users unless those servers have signed a contract with Meta.

Now, the good news is that we’ve subsequently been talking with WhatsApp to see if we could progress these points - and we’re happy to say that they’ve listened to us and we’ve made progress on the first 3 items:

  1. Meta recently shared an update on the messaging interoperability user experience and will allow all EU users to be reachable by interoperable services by default. It’ll also give people the option of how they want to manage their inbox as well as a range of features like read receipts, typing indicators and reactions.

  2. We’ve come up with a plan with WhatsApp to reduce the amount of matrix user data we share with WhatsApp. WhatsApp’s interop solution however, doesn’t yet support multi-device conversations or shared conversation history like normal Matrix, which means that normal Matrix server-side synchronised history won’t work for these conversations.

  3. In terms of not allowing open federation: this looks unlikely to change, given Meta needs to know who is responsible for the servers who connect to them, and ensure they agree to the terms of use as required by DMA.

During discussions, another point came up which we’d previously overlooked: section 7.5.1 of the current reference offer states: Partner User Location. Any Partner Users that Partner Enlists or provides access to the Interoperable Messaging Services must be located and remain in the EEA”. In other words, interop would only be available to Matrix users physically in the EEA, which is obviously against the Matrix Foundation’s manifesto to provide secure communication to everyone. Moreover, to demonstrate compliance the Matrix side would have to geolocate the client’s IP.

It turns out that this limitation to EU users ended up being the biggest obstacle for productising the native Matrix<>WhatsApp bridge, as it is unclear whether it’s financially viable for anyone (e.g. Element) to launch such a bridge if it only works for Matrix users physically within the EEA (not to mention the costs and privacy issues of geolocating Matrix users).

Now, on one hand, deploying Matrix as a mature standards-based protocol for WhatsApp interop with native E2EE feels like a worthy goal: indeed, it effectively gives DMA interoperators a stable standardised API with pre-existing SDKs to implement against, rather than having to implement against proprietary and potentially shifting vendor APIs. So overall it moves the needle towards the end goal of Matrix’ mission.

On the other hand, this all may be moot if the return on investment of building DMA interop with WhatsApp via Matrix is too far away for any company in the Matrix ecosystem to be able to afford the investment, and if there isn’t an appetite for anyone to fund it. Funding constraints on both the Foundation and the ecosystem today are such that this work will only happen if explicitly sponsored by an organisation who is willing to commit to fund it.

So: if you are an organisation with users in the EU who would like them to interoperate with EU WhatsApp users via Matrix, and have the funds to sponsor development of building out an official production-grade Matrix<->WhatsApp bridge, please get in touch with me.

Alternatively, if the geographic constraints are a showstopper for you, please let us know.

We’re assuming that there may be smaller messaging providers, or domain-specific messaging services who want to connect their end-users through to WA end-users, and may be happy to be constrained to EU geography. However, bridge developers need evidence and financial support to progress this. Meanwhile, if you are interested in the strategic importance of the Digital Markets Act, this is an opportunity to put your money where your mouth is.

Looking forward to hearing feedback!

thanks,

Matthew

❌