Normal view

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

The Matrix Holiday Special 2024

25 December 2024 at 07:00

Hi all,

Once again we celebrate the end of another year with the traditional Matrix Holiday Special! (see also 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016 and 2015 just in case you missed them).

This year, it is an incredible relief to be able to sit down and write an update which is overwhelmingly positive - in stark contrast to the rather mixed bags of 2022 and 2023. This is not to say that things are perfect: most notably, The Matrix.org Foundation has not yet hit its funding goals, and urgently needs more organisations who depend on Matrix to join as members in order to be financially sustainable. However, in terms of progress of Matrix towards outperforming the centralised alternatives; growth of the ecosystem; the success of the first ever Matrix Conference; we couldn’t be happier - and hopefully the more Matrix matures, the more folks will want to join the Foundation to help fund it.

So, precisely why are we feeling so happy right now?

🔗Matrix 2.0

Matrix 2.0 is the project to ensure that Matrix can be used to build apps which outcompete the incumbent legacy mainstream communication apps. Since announcing the project at FOSDEM 2023, we’ve been hard at work iterating on:

  • Sliding Sync, providing instant sync, instant login and instant launch.
  • Next Generation Auth via OIDC, to support instant login by QR code and consistent secure auth no matter the client.
  • Native Multiparty VoIP via MatrixRTC, to provide consistent end-to-end-encrypted calling conferencing within Matrix using Matrix’s encryption and security model.
  • Invisible Cryptography, to ensure that encryption in Matrix is seamless and no longer confuses users with unable-to-decrypt errors, scary shields and warnings, or other avoidable UX fails.

All of these projects are big, and we’ve been taking the time to iterate and get things right rather than cut corners – the whole name of the game has been to take Matrix from 1.0 (it works) to 2.0 (it works fast and delightfully, and outperforms the others). However, in September at the Matrix Conference we got to the point of shipping working implementations of all of the Matrix 2.0 MSCs, with the expectation of using these implementations to prove the viability of the MSCs and so propose them for merging into the spec proper.

Sliding Sync ended up evolving into MSC4186: Simplified Sliding Sync, and is now natively integrated into Synapse (no more need to run a sliding sync proxy!) and deployed on matrix.org, and implemented in matrix-rust-sdk and matrix-js-sdk. MatrixRTC is MSC4143 and dependents and is also deployed on matrix.org and call.element.io. Invisible Cryptography is a mix of MSCs: MSC4161 (Crypto terminology for non-technical users), MSC4153 (Exclude non-cross-signed devices), MSC3834 (Opportunistic user key pinning (TOFU)), and is mostly now implemented in matrix-rust-sdk - and Unable To Decrypt problems have been radically reduced (see Kegan’s excellent Matrix Conference talk for details). Finally, Next Gen Auth is MSC3861 and is planned to be deployed on matrix.org via matrix-authentication-service in Feb 2025.

It’s been controversial to ship Matrix 2.0 implementations prior to the MSCs being fully finalised and merged, but given the MSCs are backwards compatible with Matrix 1.0, and there’s unquestionable benefit to the ecosystem in getting these step-changes in the hands of users ASAP, we believe the aggressive roll-out is justified. Meanwhile, now the implementations are out and post-launch teething issues have largely been resolved, the MSCs will progress forwards.

One of the things we somehow failed to provide when announcing the implementations at the Matrix Conference was a playground for folks to experiment with Matrix 2.0 themselves. There’s now one based on Element’s stack of Synapse + matrix-authentication-service + Element Web + Element Call available at element-docker-demo in case you want to do a quick docker compose up to see what all the fuss is about! Meanwhile, matrix.org should support all the new MSCs in February – which might even coincide with the MSCs being finalised, you never know!

Rather than going through Matrix 2.0 in detail again, best bet is to check out the launch talk from The Matrix Conference…

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

…and in terms of seeing a Matrix 2.0 client in action, the Element X launch talk shows what you can do with it!

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

Honestly, it is insanely exciting to see Matrix having evolved from the “good enough for enthusiastic geeks” to the “wow, this feels better than Signal” phase that we’re entering now. Meanwhile, matrix-rust-sdk is tracking all the latest Matrix 2.0 work, so any client built on matrix-rust-sdk (Fractal, Element X, iamb, etc) can benefit from it immediately. There’s also some really exciting matrix-rust-sdk improvements on the near horizon in the form of the long-awaited persistent event cache, which will accelerate all event operations enormously by avoiding needless server requests, as well as providing full offline support.

🔗The Matrix Conference

Talking of The Matrix Conference - this was by far the highlight of the year; not just due to being an excellent excuse to get Matrix 2.0 implementations launched, but because it really showed the breadth and maturity of the wider Matrix ecosystem.

One of the most interesting dynamics was that by far the busiest track was the Public Sector talk track (sponsored by Element) – standing room only, with folks queuing outside or watching the livefeed, whether this was Gematik talking about Matrix powering communications for the German healthcare industry, SwissPost showing off their nationwide Matrix deployment for Switzerland, DINUM showing off Tchap for France, NATO explaining NI²CE (their Matrix messenger), Försäkringskassan showing off Matrix for Sweden with SAFOS, Tele2 showcasing Tele2 Samarbete (Matrix based collaboration from one of Sweden’s main telcos), FITKO explaining how to do Government-to-Citizen communication with Matrix in Germany, ZenDiS using Matrix for secure communication in the German sovereign workspace openDesk project, or IBM showing off their Matrix healthcare deployments.

This felt really surprising: not only are we in an era where Matrix appears to be completely dominating secure communication and collaboration in the public sector – but it’s not just GovTech folks interested, but the wider Matrix community too.

I think it’s fair to say that when we created Matrix, we didn’t entirely anticipate this super-strong interest from government deployments – although in retrospect it makes perfect sense, given that more than anyone, nations wish to control their own infrastructure and run it securely without being operationally dependent on centralised solutions run out of other countries. A particular eye-opener recently has been seeing US Senators Ron Wyden (D) and Eric Schmitt (R) campaigning for the US Government to deploy Matrix in a way similar to France, Germany, Sweden and others. If this comes to pass, then it will surely create a whole new level of Matrix momentum!

It’s worth noting that while many Matrix vendors like Element, Nordeck, Famedly, connect2x and others have ended up mainly focusing commercially on public sector business (given that’s empirically where the money is right now) – the goal for Matrix itself continues to be mainstream uptake.

Matrix’s goal has always been to be the missing communication layer of the web for everyone, providing a worthy modern open replacement to both centralised messaging silos as well as outdated communication networks like email and the PSTN. It would be a sore failure of Matrix’s potential if it “only” ended up being successful for public sector communication! As it happens, our FOSDEM 2025 mainstage talk was just accepted, and happens to be named “The Road To Mainstream Matrix.” So watch this space to find out in February how all the Matrix 2.0 work might support mainstream Matrix uptake in the long-run, and how we plan to ensure Matrix expands beyond GovTech!

🔗The Governing Board

Another transformative aspect of 2024 was the formation of The Matrix.org Foundation Governing Board. Over to Josh with the details…

The election of our first ever Governing Board this year has gone a long way to ensuring we can truly call Matrix a public good, as something that is not only shared under an open source license and developed in the open, but also openly governed by elected representatives from across the ecosystem.

It took forming the Spec Core Team and the Foundation, both critical milestones on a journey of openness and independence, to pave the way. And with the Governing Board, we have a greater diversity of perspectives and backgrounds looking after Matrix than ever before!

The Governing Board is in the process of establishing its norms and processes and just last week published the first Governing Board report. Soon it’ll have elected committee chairs and vice chairs, and it appears to be on track to introduce our first working groups – official bodies to work together on initiatives in support of Matrix – at FOSDEM. Working groups will be another massive step forward, as they enable us to harmonize work across the ecosystem, such as on Trust & Safety and community events.

One last note on this, I want to shout out Greg Sutcliffe and Kim Brose, our first duly elected Chair and Vice Chair of the Governing Board, who have been doing great work to keep things in motion.

🔗Growing Membership

A key part of building the Governing Board has been recruiting to our membership program, which brings together organizations, communities, and individuals who are invested in Matrix. Our members illustrate the breadth of the ecosystem, and many of them are funders who help sustain our mission.

The Foundation has gone from being completely subsidized by Element in 2022, to having nearly half of its annual budget covered by its 11 funding members.

Of course, only being able to sustain half our annual budget is not nearly good enough, and it means that we live hand-to-mouth, extending our financial runway a bit at a time. It’s a nail biter of a ride for the hardworking staff who labor under this uncertainty, but we savor every win and all the progress we’ve made.

I’d like to take this opportunity to thank our funding members, including Element, our Gold Members, Automattic and Futurewei Technologies, our Silver Members, ERCOM, Fairkom, Famedly, Fractal Networks, Gematik, IndieHosters, Verji Tech, and XWiki.

We look forward to welcoming two new funding members in the coming weeks!

Our community-side members also play an important role, and we’re grateful for their work and participation. This includes our Associate Members, Eclipse Foundation, GNOME Foundation, and KDE, and our Ecosystem Members: Cinny, Community Moderation Effort, Conduit, Draupnir, Elm SDK, FluffyChat, Fractal, Matrix Community Events, NeoChat, Nheko-Reborn, Polychat, Rory&::LibMatrix, Thunderbird, and Trixnity.

If you’d like to see Matrix continue its momentum and the Foundation to further its work in ensuring Matrix is an independently and collectively governed protocol, please join the Foundation today. We need your help!

Back to you, Matthew!

🔗Focus

In 2023, we went through the nightmarishly painful process of ruthlessly focusing the core team exclusively on stabilising and polishing the foundations of Matrix – shelving all our next-generation showcases and projects and instead focusing purely on refining and evolving today’s Matrix core use cases for chat and VoIP.

In 2024, I’m proud to say that we’ve kept that focus – and indeed improved on it (for instance, we’ve stepped back on DMA work for much of the year in order to focus instead on the Trust & Safety work which has gone into Matrix 1.11, 1.12, and 1.13). As a result, despite a smaller team, we’ve made huge progress with Matrix 2.0, and the results speak for themselves. Anecdotally, I now wince whenever I have to use another messaging system – not because of loyalty to Matrix, but because the experience is going to be worse: WhatsApp has more "Waiting for message, this may take a while" errors (aka Unable To Decrypts or UTDs) than Matrix does, takes longer to launch and sync and has no threads; iMessage’s multidevice support can literally take hours to sync up; Signal just feels clunky and my message history is fragmented all over the place. It feels so good to be in that place, at last.

Meanwhile, it seems that Element’s move to switch development of Synapse and other projects to AGPL may have been for the best – it’s helped concretely address the issue of lack of commercial support from downstream projects, and Element is now in a much better position to continue funding Synapse and other core Matrix work. It’s also reassuring to see that 3rd party contributions to Synapse are as active as ever, and all the post-AGPL work on Synapse such as native sliding sync shows Element’s commitment to improving Synapse. Finally, while Dendrite dev is currently slow, the project is not abandoned, and critical fixes should keep coming – and if/when funding is available P2P Matrix & Dendrite work should resume as before. It wouldn’t be the first time Dendrite has come back from stasis!

🔗The Future

Beyond locking down Matrix 2.0 in the spec and getting folks using it, there are two big new projects on the horizon: MLS and State Res v3.

MLS is Messaging Layer Security (RFC 9420), the IETF standard for group end-to-end-encryption, and we’ve been experimenting with it for years now, starting around 2019, to evaluate it for use in Matrix alongside or instead of our current Double Ratchet implementation (Olm/Megolm). The complication on MLS is that it requires a logically centralised function to coordinate changes to the membership of the MLS group – whereas Matrix is of course fully decentralised; there’s never a central coordination point for a given conversation. As a result, we’ve been through several iterations of how to decentralise MLS to make it play nice with Matrix – essentially letting each server maintain its own MLS group, and then defining merge operations to merge those groups together. You can see the historical work over at https://arewemlsyet.com.

However, the resulting dialect of MLS (DMLS) has quite different properties to vanilla RFC 9420 MLS – for instance, you have to keep around some historical key data in case it’s needed to recover from a network partition, which undermines forward secrecy to some extent. Also, by design, Matrix network partitions can last forever, which means that the existing formal verification work that has been done around MLS’s encryption may not apply, and would need to be redone for DMLS.

Meanwhile, we’ve been participating in MIMI (More Instant Messaging Interoperability), an IETF working group focused on building a new messaging protocol to pair with MLS’s encryption. A hard requirement for MIMI is to utilise MLS for E2EE, and we went through quite a journey to see if Matrix could be used for MIMI, and understand how Matrix could be used with pure MLS (e.g. by having a centralised Matrix dialect like Linearized Matrix). Right now, MIMI is heading off in its own direction, but we’re keeping an eye on it and haven’t given up on converging somehow with it in future. And if nothing else, the exercise taught us a lot about marrying up Matrix and MLS!

Over the last few months there has been more and more interest in using MLS in Matrix, and at The Matrix Conference we gave an update on the latest MLS thinking, following a workshop at the conference with Franziskus from Cryspen (local MLS formal-verification experts in Berlin). Specifically, the idea is that it might be possible to come up with a dialect of Matrix which used pure RFC 9420 MLS rather than DMLS, potentially using normal Matrix rather than Linearized Matrix… albeit with MLS group changes mediated by a single ‘hub’ server in the conversation. The good news is that Cryspen proposed a mechanism where in the event of a network partition, both sides of the partition could elect a new hub and then merge the groups back together if the partition healed (handling history-sharing as an out-of-band problem, similar to the problem of sharing E2EE history when you join a new room in Matrix today). This would then significantly reduce the disadvantages of rooms having to have a centralised hub, given if the hub broke you could seamlessly continue the conversation on a new one.

So, we’ve now had a chance to sketch this out as MSC4244 - RFC 9420 MLS for Matrix, with two dependent MSCs (MSC4245 - Immutable encryption, and MSC4246 - Sending to-device messages as/to a server) and it’s looking rather exciting. This is essentially the protocol that Travis & I would have proposed to MIMI had the WG not dismissed decentralisation and dismissed Matrix interop - showing how it’s possible to use MLS for cryptographic group membership of the devices in a conversation, while still using Matrix for the user membership and access control around the room (complete with decentralisation). Best of all, it should also provide a solution to the longstanding problem of “Homeserver Control of Room Membership” highlighted by Albrecht & co from RHUL in 2022, by using MLS to prove that room membership changes are initiated by clients rather than malicious servers.

Now, we’re deliberately releasing this as a fairly early draft from the Spec Core Team in order to try to ensure that MLS spec work is done in the open, and to give everyone interested the opportunity to collaborate openly and avoid fragmentation. In the end, the SCT has to sign off on MSCs which are merged into Matrix, and we are responsible for ensuring Matrix has a coherent and secure architecture at the protocol layer – and for something as critical as encryption, the SCT’s role in coordinating the work is doubly important. So: if you’re interested in this space, we’d explicitly welcome collaboration and feedback on these MSCs in order to get the best possible outcome for Matrix – working together in the open, as per the Foundation’s values of ‘collaboration rather than competition’, and ‘transparency rather than stealth’.

Meanwhile, the other big new project on the horizon is State Resolution v3. Old-timers may remember that when we launched Matrix 1.0, one of the big changes was the arrival of State Resolution v2 (MSC1442), which fixed various nasty issues in the original merge conflict resolution algorithm Matrix uses to keep servers in sync with each other. Now, State Res v2 has subsequently served us relatively well (especially relative to State Res v1), but there have still been a few situations where rooms have state reset unexpectedly – and we’re currently in the process of chasing them down and proposing some refinements to the algorithm. There’s nothing to see yet, although part of the work here has been to dust off TARDIS, our trusty Time Agnostic Room DAG Inspection Service, to help visualise different scenarios and compare different resolution algorithms. So watch this space for some very pretty explanations once v3 lands!

🔗Happy New Year!

Matrix feels like it entered a whole new era in 2024 – with the Foundation properly spreading its wings, hosting The Matrix Conference, operationalising the Governing Board, and Matrix uptake exploding across the public sector of 20+ countries. Funding continues to be an existential risk, but as Matrix continues to accelerate we’re hopeful that more organisations who depend on Matrix will lean in to support the Foundation and ensure Matrix continues to prosper.

Meanwhile, 2025 is shaping up to be really exciting. It feels like we’ve come out of the darkness of the last few years with a 2.0 which is better than we could have possibly hoped, and I can’t wait to see where it goes from here!

Thanks to everyone for supporting the project - especially if you are a member of the Foundation (and if not, please join here!). We hope you have a fantastic end of the year; see you on the other side, and thanks for flying Matrix :)

This Week in Matrix 2024-12-20

By: Thib
21 December 2024 at 02:00

🔗Matrix Live

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

🔗Dept of Status of Matrix 🌡️

🔗Community Year In Review 2024

Nico announces

So, how was your year? NO! DON'T TELL ME NOW! But read on!

Some might remember the year in review for 2023 or 2022, well, this year is still 2024 and I decided to do another one!

If you don't remember, here is the gist of it: It is a room, where you can post about what you did, experienced or otherwise found interesting in 2024. You can also give some predictions for 2025, if you are so bold! Then, on the 31st, I will compose those into a blog post and you can read what others had to say! Now, the exact dates are a bit muddy, last time I was late and there is no guarantee I won't be late this time, but you have until the 30st to compose something you want to share.

There are no exact restrictions on what projects can participate or that what you share has to be a project, but we try to ring out the year with positive vibes from the community in general. Please also try to look at the overall year, if you just want to report on the week, well, there is something called "This Week in Matrix" for that!

Now, you probably are asking the important question, where is that room? Well, you can guess it from last years alias, but for everyone else:

Join #year-in-2024:neko.dev!

Have a good one, merry christmas and see you next year!

Part time reporter, Nico

PS: If you want examples, check out https://blog.neko.dev/posts/matrix-year-in-review-2022.html or https://blog.neko.dev/posts/matrix-year-in-review-2023.html

🔗New Gold Member

Josh Simmons (m.org) says

Today we are thrilled to announce that Automattic has joined the Foundation as a Gold Member! 🚀 Automattic is stepping up to continue the membership of Beeper, which they acquired earlier this year.

Automattic has invested a great deal into the open source ecosystem, including Matrix, and we’re grateful that now includes the Matrix.org Foundation. The Foundation stewards the protocol, facilitates open governance, operates the Matrix.org homeserver, and convenes the ecosystem at annual events like the Matrix Conference. None of this is possible without the generous support of organizations like Automattic.

We’re still fighting to make the Foundation sustainable. Does your organization build on Matrix? The time to become a funding member is now.

🔗First report from the Matrix Governing Board

HarHarLinks announces

It’s been 6 months since the first ever Matrix Governing Board was formally elected & announced, and it has had its first official meeting about one month ago. The Governing Board is an advisory board that is made up of elected representatives from all across the Matrix ecosystem - if you're unfamiliar, you can read more about what it is here. Since we represent all of you in the ecosystem, we strive to be as transparent as we can about what we have been doing, and today we are sharing our first report - just in time for the end of the year holidays. 😉

In it, you will find a both summary as well as the detailed minutes of the last meeting, and what the follow-up since then has been like, with an outlook of what our next steps are. Also included is the official report from the Spec Core Team. Very exciting to me personally is that we are working on setting up some initial Working Groups as well as a process for the community to propose more! But enough rambling from me, head right over to the blog to read it yourselves!

We look forward to sharing our next report soon. FOSDEM is coming up, many of us will be there and at the Matrix fringe event, and we look forward to meeting you if you can make it there! In the meantime, we have set up the brand new ✨️ #governing-board-office:matrix.org, ✨️ please join us for any questions about or to the Governing Board you may have!

See you soon!

🔗Dept of Spec 📜

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

  • No MSCs were accepted this week.

Closed MSCs:

🔗Spec Updates

This week, we released version 1.13 of the Matrix spec, the last spec release of 2024. Thanks to all who contributed to this release. You can find the details in the blog.

The spec core team is still working on solidifying the expectations that we have on how the team works. Hopefully this will be ready early in the new year.

🔗Dept of Servers 🏢

🔗Dendrite (website)

Second generation Matrix homeserver

neilalexander says

This week, Dendrite was updated to 0.14.0, the first release since the adopting the AGPL licence.

Notably this release includes fixes for a long-standing event auth bug which could cause unexpected state resolution issues and state resets in rooms and is a highly recommended upgrade for Dendrite users.

Support for fallback keys has also been added and the order in which one-time keys are claimed has been adjusted (as per MSC4225). Support for listening and connecting via Tor and I2P is also now available, as well as the via parameter for room join requests. Updates to gomatrixserverlib feature several performance improvements that will reduce memory allocations.

The move to the AGPL licence also aligns with a move to a new GitHub repository under the Element GitHub organisation. This also means that the Docker images are also available at a new location going forward.

What hasn't changed though is the community room at #dendrite:matrix.org, which continues to be the place to go for Dendrite-related discussion.

🔗Dept of Clients 📱

🔗Element X iOS (website)

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

Doug reports

Here we go, the final TWIM update for 2024 from the Element iOS team! We’ve rounded out our year by pushing the Release Candidate for v1.9.10 to TestFlight which enables the Media Browser for everyone to use. You can find it from the room details screen under “Media and files” so give it a go and let us know what you think. We’re all taking a break now so expect this release to land in the App Store on 6th Jan 2025 🎉

🔗Element X Android (website)

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

benoit reports

Last TWIM for EXA! The work on the gallery is nearly done, the feature will be enabled in the next release that we schedule to release in production next Year. Knocking is also getting the latest refinement. The team is having a break, see you in 2025!

🔗Tammy (website)

Multiplatform messengers build on top of Trixnity Messenger

Benedict announces

The next version of Tammy (based on the new version of Trixnity Messenger) has been released with some awesome changes!

The first highlight is the Flatpak build for Linux. This means that Tammy now officially runs on all common desktop platforms.

The timeline used to have some problems as one of the oldest components. For the user, this was noticeable through flickering elements or OutOfMemoryExceptions when scrolling a lot. It was previously very difficult for developers to add custom events to the timeline. Thanks to a fundamental rebuild, these problems are now a thing of the past. Not only is the timeline now virtually flicker-free (we will be tackling the last things soon), it now also allows infinite scrolling by removing old elements from the memory. All this makes scrolling through the timeline extremely fast (see video). Developers now also have the ability to add custom events with minimal effort. Both at SDK and UI level!

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

🔗Dept of Widgets 🧩

🔗Christian's Neoboard Advent Calendar

Christian Paul (jaller94) announces

It's almost Christmas which will mark the end of my advent calendar full of NeoBoard templates. I hope some will find joy in playing the games or use the backgrounds for presentations. It certainly made me happy, coming up with this many use cases for Matrix-powered whiteboards.

Here are some of the highlights:

All doors and templates are available in English and German.

Happy holidays, Matrix community!

🔗Dept of SDKs and Frameworks 🧰

🔗matrix-rust-sdk

poljar reports

This week marked significant strides in stabilizing the SDK as we approach the end of the year. One of the key highlights is the introduction of initial support for a persistent event cache. This feature ensures that events are stored long-term, allowing users to return to a fully populated timeline even after closing and reopening their application.

Additionally, we released version 0.9 of the Matrix Rust SDK, packed with updates and fixes to improve performance and reliability.

Here are some of the notable improvements from this week:

  • Replaced the optional RequestConfig argument in Client::send() with a new with_request_config() builder method for cleaner configuration handling.
  • Fixed an error that occurred when loading older serialized data from storage. This issue had caused apps to fail to start correctly due to problems with loading crypto information.
  • Introduced snapshot testing for certain serializable data, ensuring that format changes are detected during development.
  • We now differentiate between rooms a user has left and rooms they have been banned from.

We will see you next year for even more exciting improvements.

🔗Dept of Services 🚀

🔗Synapse Admin

Aine [don't DM] announces

A while back, we at etke.cc announced our Synapse-Admin fork. This week, we’re excited to introduce more new features and bugfixes improvements!

"Purge Remote Media" button

Previously there was button to purge local media only, but now you can cleanup remote cache as well!

(for etke.cc customers only) Server Notifications indicator and page

You won't miss any important information with the new notification system - it extends the one we already have with email and Matrix notifications, adding yet-another option to see the details, now directly in Synapse Admin!

Use the protocol (http://,https://) from homeserver URL for /.well-known/matrix/client lookups

Previously the https:// was hardcoded, but apparently there are Matrix servers with internal-only access that use http:// protocol, and for such cases the https:// lookups caused delays in rendering and subpar user experience.

With this release the issue is no more!

Correctly handle MXIDs with not just-domain homeservers

Previously Synapse Admin was unaware about domain:port or even IPv6-only homeservers (@user:example.com:1234 or @user:2001:0db8:85a3:0000:0000:8a2e:0370:7334), oops! Now it treats such cases properly, without producing odd duplicated here and there

The last release in 2024!

The v0.10.3-etke35 is the 35th release of our Synapse Admin fork, and the last (planned) one in 2024! We wish you happy holidays and want to take some break. But don't you worry, slaps the roof of Synapse Admin - that bad boy can still fit even more features in it! So, stay tuned, 2025 will bring even more interesting things

Explore the source code or try the admin.etke.cc (CDN version). Don’t forget to join the discussion in #synapse-admin:etke.cc

🔗Dept of Bots 🤖

🔗Draupnir (website)

A moderation bot for open Matrix communities

Gnuxie 💜🐝 announces

Draupnir, a moderation bot for open matrix communities, has released v2.0.0-beta.9. This release includes a rework of protection settings, starting with a tutorial that explains how to display and change any configurable settings that a protection might offer https://the-draupnir-project.github.io/draupnir-documentation/protections/configuring-protections. We'll make some minor improvements to this over the next couple of weeks but our focus is now on squashing the remaining issues blocking the 2.0.0 release. Which we expect to happen one way or another very soon, whether we squash them all by then or not. I have also written a tiny update for the devlog. That's all, see you in #draupnir:matrix.org.

🔗Dept of Events and Talks 🗣️

🔗Matrix Salon Podcast: Florian Jacob (German episode)

Christian Paul (jaller94) says

Meet Florian Jacob, a researcher studying the (de)centralization of the Matrix server network.

But this isn't all for this year! Next week, a German episode with Fabian who's working on Alertrix 🚒 will mark episode 20 of the podcast. Like, comment, and subscribe~ or whatever you say for RSS feeds. 🙃

🔗Dept of Interesting Projects 🛰️

Matthew says

I added prettier experimental auth chain visualisation to TARDIS, as the quest for the platonic ideal of a Matrix DAG visualisation service continues... https://github.com/matrix-org/tardis/pull/45

🔗Matrix Federation Stats

Aine [don't DM] says

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

As of today, 10356 Matrix federateable servers have been discovered by matrixrooms.info, 3115 (30.1%) of them are publishing their rooms directory over federation. The published directories contain 20814 rooms.

This is the last federation report in 2024!

We wish you happy holidays and want to take some break, so the Matrix Federation Stats will return in 2025 🎄

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
1awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay189
2codestorm.net209
3puppygock.gay212
4constellatory.net222
5bi-vibes.com234
6girlboss.ceo264
7envs.net294.5
8rory.gay317
9mtest.eyer.life373
10vengeful.eu405

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

First report from the Matrix Governing Board

Hi all,

It’s been 6 months since the first ever Matrix Governing Board (GB) was formally elected & announced, and it has recently had its first official meeting. As such, we felt it was time that you, our constituents, had a report on how things are going and what we’ve been doing. We appreciate that the work of the GB is often in the background, and we want to be as transparent as we can.

🔗What’s been happening?

Since our election in June, the GB has mainly been focussed on internal structure. We began with the most basic part of this - getting to know each other! We have quite a large group, and we all needed time to understand what each of us would like to achieve, and to assist with. We also needed to get to know the Foundation better, and time spent with Josh has been extremely valuable too.

The other, even bigger, topic to tackle has been structure. We are a new board, and as such we need to lay down the processes and hierarchy that will govern our work in the near-to-medium future. There is ample inspiration around us in the many other communities we are part of, but we do have to write down our versions of these.

🔗What about the recent Governing Board meeting?

The GB had its first official meeting on Nov 15th, and the topic of structure took up all of our time - this is key since that structure is blocking the work we want to do in various topic areas (which we’re calling Committees). There are detailed minutes available here but here is a high level summary - you’ll note that these all relate to the structure and norms of the GB:

  • We elected our first Chair and ViceChair - Greg Sutcliffe (gwmngilfen) and Kim Brose (HarHarLinks) respectively
  • We discussed some of the core elements of the GB - voting processes, quorum, timescales, etc
  • We discussed the organisation layout, Committees, and Working Groups - more detail on that below
  • We talked a lot about norms as well - how we expect members of the GB to behave.

The last point is actually really important - while it sounds quite simple, it’s critical for setting expectations for us and also helps set overall policy when an explicit rule or process doesn’t exist. The culture that we set out with this first board will likely set the tone for the future, and we should get it right.

🔗Committees and Working Groups

Probably the decision with the biggest impact (thought we agreed it fairly quickly) was around the hierarchy of the GB, so let’s expand on that a bit.

As we reported in TWIM at the time, we have convened 4 initial Committees (Governance, Trust & Safety, Community, and Finance & Fundraising), and these are board-level subgroups with a focus on that specific area. Each Committee will have one or more Working Groups (WG) that focus on something related to that topic, and WGs must have a board member involved - but can (and probably should) involve more people from the community who wish to be involved in that effort.

Drawing on my own background in operating systems, this is somewhere between the CentOS model (which just has Special Interest Groups under the CentOS Board) and Fedora (which has a detailed & complex org chart). As an example, we’ll (probably) have a Website WG under the Community Committee.

Each Committee and WG will need a charter - this can be pretty short, but sets out the remit of that group. Committees will also need a Chair (and probably a Vice Chair, just in case) so that we can ensure things keep ticking along. Those positions are open for voting within the GB at the moment!

For the community, you can expect regular reports from the committees once they’ve formed, and we’ll bring those to you as we can - how we do reporting with transparency is also a topic we're discussing. You can also expect a process for people to propose new Working Groups - that is also under discussion!

🔗Reports?

Yes! So, as said above, the Committees will have an obligation to report on their activity. Since most have only existed for 3 weeks so far, there’s not yet much to say, but I hope that in the next few weeks we’ll be able to announce the Committees are up-and-running, and that we have a proposal system for new WGs.

We also have a report from the Spec Core Team which they’ve asked us to share with you - you can read that SCT report here.

🔗What’s next?

Right now, elections are in progress for the people who will run the Committees, and we want to finalise the norms and processes - these have had significant discussion already, and once we’ve tidied up the last points we can vote them in. Then comes the serious work of setting up WGs, and all that entails.

We know that this seems a very slow process, especially in today’s world of fast moving technology - but the work of discussion, negotiation, and consensus can’t be rushed. It’ll be worth it.

If you want to chat with us, we are always happy to chat! You can find us in the Office of the Governing Board room, but many of the GB will also be present at FOSDEM as well as being at the Friday Matrix event - please talk to us, bring us your thoughts, tell us your worries. We’ll do what we can to help.

Until next time!

Greg (on behalf of the Governing Board)

Matrix v1.13 release

20 December 2024 at 02:53

Hey all,

Another 9 MSCs have been released today in Matrix 1.13! It’s just over 2 months since Matrix 1.12 went out, and the last scheduled release for 2024 - the next release is planned for around FOSDEM 2025. Today’s release contains more T&S features and a number of clarifications and improvements. The full changelog is at the end of this post, per usual :)

🔗Account suspension

Last release brought Account Locking to the spec, and this release brings Account Suspension - a highly related but semantically different feature. Locking prevents the user from accessing their account, typically as a consequence of security reasons or restrictions, while suspension aims to disrupt while retaining a (mostly) readonly experience for the user. Both actions are reversible, and available to safety and security teams to help manage their servers with alternatives to deactivation (a destructive, irreversible, action).

Clients should continue calling /sync to detect when a lock/suspension is lifted (or converted to deactivation). MSC3939 and MSC3823 both have suggestions on what a UI could look like for the different states.

🔗Reporting rooms

Event reporting has been in the spec since the very early days of Matrix, allowing users to send concerns about particular content to their homeserver administrators for review. A notable gap in this functionality is being able to report whole rooms from the public room directory or out of band in general - this has been addressed in Matrix 1.13 with the new report room endpoint.

The T&S team continues to work on designing a possible replacement to reporting in general, considering functionality like appeals, report-to-moderators, classification, and other quality of life improvements.

🔗Up next in Matrix 1.14 and 2025

Mentioned earlier in this post, Matrix 1.14 is expected to be released around FOSDEM 2025 in early February. Many of the Matrix 2.0 features, like OIDC and Simplified Sliding Sync, are getting ever-closer to the needed proposed-FCP state to become part of the spec. We currently expect that the Matrix 2.0 features will land in either Matrix 1.14 or Matrix 1.15, converting the applicable release to Matrix 2.0 as a specification version. This is highly dependent on the MSCs progressing through FCP though, and may get pushed out as needed.

As always, if there’s an MSC ready for FCP, let us know in the SCT Office room! We’re currently on an administrative break until January 8th, 2025, but we’re still around and prioritizing features as we see them.

🔗The full changelog

The full changelog for Matrix 1.13 is:

🔗Client-Server API

New Endpoints

Backwards Compatible Changes

  • Add error codes to requestToken endpoints, as per MSC4178. (#1944)
  • Remove reply fallbacks, as per MSC2781. (#1994)
  • Clarify the allowed HTTP methods in CORS responses, as per MSC4138. (#1995, #2011)
  • Add new M_USER_SUSPENDED error code behaviour, as per MSC3823. (#2014)

Spec Clarifications

  • The reason parameter in POST /_matrix/client/v3/rooms/{roomId}/report/{eventId} can be omitted instead of left blank, as per MSC2414. (#1938)
  • Correct OpenAPI specification for query parameters to GET /_matrix/client/v3/thirdparty/location/{protocol} endpoint. (#1947)
  • Sort VoIP events semantically. (#1967)
  • Clarify that servers must forward custom keys in PusherData when sending notifications to the push gateway. (#1973)
  • Clarify formats of string types. (#1978, #1979, #1980)
  • Clarify that the async upload endpoint will return 404 in some cases. (#1983)
  • Remove distinction between StateFilter and RoomEventFilter. (#2015)
  • Add hyperlinks throughout the specification. (#2016)
  • Use json instead of json5 for syntax highlighting. (#2017)
  • Specify order that one-time keys are issued by /keys/claim, as per MSC4225. (#2029)

🔗Server-Server API

Backwards Compatible Changes

Spec Clarifications

  • Add 403 error response to /_matrix/federation/v1/state_ids/{roomId}. (#1926)

🔗Application Service API

Backwards Compatible Changes

  • Allow sending ephemeral data to application services, as per MSC2409. (#2018)

🔗Identity Service API

No significant changes.

🔗Push Gateway API

Spec Clarifications

  • Document the schema of PusherData. (#1968)
  • The path of HTTP pusher URLs is fixed to /_matrix/push/v1/notify. (#1974)

🔗Room Versions

Spec Clarifications

  • Clarify rule 4.3.1 of the auth rules in room version 11 to state which event's sender the state_key needs to match. (#2024)

🔗Appendices

Spec Clarifications

  • Remove note about reference implementations. (#1966)

🔗Internal Changes/Tooling

Spec Clarifications

  • Add x-weight property for sorting events rendered with the event-group shortcode. (#1967)
  • Enforce consistent vertical spacing between paragraphs in endpoint definitions. (#1969, #2005)
  • Remove boxes/added-in-paragraph shortcode. (#1970)
  • Remove withVersioning parameter of rver-fragment shortcode. (#1971)
  • Remove span element from added-in and changed-in shortcodes. (#1972)
  • Fix formatting of added-in and changed-in shortcodes by using % delimiter. (#1975)
  • Remove CSS workaround for scroll-anchoring. (#1976)
  • Rename custom-formats.yaml to string-formats.yaml and update its docs. (#1977)
  • Fix relative URLs when serving the specification with a custom baseURL. (#1984, #1997)
  • Rename .htmltest.yaml to .htmltest.yml. (#1985)
  • Improve the JS script to highlight the current ToC entry. (#1991, #2002)
  • Upgrade docsy to 0.11.0 and hugo to 0.139.0. (#1996, #2007)
  • Improve the quality of the rendered diagrams (#1999)
  • Update the Inter font and allow the browser to render the page before it is loaded (#2000)
  • Use a proper Matrix favicon (#2001)
  • Clean up unused CSS classes in openapi/render-operation partial. (#2003)
  • Fix changed-in partial when used with multiple paragraphs. (#2006)
  • Optimize generated CSS by removing unused selectors. (#2008)
  • Remove trailing slash on void HTML elements. (#2009)
  • Remove type and language attributes of script element. (#2021)
  • Change the accessible role of info boxes to note. (#2022)

This Week in Matrix 2024-12-13

13 December 2024 at 07:00

🔗Matrix Live

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

🔗Dept of Status of Matrix 🌡️

Matthew reports

Last week US Senators Wyden (D) and Schmitt (R) wrote an open letter to the US Department of Defense encouraging them to adopt Matrix more widely, rather than wasting money on unencrypted, centralised or closed systems. The letter also reveals a whole bunch of info at the end about the US Navy's Matrix deployments. This feels like a huge step change forwards - not only is the FBI encouraging citizens to use end-to-end-encryption in the wake of realisations that the public telephone network is insecure, but US Senate is pushing for Matrix adoption (without any lobbying from us, I hasten to add). You can read more about it at the Element blog (Element provides the deployments for the US Navy).

P.S. it really is bleakly amusing that we've been constantly pointing out that legislation like EU's ChatControl and the UK's Online Safety Act are catastrophically flawed because the surveillance backdoors they propose will be exploited and abused by attackers. And here we are, with the lawful intercept backdoors in the US public phone system being compromised by attackers, causing the FBI to recommend non-backdoored E2EE instead. We live in a very strange timeline.

🔗Dept of Spec 📜

Andrew Morgan (anoa) {he/him} reports

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/proposals.

🔗MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

🔗Random MSC of the Week

The random MSC of the week is... MSC3006: Bot Interactions!

We haven't had one of these in a while, so I figured, why not!

This MSC talks about "bot interactions", which are additional ways that users can interact with bots other than text - namely client-rendered buttons. Ironically, the rise of LLMs in the years since this MSC was published have brought human-computer text interaction to the forefront, but buttons still have their place!

A bot can define their interactions as a state event and send it into the room. Then clients that see that state event can populate user menus with the actions that bots support! Clicking on a button will send a message into the room that a bot would parse as per usual (so really this is just a shortcut to typing commands out manually). The benefit is users don't need to remember commands (and don't need to !help all the time - cough cough mjolnir), and can quickly issue a potentially lengthy command without typing.

This seems like a cool feature to me. If any bot or client devs feel the same, consider reaching out on the MSC and offering your feedback!

🔗Dept of Servers 🏢

🔗Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Till reports

This week we released Synapse 1.121.0 (and 1.121.1).

1.121.1 is just a patch release to fix an issue building release docker images in our CI. As such, there is only a docker image for 1.121.1, not 1.121.0. 1.121.1 is otherwise functionally identical to 1.121.0.

1.121.0 introduces experimental support for a number of MSCs (MSC4190: Device management for application services, MSC4076: Let E2EE clients calculate app badge counts themselves (disable_badge_count)), as well as stabilises support for locking accounts. It also has bug fixes and limited initial support for returning information about suspended users via the Admin API.

Grab it while it's hot! 🔥

🔗Dept of Clients 📱

🔗Extera

OfficialDakari reports

Recently, Extera got saved messages feature. To save a message, open it's menu and click Save. This feature can be changed at any time and is unstable. Also, now, users of extera.xyz can get an email on our domain. DM @mail:extera.xyz and say !m help.

🔗SchildiChat (website)

SchildiChat is a fork of Element for Android and Desktop, that used to focus on UI changes such as message bubbles and a unified chat list, but now also provides some additional tweaks and community-driven features that may not be on the roadmap for the upstream clients.

SpiritCroc says

While releases of SchildiChat Next (our fork of Element X for Android) have always been available on my own F-Droid repository, we finally made it into the main F-Droid repository too! These F-Droid releases are reproducible builds checked against my repo, so you know if it lands on the F-Droid repository that it matches what I built before. Compared to reproducible builds from Element X, F-Droid even builds our forks of the Matrix Rust SDK and the Rich Text Editor from source rather than using prebuilts to include as dependencies.

On the feature side, one of the main points that made me switch back to the old SchildiChat app was the ability to manage rooms in spaces. Accordingly, I added a long-press action to the room list that allows you to select a room's parent spaces to add to or remove from. At the time of writing this change is still only included in beta builds behind a feature flag, but will probably arrive in a release build in the next few days.

🔗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

  • We are doing great progress with message knocking and media gallery
  • We are also experimenting with the event cache, which will make the app even faster
  • Some design improvements are being made in the room details screen and the join room screen

🔗Element X Android (website)

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

benoit reports

  • Pretty similar to what's happening on Element X iOS:
  • We are doing progress with room knocking
  • We are making progress on the media gallery and are integrating an audio player to play voice message and message with audio attachment
  • We are also experimenting with the event cache, which will make the app even faster. There is still work to do SDK side to make it usable so it's behind a disabled feature flag for now.

🔗Dept of SDKs and Frameworks 🧰

🔗Trixnity (website)

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

Benedict says

The latest release of Trixnity introduces support for decrypted temporary files across all platforms! 🎉 This feature is crucial for handling media like video playback and PDF rendering that require secure but temporary access to decrypted content. Trixnity ensures to providing seamless and secure handling of such files, while maintaining compatibility with the old API.

For more information about this update, or to check out Trixnity, visit the project repository: https://gitlab.com/trixnity/trixnity.

We welcome feedback and discussions in the #trixnity:imbitbu.de room.

🔗Dept of Services 🚀

🔗Synapse Admin Updates

Aine [don't DM] says

A while back, we at etke.cc announced our Synapse-Admin fork. This week, we’re excited to introduce more new features and quality-of-life improvements!

Media Tab for Rooms

Previously, media management was limited to individual users (i.e., media uploaded by a specific user). Now, you can manage media at the room level!

⚠️ While the new media tab offers options to view and remove media per room, it’s worth noting that the Admin API endpoint for room media is more limited compared to the user media endpoint. Despite this, we hope this feature will assist with Matrix server moderation.

Account Suspension (MSC3823)

Account suspension is here! This feature enables you to place users in a "read-only account" state as an alternative to locking accounts.

💡 Note: Not all Admin API endpoints fully support the suspension flag yet, but support is expected to improve in future updates.

E.164-Based Matrix IDs (MSC4009)

Support for E.164-based Matrix IDs is finally here!

Matrix IDs in the format +123456:example.com (with a + sign) have been valid since Matrix v1.8. However, Synapse Admin previously lacked support for these IDs - oops! This has now been addressed.

🔗Spread the Word!

We at etke.cc are incredibly proud of what we’ve accomplished with our Synapse Admin fork. Over the last three months, we’ve released an impressive 34 versions, each packed with updates to make Synapse Admin the go-to admin dashboard for Synapse.

While we haven’t yet covered 100% of the API endpoints, and there’s still work to be done, the overall experience has improved dramatically.

If you’ve appreciated the progress we’ve made, we’d love your help in spreading the word about github.com/etkecc/synapse-admin! Share it with homeserver owners and administrators you know, and let them discover the features we’ve worked so hard to deliver.

Explore the source code or try the admin.etke.cc (CDN version). Don’t forget to join the discussion in #synapse-admin:etke.cc

Kim was flabbergasted by Aine's productivity and shared

🔗Dept of Bots 🤖

🔗I Don't Have Spotify Maubot

HarHarLinks says

Do people sometimes share links to music with you on Matrix? They do for me. Often, people use Spotify as their music streaming service, but I don't have Spotify.

Therefore about month ago, I shared a maubot plugin on TWIM, which uses the REST API of sjdonado's I don't have Spotify webapp, which itself is also selfhostable open source software.

As it turns out, people sometimes also share links to other streaming services not just with me but also with you!

So after a bit more tinkering, I have released v1.1.0 of my plugin https://github.com/HarHarLinks/maubot-idonthavespotify. It can now also be configured to check for any combination of spotify, apple, deezer, soundcloud, tidal, and youtube, which are all supported by idonthavespotify to different extent. Your mileage may vary depending on what you search, but that's up to the upstream project, since the plugin just connects whatever it does to matrix.

Let me know of any feedback you have at #maubot-idonthavespotify:matrix.org!

Here is what it can look like in action:

🔗Dept of Events and Talks 🗣️

🔗Matrix Stammtisch Dresden

@mcnesium:matrix.org announces

After being founded live during the recording of a recent "Reboot Politics" podcast show, the newly spawned regional community meetup "Matrix Stammtisch Dresden" will have their second get-together next Wednesday the 18th December at 19:00 in the bistro/restaurant "Neue Sachlichkeit" at Kraftwerk Mitte, Dresden, DE – all creatures welcome!

🔗FOSDEM

Thib (m.org) says

The Matrix.org Foundation & Community Devroom @ FOSDEM has a schedule!

The DevRoom will start at 13:00 and end at 17:00 CET, on Sunday, February 2. We received more talks than we could accept, compressed some longer talks into shorter ones to accept as many high quality talks as possible, but we had to make some tough choices!

We will hold a Fringe Event before FOSDEM and invite everyone who didn't make it to the schedule to give it another try there! We already have 2 generous sponsors to keep the community refreshed and fed, and we're open to more sponsorship opportunities. Reach out if you want to talk about how you can help us secure recordings for Fringe event speakers who opt-in, or more.

As for the devroom itself, the schedule is the following:

  • 13:00 Matrix State of the Union
  • 13:30 Getting the Rust SDK running on WebAssembly
  • 14:00 Demystifying Federation in Matrix
  • 14:30 State of Synapse
  • 15:00 Building the World's First Server-to-Server Matrix Federation Bridge
  • 15:30 How Ubuntu Entered the Matrix
  • 16:00 Robrix: a pure multi-platform Matrix Client and more
  • 16:30 MatrixRTC: Building Real-Time Applications on Matrix

🔗Matrix Salon Podcast: Tom Lant

Christian Paul (jaller94) says

Back in August, I had the honour of interviewing Tom about Matrix, Element, open source work and the community.

Here are links to the episode with Tom, RSS feed of the Matrix Salon Podcast and the Mastodon post about Tom's episode.

You may also look forward to two more German episodes which are planned to be released before the end of the year (aka. on the upcoming two Fridays). 🥁

🔗Dept of Interesting Projects 🛰️

Kegan reports

TARDIS has had a facelift! Matthew spent a weekend devising a custom layout algorithm and renderer which has now replaced d3-dag.

This is not only clearer for complex DAGs but also faster than the layout algorithm we previously used. We're currently using TARDIS to experiment with state resolution improvements.

🔗Christian's NeoBoard Advent Calendar

Christian Paul (jaller94) reports

More backgrounds, more games, more templates for your retrospectives. My NeoBoard Advent Calendar offers free whiteboard templates every day.

Check out some highlights from the past days:

Do you also wonder what will be behind tomorrow's door? 😏

NeoBoard is a whiteboard widget for Element, allowing you and your team to collaborate during meetings, presentations and group projects. You can export and import whiteboard files to reuse them as templates or migrate between rooms.

🔗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 says

We have been working on deep-linking support in Acter for a while now. As per our usual process, progrress on that happens iteratively over the weekly releases. In the last few releases, we have added support for matrix.to and matrix:-URI-schemes on Mobile as well as started experimenting with our own acter:-scheme to support linking to specific items like Pins and Task-Lists. The current release already featuers support for that via a new QR-code you can scan from within the app to directly jump to specific items. As part of that effort, you can also link calendar-events and pins in boosts and you can easily do that from the newly designed share-screen from the object itself. It's glorious.

On the other side, work on the Chat NG - the total rewrite of the chat UI infrastructure - is also progressing very well with support for bubbles and grouping of messages already in, and further message types being rendered properly now. It is still quite a bit from production ready but the improvement in architecture can already be felt very nicely in terms of UX speed and reactive-ness when you switch it on in your Labs.

Last but not least, we have started with "spring cleaning"-sessions where larger parts of the team get together and walk through the app and discuss minor bugs and annoyances in a synchronised sessions and then try to fix them there and then - so we can speed up the process on these - or write them up as proper bugs if we can't fix them yet. A first sessions of this kind was done recently and fixed a bunch of minor annoyances. As usual the Github release page's Changelog has all the details.

Additionally, we'd like to mention that we are looking for a DevOps Person helping us run our Matrix Infrastructure to extend the Acter Team. If that sounds interesting to you, please apply :) .

🔗Matrix Federation Stats

Aine [don't DM] reports

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

As of today, 10386 Matrix federateable servers have been discovered by matrixrooms.info, 3148 (30.3%) of them are publishing their rooms directory over federation. The published directories contain 20778 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
1codestorm.net242
2nerdhouse.io303.5
3wi11.co.uk307
4girlboss.ceo311.5
5envs.net407.5
6catvibers.me437
7ncat.cafe491
8larsl.net683
9melthecat.dev1161
10xiny.li1200

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

This Week in Matrix 2024-12-06

By: MTRNord
6 December 2024 at 07:00

🔗Matrix Live - Social Login with MAS

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

🔗Dept of Status of Matrix 🌡️

🔗Welcoming Ercom as a Silver Member

Josh Simmons (m.org) says

We'd like to welcome Ercom as the newest Silver Member of the Matrix.org Foundation and are excited to announce a couple other new members before the end of the year 🚀

The Matrix.org Foundation stewards the Matrix protocol specification, facilitates open governance, and convenes the ecosystem. While Matrix continues growing in adoption, the Foundation's funding is not keeping pace. If your organization builds on Matrix and is invested in its future, the time to become a funding member is now.

🔗Matrix.org protocol is not MATRIX

Josh Simmons (m.org) announces

From the department of no-the-other-Matrix: This week saw news of Europol shutting down an encrypted messaging service called MATRIX. All indications are that this has nothing to do with the Matrix protocol, and we are grateful to the agencies and publications that have made an effort to disambiguate. We are, of course, monitoring the situation as more information becomes available.

🔗Dept of Spec 📜

Andrew Morgan (anoa) {he/him} reports

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/proposals.

🔗MSC Status

New MSCs:

  • There were no new MSCs this week.

MSCs in Final Comment Period:

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

🔗Spec Updates

Following on from last week, the SCT continues to work towards the next spec release, expected in mid-December with Account Suspension, backwards compatibility for captions, and likely some further work towards Matrix 2.0 in the form of crypto MSCs.

Folks are encouraged to raise their MSCs for review in the SCT Office as soon as they feel it's ready for broad review. This helps ensure there are minimal process delays, and feedback can be incorporated into the feature design early. This is especially important for Matrix 2.0 MSCs, which the SCT hopes to be able to release in the new year.

🔗Dept of Servers 🏢

🔗Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Andrew Morgan (anoa) {he/him} says

Happy Friday! Synapse 1.120.2 was released this week. This releases includes fixes for several high-severity vulnerabilities. Please update as soon as possible if you have not already.

In addition, Synapse 1.121.0rc1 was released in the second half of this week. This release candidate includes new features - please test it on your non-production deployments and report bugs if you are able to! Note that this release candidate indeed includes the security fixes from 1.120.2.

New features in 1.121.0rc1 include experimental support for MSC4190: device management for Application Services and MSC4076: Add disable_badge_count to pusher configuration in addition to the stabilisation of the previously-experimental account locking feature, released in Matrix 1.12.

There's also lots of bug fixes included as well, so please do test if you can before 1.121.0's scheduled release next week.

🔗Dept of Clients 📱

🔗FluffyChat (website)

The cutest instant messenger in the [matrix].

Krille-chan says

🚀 FluffyChat v1.23.0 is here!

You can now send multiple files at once. The login page got a redesign with SSO as the new default action (legacy password login still available in the context menu at the top right corner).

MAS account settings now available in the profile, making FluffyChat ready for the Matrix OIDC change! 💪

Lot's of new colors and style settings with much better chat wallpapers also landed in this release. 🐾

Learn more at https://ko-fi.com/post/FluffyChat-Version-1-23-0-Whats-New-O4O416SLEK

🔗Element X iOS (website)

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

Mauro Romito announces

  • RC 1.9.9 has been sent for verification, the RC has been delayed to avoid some bugs to be shipped in production, that promptly fixed.
  • Knocking rooms has made great progress and is getting close to be completed
  • We are also working on adding more options in the room details, to allow changing alias, room visibility and other settings that are already available on Web but not on X
  • Media gallery of a room has also made great progress, and first simple implementation is going to reach Nightly very soon!
  • Share extension is back, and will be available on the coming app store release, alongside the option of adding captions to the media you are going to share!

🔗Element X Android (website)

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

ganfra reports

  • Version 0.7.5 has been released, including support to add/edit/remove captions, new notification actions and some various improvements.
  • We are still working on knocking rooms.
  • Media gallery is in development, and a first iteration should land soon.

🔗Tammy (website)

Multiplatform messengers build on top of Trixnity Messenger

Benedict announces

A new Tammy version has been released last week with a bunch of changes and fixes:

  • Show online-status when searching for users.
  • Ability to see who reacted to a message.
  • Added download button for file preview.
  • Support private Browser Tabs.
  • Added PDF reader in web.
  • Fixed crash when opening file picker on linux distribution.
  • Fixed thumbnails not being displayed sometimes because of size limit evaluations.
  • Fixed headings not readable in dark mode.
  • Fixes a crash when opening a file.
  • Fixed crash when notification sound is unavailable.

Currently we are working on a Linux Flatpak and Snap release. So stay tuned!

🔗Dept of Widgets 🧩

🔗NeoBoard Widget (website)

Kim Brose (Nordeck) announces

NeoBoard Widget v2.0.0 is a major version update due to some significant tooling changes. Still, it has several new user-facing features. We picked these highlights for you:

Custom font sizes for text shapes

The font size in text shapes can now be set to a specific size. We offer a list of recommended values but you can always use the auto sizing, which adjusts the font size to the dimensions of the shape.

Inserting or importing a PDF

We extended the "Import" and "Insert here..." feature to also support PDF files, alongside the native .nwb format. Doing this will render each PDF page as an image in a new slide.

A demo of importing a matrix flyer to NeoBoard

Monitoring the user's online state

We added a snackbar to the board that provides troubleshooting information when there are issues saving your data. For example, the widget monitors your network connection status to determine if you’re online, making it clear that content changes to the board or updates from collaborators cannot sync while you’re offline. It also looks out for rate-limiting scenarios and provide context-aware information when it is possible.

Updated tooling and build process

In this release, we migrated away from Facebook's Create React App (CRA) framework in favour of the new and actively maintained Vite framework. We also swapped out our testing framework from jest to the Vite-native Vitest. This is modernizing the build process and improving security, but requiring updates to build scripts, configurations, and imports due to the switch to ECMAScript modules (ESM).

Support for IPv4-only deployments

It is now possible to deploy the widget container on hosts without IPv6 support through a configuration option. This can be toggled easily through our Helm charts. Beyond that, the container image also gained the ability to also add your own files with custom config that will be added to the nginx server block config, should you need that. Read more about both in our documentation.

We also released updates to our NeoChoice and NeoDateFix widgets to match this feature.

...and more!

As usual, we try to improve existing features and fix bugs whenever we can. Check out the changelog for a more detailed report of what has changed.

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

PS: make sure you check out Christian's NeoBoard Advent Calendar in the Dept of Interesting Projects 🛰️!

🔗Dept of SDKs and Frameworks 🧰

🔗vodozemac-python (website)

A python binding to the implementation of Olm and Megolm in pure Rust.

OdoItal reports

Happy to announce that the pypi package vodozemac has gotten its first release in 2 years to 0.8.1, matching the latest (at the time of writing) published version of the official rust crate of the same name.

The published packages include binary distributions across many different platforms and architectures (everything supported by maturin), as well as a srcdist.

The previous version was published from the now-abandoned matrix-nio/vodozemac-bindings. In the light of the deprecation of libolm, it became clear that modernized python bindings to the supported matrix encryption library is an absolute must, and it's possible now!

The new repo itself is https://github.com/matrix-nio/vodozemac-python It's very much a WIP, with documentation and certain usability QoL items still left to implement, but it's expected to be usable as-is.

Not finalized yet, but I'm roughly planning to institute a versioning scheme that strictly follows that of the rust crate vodozemac, with a subversion to account for any changes that don't relate to the actual underlying library.

PRs are extremely welcome, especially for helping getting to replace pyolm with vodozemac in matrix-nio!

🔗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. This week, we're excited to share a roundup of new features and quality-of-life (QoL) improvements we've introduced!

Prefill Any Login Form Fields with GET Parameters

Previously, you could prefill the username and server fields in the login form using GET parameters for convenience. With this update, the password (for credentials-based auth) and accessToken (for access token-based auth) fields can also be prefilled.
⚠️ Due to security considerations, this feature is restricted to local environments only.

Documentation Index Added

We're slowly documenting all the enhancements we've made to Synapse Admin. To make navigation easier, we've introduced a structured index page that organizes the documentation by sections.

(exclusive to etke.cc customers) Server Status Page & App Bar Indicator

A new status page and app bar indicator are now available! Using our monitoring service, you can view your server's status via Matrix, email, or the web UI.

Unified List View: Show 50 Items by Default

Lists for all resources - users, rooms, media, reports, tokens, and more - now display 50 items by default. This change offers a more consistent experience across devices, especially on larger-than-phone screens. Previously, lists showed either just 10 items (leaving the page mostly empty) or an overwhelming 500 items.

Source code, admin.etke.cc (CDN version).
Don't forget to drop by #synapse-admin:etke.cc to share your feedback and say hi!

🔗Dept of Bots 🤖

🔗@unomed/react-native-matrix-sdk

Johannes says

We've recently released react-native-matrix-sdk which wraps the entire FFI bindings of matrix-rust-sdk in a React Native Turbo Module by way of uniffi-bindgen-react-native. We have successfully used this library to prototype a cross-platform app including room list and timeline but it is a fairly young project and will most definitely still have a few sharp edges.

If anyone would like to try this out in their own projects, we'd be happy to receive feedback and contributions via GitHub. We also hang out in https://matrix.to/#/#rn-matrix-rust-sdk:matrix.org and https://matrix.to/#/#uniffi-bindgen-js:matrix.org if you want to chat.

Thanks a ton to Unomed for sponsoring my work on this and to James Hugman and his sponsors, Mozilla and Filament, for creating and maintaining uniffi-bindgen-react-native. You can find further details about this project in Mozilla's announcement or the accompanying reddit post.

🔗Dept of Interesting Projects 🛰️

🔗Christian's NeoBoard Advent Calendar

Christian Paul (jaller94) says

Christmas is coming up and to shorten the wait, you can open a door of my bilingual advent calendar every day. It has templates and coding examples for NeoBoard whiteboards.

Check out some doors from the past days:

Do you also wonder what will be behind today's door? 😏

NeoBoard is a whiteboard widget for Element, allowing you and your team to collaborate during meetings, presentations and group projects. You can export and import whiteboard files to reuse them as templates or migrate between rooms.

The Neoboard Advent Calendar

The Neoboard Advent Calendar

🔗Using Mastodon RSS feeds in Matrix

cos announces as an amendment to last week's Matrix Live episode

Mastodon can also be accessed using rss feeds by attaching .rss to the end of a user's profile URL or hashtag URL.

For example:

https://mastodon.matrix.org/@matrix.rss
https://mastodon.matrix.org/tags/matrix.rss

🔗Matrix Federation Stats

Aine [don't DM] announces

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

As of today, 10444 Matrix federateable servers have been discovered by matrixrooms.info, 3169 (30.3%) of them are publishing their rooms directory over federation. The published directories contain 21309 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
1bi-vibes.com229
2envs.net234
3codestorm.net255.5
4foster.boutique258
5tomfos.tr275
6girlboss.ceo290
7constellatory.net295
8nerdhouse.io301
9beeper.com306.5
10bark.arf.wf343

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

An unrelated cybercriminal network named MATRIX was taken down

By: Thib
3 December 2024 at 07:00

The Matrix.org Foundation has been made aware that an international investigative operation took down a service called MATRIX which was used by a cybercriminal network, which has no relationship with the Matrix.org Foundation or the Matrix protocol itself.

The takedown site has a Matrix-the-movie branding, which is a probable source of confusion. The app showcased doesn’t look like any of the Matrix clients we’re aware of.

In a statement to the Matrix.org Foundation, Europol confirmed that the MATRIX cybercriminal network and the Matrix protocol are entirely unrelated. Europol states:

The Matrix protocol (matrix.org) is by no means connected to the Matrix secured communication service that was targeted in OTF Continental.

A statement from the Dutch police confirms that this is unrelated: "Matrix is ​​also the name of a company and communications protocol of the same name, which has nothing to do with the crypto communications service Matrix."

This Week in Matrix 2024-11-29

29 November 2024 at 07:00

🔗Matrix Live

Today's Matrix Live: https://youtube.com/watch?v=UNIUIpH-MCQ

🔗Dept of Status of Matrix 🌡️

Thib (m.org) says

Don't forget that Matrix will be in full force @ FOSDEM:

  • The CfP for the Matrix Devroom closes on Sunday, December 1
  • We already have quite a few volunteers to help us with the booth, but we're always looking for more hands! People who sign up before December 15 are entitled to a limited edition t-shirt :)
  • Two organizations have already shown their commitment to the community by offering to sponsor the Fringe Event right before FOSDEM. Pizzas and drinks will be covered, but if other organizations want to sponsor too we can work on more opportunities together!

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

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

🔗Spec Updates

The SCT has been spending a lot of its time doing the normal review function, ensuring spec PRs and MSCs get the review they need to move forward. This is largely expected to continue for the rest of the year, with a spec release planned for early/mid-December. Watch this space for updates there :)

The SCT is also taking an administrative break for the holiday season: reviews will continue, but updates in the SCT Office may be less frequent over the next month. Specifically, the Weekly Pings are on pause for next week (December 3rd, 2024) and December 15th, 2024 until January 8th, 2025. If you have something for the SCT to review or consider in future pings, let us know in the SCT Office - we'll pick it up as part of our normal work.

🔗Dept of Bridges 🌉

🔗mautrix-bluesky

tulir reports

Since Bluesky is cool now, I made a Bluesky DM bridge: https://github.com/mautrix/bluesky

🔗matrix-hookshot (website)

A multi purpose multi platform bridge, formerly known as matrix-github

Half-Shot reports

Hookshot 6.0.0!

Howdy folks! It's been a while since we announced a Hookshot release but there is finally a new one, and it's got a decent chunk of Interesting Things in it 👀.

Hookshot 6.0.0 ( / 6.0.1) is now out and breaks new ground:

  • 🔒️ Support for encrypted rooms is now considered stable 🥳.
  • 🕐️ You can now set an expiry time on incoming webhooks, so if you want a short lived webhook then you can easily configure that from either a bot command or widget. There are a bunch of config options for fine tweaking too. See the docs for more information.

You can read up on the details for encryption support here but we're broadly happy to say that it should work for most people. Hookshot includes some full integration tests to ensure that we do not break support for encryption in the future, so we're quite happy with how this has landed.

Finally, we're sunsetting support for Node 20 and bumping our supported versions to Node 22+. This is in line with our policy of only supporting the Active LTS.

As ever, please come chat to us in #hookshot:half-shot.uk if you encounter any issues.

🔗Dept of Clients 📱

🔗Element X iOS (website)

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

Doug reports

  • We’ve published releases of 1.9.6 and 1.9.7 on GitHub with 1.9.6 available on TestFlight but have decided to delay the App Store release due to a few hiccups around mxc URLs. We’ve fixed these today, so expect a new 1.9.8 release to land on TestFlight next week.
  • 1.9.8 includes the new Share Extension which supports sending an image, video, file, URL or plain text directly to a room/DM. We have also enabled local echoes for media uploads which we’ve been testing for the last couple of weeks and has made a huge difference in how fast the app feels.
  • The implementation for sending/editing/removing media captions was finished this week, which will also be available in 1.9.8.
  • Knocking on a room is implemented for the external user. We’re now focussing on showing these to the relevant room members to accept/reject.
  • Exploration has begun for showing all Media/Files within a room.
  • Bonus update for Element iOS: We’ve fixed a bug when resetting cross signing, it will be available in 1.11.21 scheduled to hit TestFlight on the 10th.

🔗Element X Android (website)

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

benoit announces

  • We are making progress on knocking rooms (AKA ask to join). The release is postponed for a few days until we fix some remaining bugs.
  • We are starting to work on the media viewer: we will have a gallery and it will be possible to swipe left and right to navigate between media items.
  • Captions are getting some new feature: new action to "Edit", "Copy" and "Delete" the caption Also they will be displayed in the media viewer.

🔗Dept of Non Chat Clients 🎛️

🔗Messageflag

forestix reports

Messageflag is an unread message indicator for Linux desktops, designed to be unobtrusive and relatively lightweight. I built it in response to the memory usage and disk writes generated by my Matrix and email clients even when I'm not actively using them. It displays an icon in my desktop panel when new messages are waiting, allowing me to see at a glance when I have new messages without having to keep those apps running all the time.

A few notable features:

  • Handles multiple accounts concurrently
  • Can play a sound when new messages arrive
  • Can use the Scroll Lock light like an indicator icon (X11 sessions only)
  • Supports Matrix and IMAP email accounts
  • Includes a verify-by-fingerprint tool for Matrix sessions/devices
  • Desktop agnostic
  • Relatively low memory usage
  • Minimal disk writes (good for low-power machines running on SD cards)
  • Few dependencies (all available in Debian-based Linux distros)

The project lives here: https://codeberg.org/forestix/messageflag

🔗Dept of SDKs and Frameworks 🧰

🔗libQuotient (website)

A Qt5 library to write cross-platform clients for Matrix

kitsune says

The first maintenance release in 0.9.x line - version 0.9.1 - is here. 0.9.0 came out somewhat rough, with a few bugs and regressions found early on, which this release fixes. Details (and the Git tag) are, as always, at https://github.com/quotient-im/libQuotient/releases/tag/0.9.1

🔗Dept of Services 🚀

🔗Synapse Admin

Aine [don't DM] announces

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 bugfixes!

User Badges

Previously we've introduced the concept of appservice-managed (or system-managed) users, plus Synapse had user types for a while now, so we decided it's time for... emojis! Basically, on user avatars, you may notice a small badge with an icon and tooltip that shows you what's this specific user's role is. 🧙‍ You (Admin) can see something like 🛡️ System-managed (Bot) or 👤 Regular User. Documentation

Room Avatars

Rooms have avatars, yes. Synapse Admin now aware about that 😁

Everything else

This release is big, and apart from new features described above, plenty of other changes were added as well:

  • Migrate config away from localStorage
  • Fix localization in tables' customization menu (Visual Customization / Inspector mode)
  • Fix German translation (thanks Sky !)
  • Add the missing "Generate password" button to the new user form
  • Fix password's helper text (correctly handle all 3 cases: system-managed user, update password, create a new password)
  • Add missing translations for the "Generate password" button and password's helper texts
  • Use the first letter of the displayname / name / id as a default avatar (when there is no image)
  • Refactoring

Additionally, Synapse Admin has been added to AlternativeTo

Source code, admin.etke.cc (CDN version), and don't forget to say hi in the Synapse Admin

🔗Dept of Bots 🤖

🔗NioBot

nex (she/it) reports

Hello all! About time I got around to writing a post for TWIM. For those of you writing bots for Matrix, especially using python, and you haven't heard of us, this might interest you: NioBot v1.2.0 has been released! Regarding this release in particular, you really should read the changelog - so much has changed since the previous versions that including them all in this twim would likely make you fall asleep before you could finish reading it.

If you haven't heard about NioBot before, NioBot is a bot-focused library built on top of matrix-nio. The project was started as I felt the need to have a reusable library to cutdown on boilerplate across my bots, but I decided that it'd be a better idea to just have a generalised bot framework that anyone could use for any sort of bot. NioBot comes feature packed with all of the things you need to make a functional bot, without you needing to do any of the repetitive and sensitive behind the scenes. NioBot takes care of all of the parsing, internal functionality, utility, and stateful management, so you can focus on writing high quality commands, rather than worrying about the rest. If the below code sample tickles your fancy, feel free to check it out with some of the links below!

import niobot

client = niobot.NioBot(homeserver="https://matrix-client.matrix.org", user_id="@example:matrix.org", command_prefix="!", owner_id="@human:matrix.org")

@client.command()
async def hello(ctx: niobot.Context, *, user: str):
    """Says hello to the given user (or other string)"""
    await ctx.respond(f"{ctx.message.sender} says hello to {user!r}!")

client.run(access_token="foobar")

Contact us here: #niobot:nexy7574.co.uk | GitHub: https://github.com/nexy7574/nio-bot | Documentation: https://docs.nio-bot.dev/v1.2.0/

🔗Dept of Events and Talks 🗣️

🔗Matrix User Meetup Berlin

saces says

Next Matrix user meetup 4.12.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 🛰️

Matthew announces

TARDIS got a bunch more layout refinements, and now does basic balancing of two-way forks to make them prettier and easier to read

Matthew announces

While we're talking about bluesky - there have been lots of discussions recently about why Bluesky should use Matrix for its DMs (perhaps using Pseudo IDs to support DIDs, layering Matrix over atproto, or expressing the Matrix CS or even SS API as an atproto lexicon, etc).

In an ideal world, Matrix (or a vendor like Element) would have the $ to work on this fulltime as next-gen R&D, much as we implemented Cerulean back in 2020 as our proposal to Twitter for building bluesky on top of Matrix. Right now, though, this will only happen unless someone in the community steps up to have a go at it (or explicitly puts down money to fund it).

So: consider this a formal call to arms to anyone in the Matrix community who's excited by bluesky's mainstream decentralisation success to figure out and contribute a proposal & demo for using Matrix to power E2EE DMs in atproto! I've spoken to the bluesky team about it, and they've made it clear that they don't have much/any bandwidth to support from their side right now (unsurprisingly, given the rate at which they're scaling). However, they also haven't decided how to do E2EE DMs yet, so there's no harm in showing some code and making a proposal!

There's a huge range of different possible architectures here, which could include one or more of:

  • Taking rnmatrix.com (or similar) and chucking a RN matrix client into https://github.com/bluesky-social/social-app
  • Supporting did:plc's in Matrix as identifiers (3PIDs or a MSC4014 Pseudo ID mapping of some kind), and then running a homeserver alongside ATproto
  • Using linearised matrix to shim data in ATproto to Matrix CS API (if ATproto supported private data)
  • Deeplinking from bsky to a matrix client for E2EE DMs (pretty sure this wouldn't be acceptable UX for bsky tho)
  • E2EE-capable bridging between Matrix and ATproto of some kind
  • Doing any of the above using MLS-matrix from arewemlsyet.com rather than Olm/Megolm
  • Doing server-to-server bridging to expose an ATproto PDS as Matrix S2S API
  • Expressing (some of) Matrix's CS API as an ATproto lexicon, and focus on surfacing existing public unencrypted data on ATproto as public Matrix chatrooms? (and then add E2EE later)?
  • Same, but using Matrix's SS API instead?
  • etc. etc. etc.

🔗Matrix Federation Stats

Aine [don't DM] announces

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

As of today, 10519 Matrix federateable servers have been discovered by matrixrooms.info, 3187 (30.3%) of them are publishing their rooms directory over federation. The published directories contain 21096 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
1awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay178
2foster.boutique188
3conduwu.it211.5
4isekai.rocks215
5tomfos.tr217.5
6girlboss.ceo237.5
7codestorm.net287
8uwu.zemos.net296
9transgender.ing367.5
10uwu.zemos.net:8446396

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

This Week in Matrix 2024-11-22

By: Thib
22 November 2024 at 07:00

🔗Matrix Live

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

🔗Dept of Status of Matrix 🌡️

Thib (m.org) announces

We want to know everything about the bugs you squashed, the features you developed, and the docs you wrote. And even better, not only do we want to know about it, we want you to tell the Matrix community about it during our FOSDEM Fringe event, or even to tell the world about it in our FOSDEM Devroom!

Our Call for Proposals is still open for the DevRoom until December 1, so don't miss your chance to advertise your project!

But we're not limiting our presence to a DevRoom, we will also organize a fringe event before FOSDEM and have a booth during the wole event. Want to grab a limited edition T-shirt? Now's your chance to sign-up and help us staff the booth. All details are in our blog post.

🔗Dept of Spec 📜

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

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

🔗Spec Updates

The SCT continues to work towards the next spec release, expected in mid-December with Account Suspension, backwards compatibility for captions, and likely some further work towards Matrix 2.0 in the form of crypto MSCs.

Folks are encouraged to raise their MSCs for review in the SCT Office as soon as they feel it's ready for broad review. This helps ensure there are minimal process delays, and feedback can be incorporated into the feature design early. This is especially important for Matrix 2.0 MSCs, which the SCT hopes to be able to release in the new year.

In other news, the SCT had its last workshop this week to set expectations for how the team works. Next steps here are to compile conclusions into a document, check everything over, then find a place to ship that document for everyone to read. This effort has been important to help ensure the SCT is most effective at what it does, and identifying areas where the Foundation more broadly may be able to help. Watch this space for updates.

🔗Dept of Servers 🏢

🔗Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Olivier 'reivilibre' says

Hello! Synapse 1.120.0rc1 was cut this week, with Synapse 1.120.0 intended to be released next week. A noteworthy change in this version of Synapse is that authenticated media will now be enforced by default. For people running homeservers that want to gracefully support older clients and older federated homeservers (which still make unauthenticated requests for media), you might still want to turn this enforcement off; see the upgrade notes for details.

With that said, for homeservers in the open federation, it's worth noting that matrix.org has been running like this since September, so by now it's very likely that most clients and homeservers already support authenticated media and there'd be no need to turn it off. This option will likely vanish in the future, but we're not yet sure when. Track this issue if you're interested.

🔗Dept of Clients 📱

🔗Tammy

Benedict says

Tammy 1.0.4 has been released with a bunch of improvements. We added a nice wizard for account setup after initial login. We also introduced sharing media into Tammy on Android. Web does support emojis and file upload/download now and therefore is on its way out of the Beta. Of course, we have also fixed a few bugs.

🔗kazv (website)

kazv is a convergent matrix client and instant messaging app.

tusooa🏔️ says

kazv 0.6.0 is released. It depends on libkazv v0.8.0 which has fixed a security vulnerability. It also comes with many new features such as better support for stickers, reactions, and media file handling.

🔗Element X Android (website)

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

benoit reports

  • Element X Android v0.7.4 is on the PlayStore (beta channel). Please see the changelog here: https://github.com/element-hq/element-x-android/releases/tag/v0.7.4. Will be pushed to prod on Monday.
  • Working on media caption at the moment: users will be also able to write a caption for files and audio files. They will be rendered in the timeline. Also it will be possible to add a caption after the media has been sent. Removing a caption or editing a caption will be possible too
  • Making progress on room knocks AKA ask to join. There is still work to do on the SDK and the application is getting the latest polish.
  • We are also fixing bugs and recent regressions among our 170k+ SLOC.
  • Last but not least, the send button has been refreshed and is now very glossy!

🔗Extera

OfficialDakari announces

Today, new development version of Extera is out - 1.0-DEV-D5XQW.

Here is what changed since last TWIM post:

  • New versioning scheme. We rolled back to 1.0 and started marking development versions with date in 36-richered number system. A first stable release is soon.
  • Changed reaction colors. Not very heavy change, but improves usability a lot.
  • Removed backdrop blurs in dialogs. They were unnecessary and didn't fit in the UI.
  • Added more animations. Opening emojiboard now has an animation for it.
  • Remade polls. Polls were Extera's first feature, which I added when I didn't know React as good as now. Fixed displaying vote counts, ending polls etc.
  • Added sending polls. Back in summer, when polls were only added, you could only receive & vote in polls. Now Extera can also send polls.
  • Also, we made a few changes to our website and opened it's source code.

The latest version is already live at app.extera.xyz. Source code is always available here.

🔗Dept of Widgets 🧩

🔗Matrix Widget Toolkit (website)

Michael Weimann (n.io) says

Matrix Widget Toolkit is a framework for creating Matrix widgets.

We have released new versions of our matrix-widget-toolkit packages.

🔗Highlights

🎨 Better Element Web design integration: Element Web is currently the most commonly used hosting client for widgets. At the moment, Element Web is moving the designs towards the Element Compound design system. In this toolkit release, the primary (green) and error (red) colours and the avatar colours have been matched with the Compound design system.

🚀 To the future: The popular lodash library seems to be unmaintained. Also nowadays many functions are built in to the ECMAScript standard or Browser APIs. We therefore decided to remove the lodash dependency. Most uses are replaced by native functions. What could not be replaced is now provided by a utils module in each package. Last but not least, one less dependency.

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 VoIP 🤙

🔗Element Call (website)

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

Robin says

Hello TWIM!

You may be wondering: "Why hasn't there been a post from the Element VoIP Team in so long?" A fair question! We've been asking ourselves the same, especially since so much has happened. Over the past month, we've been deep down the rabbit hole, working hard to solidify the Element Call experience.

Our mission? To banish issues like gray tiles, missing participants, and lost media—for good! (Well, at least issues we can identify and control…)

This behind-the-scenes work wasn't exactly flashy, but it was crucial. Here's what we've been tackling to make Element Call more stable than ever:

  • Encryption key issues: Fixes to ensure keys don't get lost between the client and widget.
  • State resolution complexities: Matrix state resolution can lead to scenarios EC struggles with. While Simplified Sliding Sync helps here, getting everything to work as reliably as we need for EC took some work.
  • Edge case fixes: Numerous small changes in widget communication and the SPA (Single Page Application) to iron out tricky corner cases.

Looking forward, these foundational improvements open doors for bigger steps—like making EC more secure and fully leveraging its Matrix backing.

Other key updates:

  • We've improved mobile ringing, though there's still work ahead making DM calls behave like a telephone call.
  • Load times for the widget and app have been significantly improved, making calls snappier to start.
  • Tiles now stay in a stable order to make for a more focused call experience.

With all that groundwork laid, let's get to the fun stuff !

🔗New Features🎉

Our latest release introduces several usability enhancements and fun additions that make calling over Matrix even better:

  • Fast camera switching: on mobile. Easily switch cameras with a dedicated button.
  • Emoji reactions! 👏🤘🐱🐶 With playful sound effects that keep the mood lighthearted.
  • Raise hand feature: Now you can raise your hand during calls! (Includes an experimental timer—feedback welcome on whether it's helpful or confusing.)

🔗Exciting Milestones

Even on stable Element Web, you can now start an Element Call-based call—a huge step forward for the quest to ship MatrixRTC!

Not all of our recent stability improvements have made it into this release (some depend on Synapse, JS-SDK, or other updates), but we're taking care to roll them out thoughtfully to ensure a smooth experience.

Now's a great time to give Matrix calling a try! Jump into Element X or even stable Element Web and start a call. We can't wait to hear your thoughts.

Happy calling! 🚀

🔗Dept of SDKs and Frameworks 🧰

🔗matrix-rust-sdk (website)

Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM

bnjbvr says

@this-week-in:matrix.org

We have released a new version of the Matrix Rust SDK this week: you can now update it to version 0.8.0!

This is the first version we're releasing using our brand new release process, so changelogs are still a bit rough, but this new release process should also help with hopefully getting more frequent releases (with fewer large breaking changes, better changelogs over time, etc.).

Notable new changes include:

  • There are new APIs in town to observe the latest event of a single type: Client::observe_events and Client::observe_room_events (docs).
  • The media cache has been moved over to a new store, called the EventCacheStore; it may be configured when creating a new client using StoreConfig::event_cache_store.
  • The send queue now has the ability to upload medias, and reflect ongoing uploads as local echoes.
  • The implementation of invisible crypto is moving along nicely, with new methods to pin a UserIdentity, listen to identity changes etc.

Full changelog for the main crate. Note we now have changelog files for every other crate we do publish.

🔗libkazv (website)

libkazv is a matrix client sdk built upon lager and the value-oriented design it enables.

tusooa🏔️ announces

libkazv 0.8.0 is released. It uses the vodozemac crypto library instead of the deprecated olm, and fixes a security vulnerability that might have allowed the replacement of the session key of a megolm session. There are also several small enhancements.

🔗Elm SDK (website)

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

Bram says

Elm SDK beta 3.6.1

The Elm SDK has a patch update, fixing trailing slashes at the end of the URL.

Most of the work for the Elm SDK is fixing bugs where the spec doesn't match the ecosystem. Synapse doesn't sanitize user IDs over federation, for example, which leads to unspecified JSON results. This is currently in the testing phase, but this refactor means a second patch update might appear soon.

  • ❌️ Downside: This means more work for me.
  • ✅️ Upside: The Elm SDK will be able to count numbers and determine the scope of these problems.

Once the Elm SDK has appropriately adapted to some problems like these, I will report my findings, hopefully offering the Spec Core Team some statistics that can help them make decisions when making breaking migration changes. For now, however, this week's patch update exclusively fixes a bug! 🐛

🔗Dept of Services 🚀

🔗Synapse Admin

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 and QoL changes!

Add "Assign Admin" button

Using the Make Room Admin API endpoint, you can now assign room admins to Matrix rooms. This feature works only if there is at least one local member (preferably with a room admin power level) in that room.

Add preferred color themes to login page and footer

This update brings something small but special: a proper dark theme across the whole Synapse Admin app 🎉.

Previously, the Login page had a light background even when your browser was configured to prefer dark mode. The same was true for the footer, which was overwhelmingly bright.

Fellow dark mode enjoyers, the inconvenience is no more—both the Login page and footer now use your preferred theme colors!

Documentation for configuration

Not a new feature, but one that may help a lot—we hope you find this useful! We've added documentation for all config options and example configs for reverse proxies. The latter is a bit lacking, containing examples only for basic cases with Nginx and Traefik, so PRs are greatly appreciated.

Source code, admin.etke.cc (CDN version), and don't forget to say hi in the #synapse-admin:etke.cc

🔗Dept of Bots 🤖

🔗I Don't Have Spotify Maubot

HarHarLinks announces

Do people sometimes share links to music with you on Matrix? They do for me. Often, people use Spotify as their music streaming service, but I don't have Spotify.

Last week I came across sjdonado's I don't have Spotify webapp which conveniently exposes a REST API that allows you to easily query things, and is selfhostable open source software.

So easy enough I spent yesterday afternoon tinkering a quick maubot plugin that does the job for you: https://github.com/HarHarLinks/maubot-idonthavespotify.

Here is what it looks like in action:

🔗Baibot

Slavi says

baibot and its underlying framework library (mxlink) have been adapted to the new v0.8.0 release of the Rust-based matrix-sdk.

This brings Matrix authenticated media support, so:

  • baibot can now be used on existing homeservers which already enable authenticated media (like matrix.org)
  • there's one less blocker preventing admins from enabling authenticated media on their homeserver

🔗Dept of Events and Talks 🗣️

🔗Matrix Retreat 2025: Workation in Thailand

Yan says

Following the success of the Matrix Retreat in Austria 2024, we are organizing the next iteration: a workation for those passionate about Matrix, messengers, and distributed technology.

Details:

  • When: Between FOSDEM (February 1–2, 2025) and FOSSASIA (March 13–15, 2025) joining partially is possible
  • Where: Koh Phangan, Thailand

This is an excellent opportunity to collaborate with like-minded professionals in a productive yet relaxed environment.

How to Get Involved:

  1. Join our videocall: on 24th November 6pm CEST
  2. Connect via Matrix for updates and coordination:

We look forward to collaborating with you on this exciting initiative.

🔗Dept of Interesting Projects 🛰️

🔗matrix-sdk-redis

andybalaam says

matrix-sdk-redis is a new Rust crypto store implementation, allowing you to use matrix-rust-sdk and store your Matrix crypto information in a Redis store, avoiding the need for a filesystem. It's highly experimental and has some significant known gaps, but it seems to work. Version 0.1.1 is out now. Find out more at https://codeberg.org/andybalaam/matrix-sdk-redis.

🔗Element Web Guest Module (website)

Michael Weimann (n.io) reports

The Element Guest Module in conjunction with the Synapse Guest Module allows visitors to your homeserver to automatically register a temporary account with some capabilities that go beyond standard Matrix guest users.

Element Web 1.11.84 now includes the matrix-react-sdk as part of the Element Web repo (PR). We have released a new version of the guest module adapting to the change, that works with Element Web 1.11.84 (or later).

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

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

🔗TARDIS

Matthew announces

I wrote a new experimental DAG visualisation layout algorithm for TARDIS, loosely based on git-style 'tramline' branching visualisations. It can handle massively complex DAG structures, useful when debugging exotic state resolution problems or fork-proliferation problems.

So for instance, the layout of an Element Call-related DAG explosion that TARDIS entirely failed to visualise last week, which looked like this:

Now looks like this

🔗Matrix in the News 📰

Thib (m.org) announces

Computer Weekly covered the story of ePost, a service from the Swiss Post based on Matrix targeting a million users

🔗Matrix Federation Stats

Aine [don't DM] reports

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

As of today, 10384 Matrix federateable servers have been discovered by matrixrooms.info, 3171 (30.5%) of them are publishing their rooms directory over federation. The published directories contain 21165 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
1awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay183
2girlboss.ceo214
3puppygock.gay270.5
4ncat.cafe307
5uwu.zemos.net318
6rory.gay321.5
7transgender.ing329
8constellatory.net349
9ipv6.girlcock.systems353
10kif.rocks360

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

Matrix in full force at FOSDEM

By: Thib
19 November 2024 at 22:00

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
16 November 2024 at 02:45

🔗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

14 November 2024 at 23:00

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
9 November 2024 at 03:45

🔗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
5 November 2024 at 23:00

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
1 November 2024 at 07:00

🔗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!

29 October 2024 at 23:00

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!

29 October 2024 at 07:00

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
25 October 2024 at 07:00

🔗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
18 October 2024 at 07:00

🔗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)

15 October 2024 at 18:39

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.

❌
❌