Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
🔲 ☆

Call for Proposals for the Matrix Conference

The Matrix.org Foundation is happy to launch the first Matrix Conference, this September 19th to 22nd in Berlin, Germany, at Mitosis Labs!

Building on the success of the Matrix Community Summit, the Foundation is joining forces with the Summit team to open the conference to wider audiences. This is the event that policy makers, public and private sector leaders, open source enthusiasts, and technologists attend to share knowledge and learn what’s next in the decentralised and secure communications sector.

This is THE gathering place for hackers, project managers, digital sovereignty leaders and innovators. With several tracks covering everything from sovereignty & collaboration in the public sector to digital rights and advocacy, all profiles will find content for their interest. Outside of the tracks there will be plenty of time and space to get to know others from the ecosystem and exchange ideas.

The conference will happen from September 19th to 22nd at Mitosis Labs, in Berlin.

  • Thursday 19 will be a BarCamp: an informal workshop-like day where attendees can join, pitch a topic they want to discuss, and vote for topics they have an interest in. This event, taken from and organised by the Community Summit team, is the ideal place to warm up for the conference and meet others in the ecosystem.
  • Friday 20 and Saturday 21 will be the two core conference days. With several tracks on a variety of topics like Matrix in the public sector, Trust & Safety, interoperability, data sovereignty, performance, and new use cases… Everyone will find a talk they want to attend.
  • Sunday 22 will be dedicated to sprints. Those are sessions where the various attendees can gather to start working together on ideas that emerged during the conference in a more relaxed atmosphere.

We are doing our best to make the event as inclusive as possible. The ticket price is kept as low as possible, and we will rely on an honour system to allow people who can’t afford it to get a free ticket. Regular tickets will start at €50, a €100 premium ticket will get you limited edition merch, and we plan €350 business tickets for organisations willing to support us.

Further, we are taking care to make sure the event venue is accessible, dietary requirements are satisfied, and to implement a robust Health & Safety policy alongside our Code of Conduct.

We will post more about booths, and sponsorship packages both on our blog and on socials soon. We need a little time to put the final touches on the conference website and sponsor brochure!

In the meantime, you can submit your talk, workshop and sprint proposals on cfp.matrix.org. We’re interested in short (20min + 10min Q&A) or long (45min + 10min Q&A) talks on all the topics related to Matrix. Please submit your proposals before Wednesday 26 June 2024 09:59 AM AOE, 23:59 CEST (Berlin time).

🔲 ☆

This Week in Matrix 2024-05-31

Matrix Live

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

Dept of Spec 📜

Andrew Morgan (anoa) {he/him} reports

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

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

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

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

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

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

Dept of Bridges 🌉

IMAP/Mastodon MAP Bridges

jbara announces

Two new bridges are in town !!

Mastodon Bridge

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

Email Bridge

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

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

Dept of Clients 📱

Element X Android (website)

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

Jorge reports

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

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

Dept of SDKs and Frameworks 🧰

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

Emma [it/its] reports

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

Call for help!

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

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

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

Additions

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

Changes

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

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

Matrix Rust SDK

bnjbvr says

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

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

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

matrix-nio

OdoItal reports

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

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

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

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

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

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

New methods on AsyncClient of note:

Elm SDK (website)

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

Bram says

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

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

Dept of Events and Talks 🗣️

Matrix User Meetup Berlin

saces says

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

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

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

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

Matrix room: #mumb:c-base.org

Dept of Interesting Projects 🛰️

clokep reports

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

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

Matrix Federation Stats

Aine reports

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

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

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

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

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1doctoruwu.uk83
2authenyo.xyz90
3girlboss.ceo100
4uwu.sulian.eu123
5awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay127
6nerdhouse.io164.5
7aguiarvieira.pt176
8dendrite.s3cr3t.me185.5
9sulian.eu209
10feline.support258.5

That's all I know

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

🔲 ☆

This Week in Matrix 2024-05-24

Matrix Live

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

Dept of elections 🗳️

Josh Simmons (away, back May 9th) says

Voting continues in the Governing Board elections, and we're close to having 100% turnout in every constituency except Individual Members! Check your email inbox for an email from noreply@opavote.com and please cast matrix-orgyour ballot today.

Separately, we're very pleased to welcome NeoChat and Cinny as our latest Ecosystem Members!

Do you have a community that's centered around Matrix? Or an organization that is aligned with our mission? Perhaps you're part of a company that profits from the use of Matrix. Whichever describes you, become a member today. Your involvement helps us ensure we get representative feedback and the financial support we need to continue stewarding the specification.

Dept of Spec 📜

TravisR says

We on the Spec Core Team (SCT) are trying a new format for this week's spec update - let us know if there's something you think is missing or could be improved in #sct-office:matrix.org!

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

  • MSC3916: Authenticated media
    • Needs checkmarks from 6 more SCT members to enter FCP (started the week needing 6).
    • An outstanding thread regarding the federation download endpoint needs resolution.
  • MatrixRTC needs help determining state key overwrite behaviour - this thread and this proposal need review.
    • The SCT was asked to weigh in, and left some comments in the area.
  • MSC4115: Membership info on events
    • Needs checkmarks from 3 more SCT members to enter FCP (started the week needing 6).
    • Note: this MSC may be particularly interesting to client developers.
  • MSC4138: More methods in CORS
    • Needs 1 more checkmark from the SCT to enter FCP (started the week needing 1).
    • Currently blocked on clarified text regarding its scope.
  • MSC2781: Removing reply/edit fallbacks
    • Needs just 2 more checkmarks from the SCT to enter FCP (started the week needing 3).
    • Currently blocked on some clarified behaviour and process ordering.
  • MSC2867: Marking rooms as unread
    • Needs checkmarks from 4 more SCT members to enter FCP (started the week needing 4).

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

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

Dept of Clients 📱

Nheko (website)

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

Nico reports

For something completely different for once: Encrypted media files and unencrypted media files follow a bit of a different format (one contains encryption keys and an media id for an encrypted file, while the other one only has the id for the unencrypted file). The latter can be shown by most clients if they support encryption or if they don't. Encrypted media files are usually just supported by clients, which support End-to-End-Encryption (E2EE).

Now forwarding a message, which some clients support, can either copy the event content as is and send it into a different room or do some post processing on it (and maybe even add metadata). The problem is when that is combined with E2EE. A client which supports E2EE might decrypt the content, but would leave the media encrypted. If that is forwarded to an unencrypted room, the media might not be visible to some clients (without E2EE support), while when you just send the media file normally, it would be visible to those clients.

Because of that we explicitly blocked showing such media in Nheko to make it obvious, that something isn't right. Otoh, we don't even show an error message to the user, so we kinda messed up there, but that is besides the point. When you forward an encrypted image with Nheko into an unencrypted room, Nheko instead decrypts the image and reuploads it.

So now, why am I writing all of this? To be honest, I would just like to hear your opinions on it. Reuploading the media obviously takes longer and needs more bandwidth. On the other hand it is more compatible with clients, that don't implement E2EE and possibly don't intend to. A third option could also be to completely prevent forwarding encrypted media to public rooms to make accidentally sharing media in a decryptable manner harder. I would like to hear your thoughts on this, feel free to poke your head into #nheko-offtopic:nheko.im and share your thoughts!

Element X iOS (website)

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

Ștefan reports

It's been a pretty quiet week in iFruit company fanboys meet matrix devs land, just business as usual:

  • we're putting the finishing touches on login with QR code
  • added support for showing the native incoming call screen for ElementCalls started in DMs, and for showing notifications for the rest (2862)
  • we started working on storing draft messages in between room switches and app restarts
  • plus various other tweaks and fixes

Element X Android (website)

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

ganfra says

  • Release 0.4.13: Now available for open testing! Experience the newest features and improvements firsthand.
  • Plain Text Editor: We've implemented a plain text editor based on markdown input for a seamless editing experience.
  • QR Code Login: We're in the final stages of completing QR code login functionality, making sign-ins easier than ever.
  • ElementCall Notifications: Work has begun on integrating notifications for ElementCall.
  • Several Fixes: Various bug fixes have been applied to enhance overall performance and stability.

Dept of VoIP 🤙

Timo K. reports

We have not written updates here in a while. There are exciting things happening so its more then due to collect the news here.

Is there finally a MatrixRTC spec?

The VoIP team at Element has started the process of writing the MatrixRTC spec. There are some fundamental problems that need to be addressed before it makes sense to actually propose the MatrixRTC protocol. Those changes are somewhat entangled and boil down to:

  • Track members with one state event per device. MatrixRTC allows each user to join with as many devices as they desire.
  • Make memberships reliable. MatrixRTC membership is tracked by room state. Since room state cannot expire, clients need to manually update their membership state when they leave. So as soon as the client crashes, loses network, or the user ctrl+w's the call instead of hanging up, the call remains.
    • Currently there is a workaround to store a expire time inside the event, periodically update the event, and check if it's valid before using the membership.
  • Spec call focus information, and expose it via the client .well-known.

There is already an implemented solution for exposing the SFU (Focus) with the Matrix server .well-known. For reliable memberships, we have a generalized solution with MSC4140 which proposes events that are sent after a timeout (that can be refreshed so there is a cheap keep alive/heartbeat mechanism) or on demand by pinging a new endpoint which allows to delegate the leave responsibility to the SFU. This further reduces traffic, really slow hearbeats are possible since the SFU can be trusted to detect a disconnect. This could solve scheduled messages, self destructing messages, and our reliable call memberships. (More details can be found in the MSC)

Finally, a draft for the MatrixRTC MSC was started. It is kept short to separate concerns, as calls are not the only possible MatrixRTC application. This means there will be a separate MSC just for Livekit and one for full mesh, a separate MSC for calls, and maybe other future MSCs for other MatrixRTC applications.

Element Call becomes easier to deploy

After the very successful BigBlueButton and ElementCall interoperability sprint at the BigBlueButton Summit (see the demo video), the community has picked up the work and is providing automatic docker build. So getting a running BigBlueButton, MatrixRTC (Element Call) setup will become easier!

Similarly a NIX package for Element Call and the required jwt-token-service is in the making!

New Tile Layout / Frontend refactor

Last but not least there is also a refactor of the element-call codebase. The frontend will use the MVVM pattern to make it much easier to write efficient and better tests. This project will at the same time tackle many long-awaited UX problems people have reported (such as the jumpiness in deciding who the active speaker is). A new Spotlight mode is introduced supporting pinning and a static "spotlight tile" where the content changes instead of shuffling the tiles around. This is the beginning of a bigger plan to present staged and listening participants. Stay tuned.

Dept of Bots 🤖

MatrixJoinLink

Dominik ⚡️ says

MatrixJoinLink is bot that allows the creation of invite links to non-public rooms in matrix. Some months have passed since I initially introduced the bot in TWIM. The bot addresses the challenge of being unable to invite individuals via a link to a non-public room or space.

In the latest release, I ensure that the users that interact with the bot always have the right permissions. Thus, if you use the bot, you should update to this version :)

How to use JoinLink

MatrixJoinLink simplifies the process of inviting users to non-public spaces. The easy way to use the bot:

  1. Invite the bot into your room.
  2. After the bot joined, use the command !join help to explore its features. Please note that the bot responds exclusively to users or servers configured by the bot owner.
  3. To create a Join Link, kindly type !join link Demonstration_Link, and the bot generates a join link for you. Ensure that you and the bot have the permission to invite users.

Creation of Join Links (with Developer Mode Details)

Entering a Join Link Room

Feel free to test the bot and raise any issue using GitHub :)

matrix-word-counter

jjj333_p (any pronouns) says

Heya, just shouting out a little bot ive made recently to count the frequency that words are used in a given room. Check it out here!

Dept of Events and Talks 🗣️

FrOSCon 19

HarHarLinks announces

It can't be a surprise after Oleg's many years of effort that there will be a Matrix Community Event at the 19th FrOSCon in Sankt Augustin (near Bonn) 🇩🇪 on 2024-08-17 and 18 again! We are once more planning on a Devroom and Stand, and need your help! If you want to give a talk, hold a workshop, or just generally lend a hand and be involved, then follow the Call for Participation here to get in touch!

22. Gulaschprogrammiernacht (Website)

HarHarLinks says

If you are planning on attending GPN22 #gpn:entropia.de, the 22nd Goulash Programming Night, in Karlsruhe 🇩🇪 next week (2024-05-30 to 06-02), you're in luck! Matrix Community Events will be there and offering 2 Matrix workshops and looking forward to meet you!

Dept of Interesting Projects 🛰️

matrix-web-components

unonde announces

This week in mwc was added a docker-compose setup, and the APIs refactor, to finally be able to develop and use the web components with data from a local matrix homeserver (synapse, sqlite — see docs), and any homeserver.

This was tested with the user interactive authentication flow, while registering and login users (username/password/captcha/terms&conditions) as well as for managing user devices. Follow up on this will be to integrate the tests and CI/CD with a local homeserver (looking for help here if some have interest).

Also some breaking changes in the services/api.js files, to allow the baseUrl (homeserver's API address discovered by the .well-known file) to be setup in the constructor, and the API calls that could require it (registerUserKind).

The state of the project is still in early development, and subject to changes. For context, mwc is a learning experiment in vanilla web technologies, without any dependency, to try and layout the "components and methods" required to build a generalist matrix client. The objectives in the long run is to implement the building blocks (HTML custom elements, web-components), that any site or web-app could use for displaying and editing data in the matrix ecosystem. In this way the components are trying to be implemented following the specification as closely as possible (WIP), starting with "public unencrypted data" (a dependency will most probably be added for supporting encryption, as peer dependency, as for the HTML sanitizing features).

Notes

A few design decisions have been made, such as not using HTML/CSS classes or id, or adding default styles. The components can be imported in a site/app, and used similarely as native HTML5 elements such <img/> (here <matrix-image/>, or for example matrix-room etc.). The HTML attributes of the components should reflect their state (such as with <details open="true" />) and therefore allow styling and theming, with an API that should not change (as the version number grows, and as the project gets closer to match the spec's wording and features).

This feature is also pretty exiting for me because it could allow to start using mwc with data coming "from other sources"; such as "static JSON files", and use the matrix-spec to organize content (and maybe even allow syndication).

Feel free to join the discussion with feedback, ideas or comments #mwc.sctlib:matrix.org, see the /docs folder, the example page and client (with router) implementation (a router component will be added to mwc, using the URL Pattern API, and a temporary pollyfill dependency).

Matrix Federation Stats

Aine reports

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

As of today, 9430 Matrix federateable servers have been discovered by matrixrooms.info, 2857 (30.3%) of them are publishing their rooms directory over federation. The published directories contain 159532 rooms.

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1doctoruwu.uk197
2girlboss.ceo224
3uwu.zemos.net237.5
4maunium.net251.5
5uwu.sulian.eu319
6conduwuit.aguiarvieira.pt361.5
7pavli.cc403
8shortestpath.dev430
9remi.im438.5
10littlevortex.net442.5

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1conduwuit.aguiarvieira.pt75
2doctoruwu.uk87
3girlboss.ceo89
4uwu.zemos.net134
5uwu.sulian.eu145
6aguiarvieira.pt165
7m00nlit.dev184
8dendrite.s3cr3t.me197.5
9neilalexander.dev246
10puppygock.gay295

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-05-10

Matrix Live

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

Dept of elections 🗳️

Neil announces

Hi all, I am also standing for the Matrix Governing Board as the Element representative in the Platinum Member constituency. I wrote a short blog post explaining who I am and what I hope to achieve. Others have pointed at it already, but please do check out the Governing Board nominees campaigning bonfire

Gwmngilfen announces

I'm standing for the Matrix Foundation Governing Board elections in the Individual Members category! You can find my platform statement in the list of nominees but I've also written some more words on my thoughts & priorities. I'm always happy to debate further - please join us in #governing-board-nominee-campaigning-bonfire:matrix.org where some excellent discussion has already happened, but more is very welcome 🙂

Salt says

I'm standing for the Matrix Foundation Governing Board elections in the Individual Members category. I think my campaign statement in the list of nominees covers things pretty well but happy to answer any additional questions in #gbnc-individual:matrix.org . tl;dr: I have a ton of community board experience and want to bring the human-communication-facilitation skills I've developed to set this new governing board on an effective path.

Sumner Evans says

I am running as an Individual Member for the Matrix Governing Board and I do not feel like my positions were fully expressed in the soundbite-length platform statement allowed in the form submission. I've expanded on my position in a blog post: My Matrix Governing Board Platform. It includes details of my community involvement including many footones, a better-formatted platform, and a set of specific policies which I hope to advocate for.

In addition, I would like to endorse two Ecosystem Member candidates (see my endorsements blog post).

andybalaam announces

I'm standing for the Matrix Governing Board as an Individual Member. If you'd like to hear about my priorities, check out my blog post! Thank you to all the nominees for their great platform statements and discussion in the campaigning room, which you are welcome to join.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the Element

Matthew reports

On May 12th 2014, a bunch of developers converged in Rennes for a workshop to kick off the design of a new open source protocol for decentralised communication: Matrix. The first public release of Matrix was the public repository for Synapse, which was released on Aug 12th 2014 (prior to Matrix being announced on Sept 3rd) - but if you're curious as to what went on that summer between the original design workshop and the first public snapshot, we've released the pre-release repository synapse-ancient for archaeological interest: https://github.com/matrix-org/synapse-ancient. To avoid confusion: the whole Matrix project was originally codenamed Synapse, so most of the repository uses that name, until we settled on a final name just before the first public release.

Dept of Clients 📱

Commet

airyz says

Hello! Our first major update, v0.2 released this week featuring a bunch of new features and improvements!

Whats New?

  • Push Notifications
  • Experimental support for conversation bubbles on Android
  • URL Previews
  • Room Permissions Management
  • Single Sign-on
  • Support for Multiple Languages
  • A bunch of bug fixes
  • And a whole lot more!

Thanks to everyone who has already been using Commet and giving feedback!

Join Our Room · Github

Neochat (website)

A client for matrix, the decentralized communication protocol

Tobias Fella announces

Here's what happened in NeoChat since you last heard from us:

  • It's now possible to load encryption keys from a backup. Better integration for this is coming soon, together with Cross-Signing support.
  • We've added integration with purpose, Plasma's content sharing mechanism. This means that you can share content from apps that support it directly to a matrix room.
  • NeoChat will now show captions for images and other media messages.
  • It will now show a link preview for all links in a message, instead of just one.
  • Room list filtering has been merged into the quick switcher.
  • It's now possible to show a QR code for rooms and the local user and scan other people's QR codes from a built-in scanner.
  • New DMs are now always encrypted.
  • Our integration with itinerary data was improved, now supporting more types of data. Additionally, text documents and pdf files can now be previewed.
  • We've done some internal restructuring, which makes NeoChat a lot more stable when leaving, joining, and switching rooms, spaces, and accounts.
  • NeoChat now remembers which files have been downloaded before and shows them correctly.
  • There's now an option to keep the previous behavior where all rooms are shown in the "Home" tab, instead of just the rooms that are not in any joined space.
  • NeoChat's devtools have also seen some improvements: There's now an option to show all hidden events and it's now possible to change arbitrary room state

Element X iOS (website)

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

Ștefan announces

Following last week's big changes we switched gears and focused on smaller bugs and tweaks:

Element X Android (website)

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

Jorge announces

This week the Android team continued working mainly in:

  • 🔗 Permalinks: we expect to enable this feature soon for all users! In the meantime we fixed the last couple of reported bugs for this feature.
    • OIDC login broke because we unexpectedly intercepted some Matrix Authentication Service URLs.
    • Message notifications not navigating to the right screen when opened.
  • 🔑 QR code login: we've been ironing out some bugs on the clients and improving the UX, but there's still some work ahead since this is a large effort involving lots of different projects.
  • 🛠️ UX cleanup: we've improved the Settings, Room settings and User profile screens.
  • 🙏 Thanks to tonkku107 for enabling per-app language settings on Android 13+!
  • 🐞 Other bug fixes:
    • Removed mandatory session verification for existing sessions.
    • Fixed a selection issue with the text message composer on Android 14+.
    • Better log uploads for bug reporting, enqueuing newest log files first and adding more useful info for debugging the issues.

Dept of Widgets 🧩

Milton Moura reports

Wow! How time flies by! A lot of new stuff has been popping up in NeoBoard, since it's 1.0.0 release last October!

NeoBoard is a whiteboard Matrix widget for realtime visual collaboration that can be embedded in Element Web. You can use it for presenting slides or draw vector graphics with your mates, while keeping the data safely stored in Matrix rooms.

Version 1.17.0 was released a couple of weeks ago and it's amazing!

Here's a glance over the features we have developed recently:

  • New formatting options, such as bold, italic, color and alignment for text elements
  • Multi-selection of shapes, both individually and by dragging a selection area
  • Multi-selection actions, such as move, resize, copy/paste, delete, duplicate and all other formatting options
  • Set your slides to full screen for a more immersive experience
  • Slide duplication
  • A brand new Arrow tool to connect things

If you're interested in more cutting edge features, you can enable image uploads, by setting the appropriate environment variable on your deployment and pimp up your presentations!

You can add NeoBoard as a widget to one of your rooms right now by following these instructions .

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

Milton Moura announces

The Matrix Widget Toolkit was recently updated to support React 18.x and the latest Redux 9.x / Redux Toolkit 2.x releases.

This means that the following packages saw new major releases:

and the MUI Matrix Example Widget was updated to reflect this.

We also have removed the deprecated @matrix-widget-toolkit/semantic-ui package from the repo, as it was no longer maintained.

At Nordeck, we use the Matrix Widget Toolkit as the basis for developing widgets as single-page web applications that run embedded within Element Web.

Checkout NeoBoard, an end-to-end encrypted realtime collaborative whiteboard, or NeoDateFix, a calendar-focused video conference solution for teams, and see what can be built with the toolkit and Matrix.

if you have any questions or feedback, you can reach us at #nordeck:matrix.org

Dept of SDKs and Frameworks 🧰

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

It seems like we have hit the mark of 6 months without news from Ruma, so now is the time to fix that!

We just released Ruma 0.10.0 with a lot of improvements and bug fixes, including:

  • Implement new features of Matrix 1.10, like media captions or multi-stream VoIP
  • Improve the ruma-html crate to be able to navigate the HTML tree and parse supported elements
  • Add support for manually marking rooms as unread (MSC2867)
  • Fix some endpoints where the response is a redirect or a non-JSON response
  • Bump the http crate to version 1
  • Prepare the new features that should be available in Matrix 1.11

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

There is also exciting work in the pipelines, like initial support for logging in with a QR Code with OpenID Connect (MSC4108).

And maybe our next PR will be yours! If you are looking for inspiration, we have a few "help-wanted" issues to get you started.

Matrix Dart SDK (website)

Matrix SDK written in pure Dart.

td announces

meep quick update, matrix 0.29.0 released, here's a summary:

v0.29.0

Refactoring release which fixes a flickering of sent file events in the timeline. The State events in a room are no longer instances of Event but StrippedStateEvent by default, which is a base class of Event. Usually in join rooms the state events are actually Event and can be used as those after a type check if needed.

Example:

// Before:
final event = room.getState(EventTypes.RoomCreate);

// After:
final strippedStateEvent = room.getState(EventTypes.RoomCreate);
final event = strippedStateEvent is Event ? strippedStateEvent : null;

Also be aware that Event.remove() has been renamed to Event.cancelSend() to make more clear that this is only to delete events from database and cache which have not been synced yet. They no longer appear in the Client.onEventUpdate stream but on the new Client.onCancelSendEvent stream.

  • chore: more gh_release fixes (td)
  • chore: reduce isValidMemEvent log level (td)
  • ci: Add tests for database on web (Krille)
  • refactor: delete not sent events without eventupdate stream workaround (Krille)
  • refactor: Removes the behavior of deleting an event if the file is no longer cached (Krille)
  • refactor: Use strippedstatevent as base for room state and user class (Krille)

That's it, see you soon bye byee

Elm SDK (website)

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

Bram reports

Today, version 3.2.0 is out! This means that the Vault type has been defined completely.

What this means, is that this might be the last beta release that does not offer functionality with the Matrix API directly. The codebase is ready to accept alterations from the Matrix API using VaultUpdate types, which means that the first actual clients written in (beta) Elm can be expected soon! 🎉

Dept of Events and Talks 🗣️

Matrix meetup @ devconf.cz

kitsune announces

Matrix goes to Brno! Well, in one way it's already there, as devconf.cz uses it as the chat platform - but this year the conference will also include a dedicated Matrix meetup. The list of things to discuss is open - let me (@kitsune:matrix.org) know if you want to speak on it or to discuss something specific. The full conference agenda is at https://www.devconf.info/cz/, the registration is open and completely free of charge. See you there!

Matrix Federation Stats

Aine announces

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

As of today, 9467 Matrix federateable servers have been discovered by matrixrooms.info, 2839 (30.0%) of them are publishing their rooms directory over federation. The published directories contain 159320 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
1spritsail.io212
2doctoruwu.uk233
3maunium.net263
4aguiarvieira.pt283
5nerdhouse.io295
6girlboss.ceo306
7envs.net344.5
8chf.house368.5
9plocki.org379
10lewd.social392.5

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1doctoruwu.uk87
2spritsail.io95.5
3aguiarvieira.pt107
4matrix.its-tps.fr184.5
5girlboss.ceo187.5
6puppygock.gay254.5
7craftingcomrades.net270
8uwu.sulian.eu290
9transfem.dev303
10jpeg.city305

That's all I know

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

🔲 ☆

Rapport fait au nom de la commission d'enquête sur le modèle économique des crèches et sur la qualité de l'accueil des jeunes enfants au sein de leurs établissements

Des événements dramatiques intervenus dans les deux dernières années ont mis en lumière la dégradation de l'accueil des jeunes enfants dans les crèches. En France, 20% des enfants de moins de trois ans sont accueillis dans des crèches. C'est dans ce contexte que l'Assemblée nationale a mis en place une commission d'enquête sur ce sujet.La première partie du rapport est consacrée à l'étude du lien qui existe entre le modèle économique des établissements d'accueil du jeune enfant, et la qualité de l'accueil proposé aux jeunes enfants. Les travaux de la commission d'enquête mettent en lumière une politique familiale orientée, depuis plus de vingt ans, vers la création de nouvelles places d'accueil, pour répondre aux besoins des familles, et permettre aux parents de concilier vie personnelle et vie professionnelle. La politique d'accueil du jeune enfant a donc fait l'objet d'une approche essentiellement quantitative, et peu qualitative.Les auditions réalisées et les informations complémentaires transmises par les représentants des grandes entreprises de crèches ne permettent pas de mettre à jour un lien évident entre l'augmentation du nombre de crèches privées lucratives et la diminution de la qualité d'accueil. En effet, la dégradation de la qualité d'accueil touche les crèches de tout statut juridique, car elle résulte d'un modèle économique qui finance insuffisamment les structures d'accueil du jeune enfant, et d'une pénurie de professionnels de la petite enfance que les assouplissements réglementaires successifs, visant à maintenir les places existantes, ont contribué à aggraver.L'analyse de l'ensemble des financements publics que perçoivent les crèches, et en particulier ceux de la branche famille de la sécurité sociale met en évidence un système complexe, fondé sur une superposition de financements complémentaires visant à compenser l'insuffisance et les défauts des moyens alloués dans le cadre de la tarification à l'activité.La seconde partie du rapport contient les 73 recommandations formulées par la rapporteure pour transformer le modèle économique des crèches, afin de garantir une meilleure qualité d'accueil pour les enfants. Elles s'articulent autour de ces quatre axes :renforcer la qualité de l'accueil des enfants grâce à une évolution de la réglementation, à des contrôles plus réguliers et effectifs, ainsi qu'à l'amélioration des conditions de travail et des formations des professionnels ;réformer, de manière structurelle, le financement des crèches afin de garantir aux structures des moyens budgétaires permettant de réellement proposer un accueil de qualité ;clarifier la gouvernance du secteur des crèches, en replaçant les communes et les intercommunalités au cœur du modèle, dans le cadre du service public de la petite enfance ;repenser, plus largement, la politique d'accueil du jeune enfant, en créant des alternatives à l'accueil en crèche, en lien avec les besoins fondamentaux des enfants.
🔲 ☆

La GenAI est sexy, mais en vaut-elle vraiment la peine ?

L’intelligence artificielle générative (GenAI) suscite un engouement considérable, marquant potentiellement le début d’une ère nouvelle en technologie. Tandis que la France et l’Europe peinent à tenir le rythme face aux géants américains et chinois dans le domaine de l’IA, la GenAI émerge comme un catalyseur possible de transformation profonde, notamment en France et en Europe. Mais derrière cet enthousiasme, quelle réalité se dessine ?

De nombreuses initiatives, à la fois publiques et privées, menées par des innovateurs tels que Mistral.ai, Probabl.ai, ou The H Company œuvrent à rattraper un retard scientifique significatif. Cependant, ces investissements vers la GenAI sont aujourd’hui principalement dirigés vers la recherche. Les géants du CAC 40, quant à eux, semblent également déployer de gros efforts en R&D dans la création et la spécialisation de modèles fondationnels français (ou non).

L’écueil majeur rencontré en IA ces dix dernières années réside dans notre incapacité à transférer l’IA des laboratoires vers le terrain. La question se pose alors : la GenAI ne va-t-elle pas renvoyer tous les efforts des dernières décennies dans les laboratoires ?

L’IA générative est certes impressionnante et ouvre de nombreuses possibilités d’utilisation pour les entreprises. Cependant, elle distrait souvent les acteurs économiques des plans stratégiques Data & IA établis depuis des années en France. Les modèles de langage de grande taille (LLM) adoptent une approche « one-size-fits-all » qui peut rendre les organisations moins attentives à leur stratégie globale de données, les détournant ainsi de cas d’usage métier spécifiques, bien que moins séduisants.

Il est crucial de ne pas laisser la GenAI détourner les entreprises des opportunités immédiates et tangibles offertes par des technologies plus matures comme le deep learning, qui, en particulier en dehors des LLM, est prêt pour un déploiement massif. Des domaines comme la vision par ordinateur (computer vision) ont atteint une maturité qui permet une industrialisation à grande échelle. Si tous les investissements se concentrent exclusivement sur la GenAI, nous risquons de négliger ces technologies prêtes à l’emploi. Cela pourrait nous priver des moyens nécessaires pour industrialiser et déployer des applications pratiques de deep learning, telles que la reconnaissance d’images et l’analyse vidéo, qui peuvent transformer divers secteurs industriels et impacter positivement l’environnement.

Dans ce contexte, les récents engagements du président Emmanuel Macron, qui a annoncé des investissements supplémentaires de l’État dans l’IA, sont une occasion de renforcer nos efforts dans l’industrialisation et le déploiement de ces technologies. Si ces investissements visent à propulser la France et l’Europe en leaders de la recherche en IA, essayons également de devenir leader dans son industrialisation !
La GenAI, avec ses promesses de révolution industrielle et d’innovation sans précédent, mérite une attention critique et nuancée. Pour les entreprises françaises et européennes, l’enjeu est de taille : il ne s’agit pas seulement d’adopter cette technologie parce qu’elle est à la mode, mais de l’industrialiser de manière stratégique.
L’intégration judicieuse de la GenAI doit renforcer les opérations existantes, catalyser la croissance et améliorer la compétitivité sur le long terme. Plutôt que de suivre aveuglément la vague, les entreprises sont appelées à naviguer avec discernement, alignant innovation et stratégie opérationnelle pour transformer véritablement l’essai en un succès durable.

tribune_thibaut_lucas
🔲 ☆

This Week in Matrix 2024-04-26

Matrix Live

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

Dept of Status of Matrix 🌡️

Josh Simmons says

We’re positively glowing as we see all the people who are being nominated for our first ever Governing Board elections! The nomination period closes April 26 end of day (AOE time) and we’ll be posting all the nominees on our new election information center within 24 hours after the period closes.

Further, we’re pleased to welcome our 12th Ecosystem Member this week: Fractal 🎉

Does your project or community use Matrix? Does your business benefit from Matrix? Join the Matrix.org Foundation as a member to make your voice heard and secure the future of Matrix.

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:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Dept of Servers 🏢

Conduit (website)

Conduit is a simple, fast and reliable chat server powered by Matrix

Timo ⚡️ announces

We did it! Finally, Conduit version v0.7.0 released, bringing features, improvements, but also some security fixes, so it's advised you upgrade as soon as possible.

It took some time, but I find it very important to do extensive code reviews, which finds both minor and major problems more often than not.

  • BREAKING: The docker container changed. You need to explicitly set CONDUIT_CONFIG="" now to reproduce the previous behavior. You might also have to add expose: - 6167 to your docker compose config.
  • BREAKING: Require explicit database backend, you need to explicitly set it to sqlite or rocksdb now !636
  • Feature: Add support for room v11 !562
  • Feature: Bump default room version to v10 !628
  • Feature: Use _matrix-fed._tcp SRV record, fallback to _matrix._tcp !616
  • Feature: Add argument parser for the conduit executable !385
  • Docs: Add registration_token in default cfg and DEPLOY !557
  • Docs: Build docs using mdBook and copy all markdown files !604
  • Docs: Document all configuration options !635
  • Improvement: Sliding Sync Improvements !549
  • Improvement: Improvements to /sync performance and db size !590
  • Improvement: Declare matrix v1.5 support !568
  • Improvement: Use upstream reqwest instead of vendored one !527
  • Improvement: do not save typing edus in db !597
  • Improvement: Remove log config modification !553
  • Improvement: use simpler rocksdb config !602
  • Fix: Unrejectable invites !623
  • Fix: ACL error shouldn't break the whole request !542
  • Fix: Avoid panic when client is confused about rooms !588
  • Fix: Send push notification on invite to invited user and etc !559
  • Fix: Don't give guests admin !591
  • Fix: Do not allow administration of remote users !614
  • Fix: Remove join_authorized_via_users_server field on state update !619 !385
  • Fix: Do not expect that all http requests are valid reqwest requests !611

conduwuit (website)

strawberry (it/pup/she/they) 🏳️‍⚧️ 🦴💜🩷 reports

a very cool, featureful fork of Conduit

conduwuit is a well-maintained, hard-fork of Conduit with tons of new features, many bug fixes, huge performance improvements, quality of life enhancements, moderation tools, and much more! I have been working on this since January and progress has been outstanding. It's time to share my joy with all of you too. The best part: conduwuit is a full drop-in replacement for Conduit. It's fully database compatible, with no migration necessary. You can even go back if you don't like it.

Check out the full list of differences here. There is so much. I can only highlight some of the big stuff:

  • 👁️ Read-receipts federated in real-time.
  • ⌨️ Typing indicators over federation.
  • 🙋‍♀️ Complete presence support.

All of these features are fast. Your client will feel snappy. Conduwuit has been the leading server in both #ping:maunium.net and #ping-no-synapse:maunium.net for many weeks in a row.

I encourage you to give it a try and join #conduwuit:puppygock.gay 💜. The public homeserver I host running conduwuit is available for use by entering transfem.dev as the server-name in your client of choice.

I'd like to personally thank various contributors for helping me get conduwuit going: @jason:075-141-169-120.res.spectrum.com:8447 for everything, from performance and optimisation, to the core Matrix things and some features. @tom:doctoruwu.uk for the Docker CI and other Docker related work. @morguldir:sulian.eu for Docker and Nix-CI work. @charles:computer.surgery for the initial GitHub Actions CI port and help with various Nix-related things. @benjamin:computer.surgery for getting tokio-console working to optimise and test this release. @qubic:qubicfluff.pl for Complement with Nix, misc Nix work for macOS, and working on a load tester written in Rust for conduwuit. @jason:littlevortex.net for finding critical bugs inherited from upstream, providing watcherbot: the essential toolbox for homeserver development, and Complement testing suite help. @raizo:raizo.dev for integrating loole to replace tokio channels which increased federation performance.

Special thanks to the various folks helping with development testing, code spot checks, and/or current donors not listed above: @aranjedeath:explodie.org, @efscher:matrix.nyc.what.if.ua, @frebib:spritsail.io, @k900:0upti.me, and everyone else who helps out.

Chat with us in #conduwuit:puppygock.gay

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the Element

anoa says

This week Element released Synapse v1.105.1, which is a security release that fixes a denial of service attack. If you haven't upgraded already, please do!

Otherwise, a new release candidate went out yesterday! Synapse v1.106.0rc1 contains new features that are available for testing ahead of next week's full release. This release candidate contains the security fix from v1.105.1. Please test this release candidate and file bugs if you're able to. Thanks!

Dept of Clients 📱

Element X Android (website)

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

benoit reports

  • We have focused on 2 main topics this week:
    • permalink navigation: this will land very soon, thanks to new APIs provided by the SDK, which allow you to navigate to any event of a timeline. Room and user navigation is already available on the nightly version. Once this is done, we will handle navigating to a replied event, and also external link navigation, to let Element X open matrix.to links.
    • Login with QR code: while there were very positive tests on login using a QR code, the last tweaks and tests are being added and it'll need some time to be fully stable.
  • We have also improved the verification screen to help users if they need to create a new recovery key.
  • And the bug around re-verifying verified sessions has been fixed.

Dept of SDKs and Frameworks 🧰

Trixnity (website)

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

Benedict reports

Another Trixnity release this week:

features:

  • added thread_id to SetReceipt

bugfixes:

  • fix deserialzation of redacted m.room.encrypted events
  • always handle unencrypted content

Matrix Dart SDK (website)

Matrix SDK written in pure Dart.

td announces

meep quick update, matrix 0.28.0 released, here's a summary:

v0.28.0

This release introduces the new famedly calls, it brings 1:1, mesh and livekit calls support to the matrix dart sdk, read more at: voip docs

Here's the generated changelog:

  • feat: famedly calls (td)
  • chore: create_gh_release job (td)
  • feat: lcov and tag olm tests (td)
  • fix: Make room.setPower more type safe and avoid change powerlevel in RAM before sending request to server (krille-chan)
  • refactor: Use prevBatch from server for pagination in event search (krille-chan)
  • fix: canChangePowerLevel should return true for own user (krille-chan)

That's it, see you soon bye byee

Elm SDK (website)

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

Bram reports

Today, version 3.1.0 is out! It exposes a Matrix.Room module that allows users to view and manipulate Matrix rooms.

With the main functionality (rooms) being implemented, the Elm SDK is soon arriving at one of its first versions where a basic client can be built in beta. Soon, the first Elm client since Scylla and the chess client will be able to emerge. 🌱

Dept of Bots 🤖

Pok'em (website)

Patrick announces

A notification helper bot. It lets you send messages to a Matrix room using an HTTP request, website, or CLI. The name is a shortening of "Poke Them"

If you're familiar with ntfy.sh, this is similar but will work only for Matrix.

I consider this to be mostly feature complete already.

Dept of Events and Talks 🗣️

Matrix Conference 2024

Thib announces

TWIM And let me start with a small yet huge announcement. THE MATRIX CONFERENCE IS HAPPENING!!

Building on the success of the volunteer-led Matrix Community Summit of last year, the Foundation is going big this year and organising the Matrix Conference in Berlin from September 19th to 22nd!

Stay tuned on the Matrix.org blog and look out for a Call for Papers!

Matrix User Meetup Berlin

saces announces

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

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

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

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

Matrix room: #mumb:c-base.org

Dept of Interesting Projects 🛰️

Chaz (website)

Patrick says

It's an AI model frontend in Matrix, that connects to many different backends. There is a blog post introducing it as well.

Chaz is a Matrix bot that uses your AIChat config to connect to ChatGPT, local ollama instance, Claude, or other LLM APIs and provide a chat experience from within Matrix. If you're familiar with things like "Open WebUI", "SillyTavern", etc, this is similar but more limited.

There is a demo instance, but right now this is something that you'll need to run yourself so that you can use your own API keys to access the backends.

Fractal Networks HomeServer

Mo announces

TWIM: Fractal Networks announces Fractal HomeServer, a Matrix powered self-hosting platform and reference implementation of the Fractal Network architecture: https://www.reddit.com/r/selfhosted/comments/1catzwg/introducing_fractal_homeserver/

Matrix Federation Stats

Aine says

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

As of today, 9514 Matrix federateable servers have been discovered by matrixrooms.info, 2853 (30.0%) of them are publishing their rooms directory over federation. The published directories contain 161741 rooms.

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1doctoruwu.uk229
2uwu.sulian.eu296
3nerdhouse.io304
4synapse.rntpts.de327
5spritsail.io338.5
6girlboss.ceo394
7aguiarvieira.pt444
8lewd.social449
9craftingcomrades.net454
10littlevortex.net537.5

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1doctoruwu.uk93
2uwu.sulian.eu110
3spritsail.io149
4girlboss.ceo215.5
5aguiarvieira.pt231
6frai.se259
7feline.support264
8matrix.its-tps.fr274.5
9puppygock.gay288.5
10craftingcomrades.net306

That's all I know

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

🔲 ☆

Post-mortem of the Matrix.org Outage

The Matrix.org homeserver suffered from an outage on Monday 22 April, between 08:00 UTC and 10:00 UTC, followed by slowness for the next 2 hours.

The outage occurred during scheduled maintenance with no expected downtime. It included upgrading the base OS of the machines running Matrix.org’s deployment.

Technical cause

The Matrix.org homeserver is large. To operate at this scale and distribute the load on several machines, it relies on Synapse workers.

The first machines upgraded only ran stateless workers and were trivial to upgrade. Upgrading the machines with stateful workers was more difficult. To avoid downtime, the stateful workers had to be moved to other machines from the same deployment, and be restarted.

The machines that received the additional workers ended up being resource-starved. In the meantime, it took significant time to upgrade the free machine and bring its network back online before we could move the workers back to it to better share the load.

Organizational cause

Matrix.org is a historical and complex deployment that is difficult and costly to replicate entirely in a staging environment at this scale. It is also the largest deployment in the federation and has unique performance requirements.

Through this upgrade process, gaps in the deployment documentation were identified and these gaps contributed to the upgrade taking longer than expected. The deployment specificity has now been properly documented, and we are confident that the next machines’ upgrade will be significantly faster.

Lessons learned

To perform an upgrade without downtime, the Foundation would need to add another server in the deployment of the Matrix.org homeserver, as a consequence of steadily increasing traffic. An extra server introduces a recurring cost and requires additional work that the Foundation cannot afford right now.

The next upgrade will have about an hour of planned downtime and will be announced shortly. In the meantime, the Foundation is investigating the most cost-effective way to improve redundancy on matrix.org.

🔲 ☆

This Week in Matrix 2024-04-19

Matrix Live

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

Dept of Status of Matrix 🌡️

Josh Simmons announces

WOW! What a week. Today I am thrilled to introduce not one or two, but eight new organisational members. We are extremely grateful to Futurewei Technologies for joining as our newest Gold Member – more on that soon – and to Verji Tech AS for joining as our newest Silver Member. Their support represents a big step toward financial sustainability for the Matrix.org Foundation.

Further, today we welcome Community Moderation Effort, Matrix Elm SDK, FluffyChat, Matrix Community Events, Polychat, and Rory&::LibMatrix as Ecosystem Members! If you couldn’t tell, there’s a lot going on in the Matrix ecosystem!

Does your community use Matrix? Does your project speak Matrix? Or does your business incorporate Matrix into your work? Show your support and become a member today.

Topping off this week’s excitement, our Governing Board nomination period is just about to start! Learn more about the elections, as well as who can nominate and how in our recent blog post.

Dept of Spec 📜

Andrew Morgan (anoa) reports

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

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

A quick call-out for a particular MSC. MSC4098: Use the SCIM protocol for provisioning is actively looking for feedback from the community. The proposal aims to work SCIM's standard endpoints into the Matrix spec. Doing so would allow industry standard tooling to be able to create/delete/modify/etc. Matrix users on a homeserver without needing to, for example, implement code specifically for Synapse's Admin API.

The impact would allow for greater interoperability between various existing services and Matrix homeservers - which seems like a no-brainer if you're aiming for wide adoption of a protocol!

If folks are interested, please leave your thoughts on the MSC linked above.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the Element

Olivier 'reivilibre' says

Hello! This week, we released Synapse 1.105.0, which has:

  • support for the stabilised MSC4010, which clarifies the interaction of push rules and account data;
  • support for the stabilised MSC3981 (/relations recursion);
  • the ability for operators of workerised Synapses to now move /pushrules off of the main process (though this will mostly be of interest to large deployments);
  • fixes for various long-standing bugs returning incorrect state in /sync; and
  • a good handful of other minor fixes and performance improvements.

Dept of Bridges 🌉

matrix-hookshot (website)

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

Half-Shot reports

Hookshot 5.3.0 becomes bigger and bolder

Hello! It's been a while since we've written an update post but I felt like this release (5.3.0) deserves one.

For those that don't know, Hookshot is the premier solution to bridging third party services like GitHub, RSS, Webhooks into Matrix. We place particular emphasis on scalability (it powers most of the Element Integrations Store apps), and in this release there is even a performance bump.

So what's in the new release? Well!

  • We've added ChallengeHound support. Challenge Hound is a paid service to collectively exercise towards a goal, and will keep track of your teams progress. Hookshot now allows you to bridge in these events. Effectively this obsoletes my old project, https://github.com/Half-Shot/matrix-challenger/.
  • The Rust porting continues. In this release we've moved encrypted storage handling into Rust. In the future we plan to phase out RSA keys with something stronger, and more suitable for our needs.
  • The documentation has been tidied up with more information on the permissions systems. We've also clearly separated the caching and queue systems in the config (previously muddled under the "Redis" banner), to hopefully make things clear.

As always, please let us know what you think in #hookshot:half-shot.uk. We've got an active support channel all feedback is good :)

Happy weekending!

Dept of Clients 📱

Fractal (website)

Matrix messaging app for GNOME written in Rust.

Kévin Commaille announces

📣 👀 Fractal 7.rc 🆕 🎉

  • Account recovery, introduced during this cycle, could lead to an unclear situation where it was still incomplete even after successfully going through the process. We added some explanations on how to solve this. Thanks to anyone who tried it in the beta and provided us with feedback!
  • After fixing a focus issue upstream in GtkListView, we got rid of more focus issues in our widgets. That should make the room history completely accessible with keyboard navigation.
  • Third party verification, that happens in a direct chat, was partly broken as the banner about an ongoing verification was not showing up anymore. The culprit was found and we took that opportunity to improve the security instructions. Along with this bugfix, a coat of polish has been applied.

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

We always welcome any help we can get, come ask for guidance in our Matrix room.

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.15. Changes since the last release include:

Additions

  • Configurable emoji picker for sending reactions. (#199, #201. Thanks to Omar Antolín Camarena.):

    • Option ement-room-reaction-picker sets the default picker. Within that, the user may press C-g to choose a different one with a key bound in ement-room-reaction-map.
  • A variety of enhancements for using compose buffers. (#140. Thanks to Phil Sainty.): Chiefly, messages can now be composed in small windows below room windows, rather than in the minibuffer or a full-sized window. A variety of options and commands are available related to these features. See compose buffer enhancements.

  • Global minor mode ement-room-self-insert-mode enables "just typing" to start a message. (Thanks to Phil Sainty.): See ement-room-self-insert-mode section.

  • Options affecting how images are displayed in room buffers.: See image display section.

Changes

  • Improve prompt used when viewing a room that is not joined. (#241. Thanks to Phil Sainty.)
  • Format "was kicked and rejoined" membership event pairs.
  • Enclose reasons for membership events in quotes for clarity.
  • Improve default room list grouping.
  • When editing or replying to a message in a compose buffer, the related room event is highlighted persistently until the compose buffer is killed. (Thanks to Phil Sainty.)
  • In compose buffers dabbrev will prioritise firstly the associated room, and secondly all other rooms, before looking to other buffers for completions. (Thanks to Phil Sainty.)
  • Aborted messages are now added to ement-room-message-history rather than the kill-ring. (Thanks to Phil Sainty.)
  • Prefix bindings in ement-room-mode-map now have named labels in which-key and similar. (Thanks to Phil Sainty.)
  • Option: ement-room-use-variable-pitch (previously named ement-room-shr-use-fonts) enables variable-pitch fonts for all message types. (This option previously supported formatted messages, but now works for plain text messages as well.) Note: users who have customized the ement-room-message-text face to be variable-pitch should revert that change, as it causes problems for formatted messages, and is no longer necessary. (#174. Thanks to Phil Sainty.)

Fixes

  • Edits to previous edit events are correctly sent to the server as edits to the original message event. (#230. Thanks to Phil Sainty.)
  • Completion at point works more reliably in compose buffers. (Thanks to Phil Sainty.)
  • Toggling images to fill the window body no longer triggers unintended scrolling. (Thanks to Phil Sainty.)
  • Recognition of mentions after a newline. (#267. Thanks to Phil Sainty.)
  • Newlines in ement-room-message-format-spec are considered when calculating the wrap-prefix. (Thanks to Phil Sainty.)
  • Weight of face ement-room-list-direct (now correctly bold in room list heading).

Compose buffer enhancements

  • Option ement-room-compose-buffer-display-action declares how and where a new compose buffer window should be displayed. (By default, in a new window below the associated room buffer.)
  • Option ement-room-compose-buffer-window-dedicated determines whether compose buffers will have dedicated windows.
  • Option ement-room-compose-buffer-window-auto-height causes dynamic scaling of the compose buffer window height so that the full message is visible at all times.
  • Option ement-room-compose-buffer-window-auto-height-min specifies the minimum window height when ement-room-compose-buffer-window-auto-height is enabled.
  • Option ement-room-compose-buffer-window-auto-height-max specifies the maximum window height when ement-room-compose-buffer-window-auto-height is enabled.
  • Option ement-room-compose-method chooses between minibuffer-centric or compose-buffer-centric behaviour.
  • Command ement-room-dispatch-new-message starts writing a new message using your chosen ement-room-compose-method. (Bound to RET in room buffers.)
  • Command ement-room-dispatch-new-message-alt starts writing a new message using the alternative method. (Bound to M-RET in room buffers.)
  • Command ement-room-dispatch-edit-message edits a message using your chosen ement-room-compose-method. (Bound to <insert> in room buffers.)
  • Command ement-room-dispatch-reply-to-message replies to a message using your chosen ement-room-compose-method. (Bound to S-<return> in room buffers.)
  • Command ement-room-compose-edit edits a message using a compose buffer.
  • Command ement-room-compose-reply replies to a message using a compose buffer.
  • Command ement-room-compose-send-direct sends a message directly from a compose buffer (without the minibuffer). (Bound to C-x C-s in compose buffers.)
  • Command ement-room-compose-abort kills the compose buffer and delete its window. (Bound to C-c C-k in compose buffers.)
  • Command ement-room-compose-abort-no-history does the same without adding to ement-room-message-history. (Equivalent to C-u C-c C-k.)
  • Command ement-room-compose-history-prev-message cycles backwards through ement-room-message-history. (Bound to M-p in compose buffers.)
  • Command ement-room-compose-history-next-message cycles forwards through ement-room-message-history. (Bound to M-n in compose buffers.)
  • Command ement-room-compose-history-isearch-backward initiates an isearch through ement-room-message-history. (Bound to M-r in compose buffers; continue searching with C-r or C-s.)
  • Command ement-room-compose-history-isearch-backward-regexp initiates a regexp isearch through ement-room-message-history. (Bound to C-M-r in compose buffers; continue searching with C-r or C-s.)

ement-room-self-insert-mode

  • Option ement-room-self-insert-commands determines which commands will start a new message when ement-room-self-insert-mode is enabled (defaulting to self-insert-command and yank).
  • Option ement-room-self-insert-chars determines which typed characters will start a new message when ement-room-self-insert-mode is enabled (regardless of whether they are bound to self-insert-command).
  • Option ement-room-mode-map-prefix-key defines a prefix key for accessing the full ement-room-mode-map when ement-room-self-insert-mode is enabled. (By default this key is DEL.)

Image display

  • Option ement-room-image-margin is the number of pixels of margin around image thumbnails.
  • Option ement-room-image-relief is the number of pixels of shadow rectangle around image thumbnails.
  • Option ement-room-image-thumbnail-height is the window body height multiple to use when toggling full-sized images to thumbnails (by default, 0.2).
  • Option ement-room-image-thumbnail-height-min is the minimum pixel height for thumbnail images (by default, 30 pixels).

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

Doug reports

  • ✨ We have a shiny new Join Room Screen to handle links to rooms that you’re not part of.
  • 🔗 Navigating to Messages from links and replies is coming along nicely (with much assistance from Rust!).
  • 🔒 Some Rust-side fixes for Encryption have landed fixing a bad race condition between the App and Notifications.
  • 🤳 Work on implementing Login with QR Code continues to progress nicely (we’re so close to seeing this work for the first time).
  • ✏️ We have re-introduced a plain text field for the message composer when the Rich Text Editor is disabled. This will provide a fix for many annoying typing bugs with various languages, input methods etc.
Today's Matrix Live: https://youtube.com/watch?v=cxJPdr8JEaM

Element X Android (website)

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

benoit reports

  • Element X Android 0.4.10 has been released and will be available in production next week.
  • We have a shiny new Join Room Screen to handle links to rooms that you’re not part of.
  • Navigating to Messages from links and replies is coming along nicely (with much assistance from Rust!).
  • Navigating to user permalink is also available on nightiles, for room member and any user
  • The invited room are now displayed in the room list with a new filter

Dept of SDKs and Frameworks 🧰

Matrix Rust SDK

bnjbvr reports

Two weeks of updates for the price of one, that's your lucky rusty day!

  • In the world of crypto-land, an important bugfix for multiple processes setups (as is the case for iOS applications handling notifications in a separate extension, wink wink ElementX iOS) has landed, which should result in fewer unable-to-decrypt (UTD) messages there.
  • It's now possible to get the preview of a room, using Client::get_room_preview(room_id). This uses the room state events at this point, but will soon support using the Room summary endpoint introduced in MSC3266 for this purpose. This is useful when displaying a screen for a room one hasn't joined, for instance.
  • A new Paginator API has been introduced as preliminary work to support deep links to events (aka "permalinks"), starting from a given event using a /context API request (for which support has been improved, by decrypting events, if needs be), followed by back-paginations and forward-paginations using the /messages API. Work is moving forward on having the UI Timeline natively support this too, introducing the new concept of a "detached" timeline mode that's centered around a single event.
  • The QR code login feature is moving along nicely, fully working end-to-end across two SDK toy programs.
  • And as usual, many new methods have been exposed to the FFI layer, bugs have been squashed (notably a few around sliding sync, notably one that caused missing chunks of messages in the ElementX apps), CI has been improved, and crabs have been revered.

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

Emma [it/its] ⚡️ reports

Not much to report on, been busy on BugMine :)

Additions

  • Starting steps of UIA
  • Ability to send HTTP requests without error handling (required for UIA)
  • Optional parameter useGeneric to HomeserverPRoviderService#GetAuthenticatedWithToken(homeserver, token, proxy? impersonatedMxid?, useGeneric?). This defaults to false.
  • Room#GetRelatedEventsAsync(eventid), returns all events that have a relation to another event

Changes

  • Room#GetEventAsync(eventid) no longer uses generic type, and returns StateEventResponse now.

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

Trixnity (website)

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

Benedict reports

Trixnity got a small bugfix release this week. It mainly fixes lazy key tracking, which is finally working and makes sync processing blazing fast again.

Matrix Dart SDK (website)

Matrix SDK written in pure Dart.

td reports

meep quick update, v0.26.0 and v0.27.0 released since the last post, here's a summary:

v0.27.0

  • Reworked how last event (used by clients for showing latest room events) is stored in the sdk. This will need a migration but should be handled automatically.
  • Switched suggested database to the new MatrixSdkDatabase.
  • Our auto generated matrix spec code (matrix_api_lite previously) now lives in the matrix dart sdk monorepo.

v0.26.0

This release adds a new state to the LoginState named softLoggedOut. Learn more about it here: https://spec.matrix.org/v1.9/client-server-api/#soft-logout

When a client is in a soft logout state, it is not yet cleared, but sync has stopped and it expects to perform a token refresh or a new login while providing the old device ID.

That's it, small note expect another breaking change soon our calls code will be merged in the near future :3 bye byee

libQuotient (website)

A Qt5 library to write cross-platform clients for Matrix

kitsune announces

Version 0.8.2 is out - the last significant 0.8.x update. Version 0.9 is already in the works, with a lot of material for it already in the pipeline, so expect the first alpha to come rather soon. From now on, Qt 5 will only be supported in 0.8.x branch - 0.9 will be Qt 6 only, and also require modern toolchains - with full-blown ranges support, elements of C++23 and all such.

Dept of Bots 🤖

Draupnir

Gnuxie 💜🐝 says

Draupnir dubiously released v2.0.0-beta.1 (proceed with caution).

Draupnir is a Matrix moderation bot and protection platform, with backwards compatibility with Mjolnir. If you are unfamiliar, you should checkout the latest stable release first.

The main change is a rewrite of the core to use MPS (the matrix-protection-suite, still pre-alpha). MPS's architectural differences should provide a noticeable improvement to Draupnir's responsiveness. A room state backing store has also been added to improve startup time for instances that run against slow servers or a large set of protected rooms, details are below.

What's Changed

  • Draupnir now uses MPS (matrix-protection-suite) to provide its core functionality.
  • Draupnir no longer requests components of room state when applying various actions, which should lead to a huge noticeable difference to Draupnir's responsiveness.
  • An optional RoomStateBackingStore has been added to improve startup time for instances that run against slow servers (e.g. matrix.org). Checkout the config description for it here.
  • New protections MemberBanSynchronisationProtection, ServerBanSynchronisationProtection, RedactionSynchronisationProtection, and PolicyChangeNotification.
    • These replace the core functionality for applying policies related to users, servers and redactions.
    • They will be enabled by default when you upgrade.
  • config.disableServerACL will disable the ServerBanSynchronisationProtection.
  • The joins, since, default, sync, protections status commands have all been removed for now.
  • The DetectFederationLag protection has been removed.
  • We have new contributing documentation.

Upgrade steps

There are no manual upgrade steps, the new protections are automatically enabled. The only thing you should note is that if you notice that Draupnir is slow to startup, then you should enable the room state backing store

⚠️ Some configuration options may no longer be functioning (alternatives are pending)

  • config.noop will do nothing.
  • config.protectedRooms will also do nothing, and protected rooms need to be configured using !draupnir rooms add/remove.

You can read the full set of changes here, and of course, you can find us in our support room #draupnir:matrix.org.

Dept of Interesting Projects 🛰️

BugMine

Emma [it/its] ⚡️ announces

Matrix-based issue/bug tracker, based on Rory&::LibMatrix

Existing issue trackers are closed-source, only work in combination with their own platform, or are complicated to set up. Let's fix all of those!

BugMine is a simple(ish) solution to that problem, by offering a simple to deploy solution that requires nothing but a matrix server (bring your own account), and a web server that can handle URI fallbacks for the web app (native clients are planned long-term). A CLI client is also planned long term, so you can do a similar level of integration to Github's CLI. There's also support planned for posting patches (commonly known as Pull Requests or Merge Requests). All functionality is provided in an easy to use SDK as well!

Keep in mind the project is still in a very early stage: we're still sketching out how we plan to handle issues/tickets! (And how to support any homeserver implementation besides Conduwuit...)

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, anything! Perhaps, bots, custom front-ends, ...?
  • Discussion, suggestions and ideas are welcome in #bugmine:rory.gay

Matrix in the News 📰

HarHarLinks says

Fedora published a nice article about Matrix

https://fedoramagazine.org/fedora-chat-your-gateway-to-matrix/

Matrix Federation Stats

Aine announces

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

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

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1doctoruwu.uk262
2spritsail.io262
3maunium.net287
4nerdhouse.io300
5girlboss.ceo309
6uwu.sulian.eu318
7catvibers.me319
8aguiarvieira.pt424
9rom4nik.pl463
10puppygock.gay482

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1uwu.sulian.eu117
2doctoruwu.uk119
3girlboss.ceo139.5
4spritsail.io163
5aguiarvieira.pt166
6puppygock.gay184.5
7furry.lol191
8jpeg.city207
9nerdhouse.io208.5
10matrix.its-tps.fr239

That's all I know ?~_~O~A

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

🔲 ☆

This Week in Matrix 2024-04-12

Matrix Live

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

Dept of Status of Matrix 🌡️

Josh Simmons says

Important deadline: next week, the week of April 15th, is the last week to become a member before the Governing Board nomination period! You must be a member, or have your application in and approved, by the end of day on April 19th (AOE time) in order to be eligible to nominate. Stay tuned for a blog post all about that on Monday ✨

This week we’re proud to welcome GNOME and KDE e.V. as our second and third Associate Members, and there are more applications in the pipeline that we’re reviewing!

Dept of Spec 📜

Andrew Morgan (anoa) reports

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

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

Spec Updates

A few MSCs working their way through the process this week, alongside a few more in FCP! As mentioned previously, Trust & Safety is a big focus for the MSC process this week, as we invest some time in keeping Matrix a nice place to be.

Outside of that though, I'm particularly excited to see support for formatting of math landing in the spec (MSC2919). That's been a long-time coming, and will be very helpful to math or math-adjacent communities using matrix (machine learning, anyone?).

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Andrew Morgan (anoa) says

This week Element released Synapse v1.105.0rc1, a release candidate for the next version of Synapse. Of note are stabilisation for a few previous-unstable features such as /relations recursion, as well as moving /pushrules endpoints off workers for better scalability.

There was a small round of bugfixing as well that went into this pre-release, but there are likely more lurking! If you're able to, please test this release candidate. The full release of Synapse v1.105 is expected early next week. Thanks!

Dendrite (website)

Second generation Matrix homeserver

Till reports

Just going to copy and paste this from #dendrite-alerts:matrix.org :

Dendrite 0.13.7 has been released!

Fixes

  • Fixed an issue where the displayname/avatar of an invited user was replaced with the inviter's details

  • Improved server startup performance by avoiding unnecessary room ACL queries

    • This change reduces memory footprint as it caches ACL regex patterns once instead of for each room
    • Unnecessary Relay related queries have been removed. Note: To use relays, you now need to explicitly enable them using the federation_api.enable_relays config
  • Fixed space summaries over federation

  • Improved usage of external NATS JetStream by reusing existing connections instead of opening new ones unnecessarily

Features

  • Modernized Appservices (contributed by tulir)
  • Added event reporting with Synapse Admin endpoints for querying them
  • Updated dependencies

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

Ștefan reports

Happy friday, folks! It's been a super busy week in Element X land:

  • version 1.6.2 made it to the store, bringing with it a bunch of bug fixes and the groundwork for new and exciting features (release notes)
  • moderation options are now finished and enabled by default 1, 2
  • we will (soon™) start showing invites directly in the room list
  • we're making great progress on Login with QR Code 1, 2, 3 and 4
  • and the same on supporting Permalinks and in-app navigation 1, 2, 3, 4 and 5

'till next week! 👋

Element X Android (website)

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

benoit announces

  • Element X Android 0.4.8 is available on the PlayStore, for testers. “Room moderation” feature has been enabled. Moderators and administrators now have more moderation actions available in their rooms. This release will be pushed to production on Monday.
  • The team is actively working on 2 big features: permalink navigation and login using QR code.
  • We will also iterate on the room invite list, we will move the invites to the room list, with a new Filter to display only invites.

Dept of SDKs and Frameworks 🧰

Elm SDK beta 3.0.0

Bram says

After having written a few short pieces, multiple discussions in #matrix-spec:matrix.org and reaching out to various members of the community, the Elm SDK has finally a new update. And it's a major one!

  1. There is finally a functional Timeline type that is an immutable representation of the Matrix timeline. This took months to complete.
  2. A new Matrix.User module has been exposed.
  3. The sender field in Event type now returns a User instead of a String.

Surprisingly, it is the last change that makes the update major, as that's the one that breaks backwards compatibility. I spent months working on something that would not have been more than a patch update on its own. 😓

Nevertheless, it's out now on the public Elm registry! If you're not an Elm programmer, please give me feedback on the new User documentation page as I aim for it to be simple to understand for starting Elm programmers who know nothing about Matrix. Your feedback would be very welcome in the #elm-sdk:matrix.org room. ❤️ Thanks!

Dept of Interesting Projects 🛰️

Acter

ben reports

This week's update has several updates and fixes since the last time we posted about it here. Among other things, we have revamped the UI flow for Calendar Events, making it a much smoother experience, added participants icons to it, as well as Attachments and Comments. On the Chat side you can now bookmark and filter by DMs and bookmarks, and with the new App User Drawer you can directly switch to an existing or create a new DM, block, kick and kick-ban the user from the room. Next to several fixes we've also re-introduced localization and language switching support with a tight integration into weblate for easy web-based community-driven translations.

Of course this release again comes with a "What's new & AMA" Zoom sessions next week, Tuesday 15th 9:30GMT anyone is invited to join. Zoom Link here, iCal of the Event here

Matrix Dart SDK (website)

Matrix SDK written in pure Dart.

td reports

weekend project: came by https://blog.cloudflare.com/cloudflare-calls-anycast-webrtc yesterday and thought it would be cool if we MatrixRTC calls could use the Cloudflare SFU as an alternative to the current Livekit SFU.

and mwhahah- there's a implementation now, this also gave td some fancy ideas on how to handle different SFUs easily in the spec and not have clients break stuff because of different client library implementations. Apart from that, just having a huge global infrastructure like Cloudflare providing you a SFU just sounds cool! It even does stuff like cascading and choosing the closest SFU based on BGP internally so users are not limited to just one SFU and have the lowest latency. (see blog post linked above for the technical details)

The Cloudflare SFU unfortunately is neither open source nor free afaik and the blog mentions:

To kick off its open beta phase, Calls is available at no cost for a limited time. Starting May 15, 2024, customers will receive the first terabyte each month for free, with any usage beyond that charged at $0.05 per real-time gigabyte. Beta customers will be provided at least 30 days to upgrade from the free beta to a paid subscription. Additionally, there are no charges for in-bound traffic to Cloudflare.

so don't see any clients using this anytime soon, but was fun and just proves how easy and modular the new MatrixRTC structure is :D

Implementations:

td announces

the very adhoc state event looks like this:

Matrix Federation Stats

Aine says

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

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

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1doctoruwu.uk241
2maunium.net284.5
3uwu.sulian.eu316.5
4nerdhouse.io317.5
5aguiarvieira.pt354
6craftingcomrades.net464
7herkinf.de503
8pain.agency516
9matrix.its-tps.fr518
10synapse.rntpts.de545

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1doctoruwu.uk88.5
2uwu.sulian.eu116
3spritsail.io136
4dendrite.s3cr3t.me172
5matrix.its-tps.fr174.5
6shiftsystems.net227
7girlboss.ceo293
8craftingcomrades.net300
9matrix.org360
10littlevortex.net392

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-03-29

Matrix Live

No Matrix Live as your usual host Thib has been unavailable most of the week!

Dept of Status of Matrix 🌡️

Josh Simmons says

Our first ever Governing Board elections are approaching, with the nomination period set to begin in late April. If you want your organization or community to be able to nominate a candidate, or to vote in the election, the time to join as a member is now – same for individuals who want to participate!

This week we’re thrilled to announce three new members: two Ecosystem Members, Trixnity and Nheko-Reborn, and our first Platinum Member, Element!

Dept of Spec 📜

Andrew Morgan (anoa) [UTC-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:

  • No new MSCs were created this week.

MSCs in Final Comment Period:

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

A reminder to teams working on Matrix 2.0 features to update their MSCs and send them for review in #sct-office:matrix.org soon to help bring them closer to release in the next couple of quarters.

Thank you to Kévin, Johennes and Rich for their PRs to the spec text this week!

Random MSC of the Week

The random MSC of the week is... MSC4018: Reliable call membership!

This proposal makes the case for putting the onus on homeservers for tracking whether a user is in a Matrix voice/video call, rather than relying on clients. Currently, clients must update the user's m.call.member state event in the room when they join/leave a call. This can be problematic if a user closes their client without giving it a chance to do so however (such as when a browser is force-quit). This can lead to other clients thinking the client is still in the call, when it left minutes ago!

A homeserver typically continuously remains online. If it were in charge of tracking call membership, then it could notice that a user's device has disconnected from all call streams, and could then update the m.call.member state event in the room itself for that user.

The MSC also proposes two new Client-Server API endpoints which instruct the homeserver to either add or remove a device from the user's m.call.member state event. This would prevent two clients attempting to update the state event at the same time, potentially resulting in the modification of one of the clients being lost.

The intention is that this would lead to more reliable Matrix voice/video calls! If any of that sounds interesting to you, please have a look and leave your thoughts on the MSC.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Andrew Morgan (anoa) [UTC-5] announces

This week the team released Synapse v1.104.0rc1, in preparation for the full release of v1.104.0. It contains improvements to OIDC support, as well as a few fixes for various bugs and to the Synapse Docker image.

Please test the release candidate if you're able to!

Dept of Clients 📱

iamb (website)

A Matrix client for Vim addicts

ulyssa reports

I've released and published iamb v0.0.9! 🎉 Since its last version, the client has gained support for:

  • Image previews through several different terminal image protocols
  • Threads, unread indicators, and notifications via terminal bell or desktop environment
  • Customizing keybindings, sorting for room and member lists, and other parts of the UI
  • Commands for importing and exporting room keys
  • Updated to use v0.7.x of the matrix-rust-sdk
  • SSO login, TOML configuration, fixes for Windows Terminal, improved manual pages, and many other fixes and improvements!

The online documentation has been updated to account for new configuration options and commands, and you can read the GitHub releases page for a full list of changes. I've also added a PACKAGING.md file to the repository to provide a place for notes useful to package maintainers.

Many thanks to all of those who have contributed to this release! :pray:

SchildiChat (website)

SchildiChat is a fork of Element that focuses on UI changes such as message bubbles and a unified chat list for both direct messages and groups, which is a more familiar approach to users of other popular instant messengers.

SpiritCroc reports

SchildiChat Next, our fork of Element X for Android, received some new experimental settings for managing your chat overview. You can now:

  • Sort favorite chats on top
  • Sort low priority chats on bottom
  • Filter by DMS/groups, unread chats, favorites, and rooms not added to any space, via dedicated pages from our bottom space navigation

Furthermore, you can now send freeform reactions again, if you want to react to messages with arbitrary text or just want to use your keyboard's emoji picker instead of the app's inbuilt picker.

Fractal (website)

Matrix messaging app for GNOME written in Rust.

Kévin Commaille reports

Spring is here in Fractal land. Birds chirping, flowers blooming, and a new beta for you to try!

Staff’s picks for Fractal 7.beta:

  • Encryption support has been extended, with server-side key backup and account recovery.
  • Messages that failed to send can now be retried or discarded.
  • Messages can be reported to server admins for moderation.
  • Room details are now considered complete, with the addition of room address management, permissions, and version upgrade.
  • A new member menu appears when clicking on an avatar in the room history. It offers a quick way to do many actions related to that person, including opening a direct chat with them and moderating them.
  • Pills are clickable and allow to directly go to a room or member profile.
  • Many more improvements on the accessibility front, for better navigability with a screen reader.

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

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

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

As always, you can try to fix one of our issues. Any help is greatly appreciated!

Element X Android (website)

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

benoit announces

  • Element X Android 0.4.7 is available on the PlayStore, for the tester. 2 features have been enabled "Room List filters" which let the user filter the rooms and "Mark as unread”. More details in https://github.com/element-hq/element-x-android/releases/tag/v0.4.7
  • This week we’ve done some preparatory work to support permalink navigation. In the meantime, the Rust team is actively working on exposing new API to support this feature.
  • Also working on a troubleshoot notification screen, as per what was done on Element Android. We will also work on adding a way to switch between available PushProviders in the coming week..
  • Last note: it will be more obvious that a poll is closed in the timeline, thanks to an enlightenment of the winning answer.

Dept of Non Chat Clients 🎛️

Circles (website)

E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.

cvwright announces

Circles is a secure social network app for families and friends, where every post is protected with Matrix's E2E encryption. We have recent releases of Circles on both Android and iOS.

On Android, v1.0.27 is now available on F-Droid.org and in beta on the Play Store. New features in this release include:

  • Improved email address management
  • Re-designed People tab to help you connect with friends of friends
  • Support for recovering your account when you forgot your password
  • UI for configuring the default power level in each room

On iOS, v1.0.1 is now available in the App Store, featuring:

  • New support for push notifications
  • Cross-signing for an account's 2nd/3rd/etc devices
  • Several bug fixes

Source code is available from the FUTO Gitlab (Android | iOS) and from our Github mirrors (Android | iOS).

If you're interested in trying the app, stop by and say "Hi" in #circles:futo.org.

Dept of SDKs and Frameworks 🧰

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

Emma [it/its] announces

Some rough changes that haven't been published yet, I'll have to work out the kinks first ^^

Changes

  • Rewrote client and server well known resolvers (currently broken if passing a full URI)
  • Added JsonSerialiserOptions to StateEvent.RawContent in order to remove nulls (oops ^^')
  • HSE: Small rewrite to reading of auth data, to deduplicate a lot of code
  • HSE: improved logic for detecting if a sync response is empty
  • HSE: now reports supporting all room versions over /capabilities (Element still won't shut up :c)

Additions

  • HSE: logging out has been implemented
  • HSE: Importing of external matrix accounts using nheko's config file format
  • HSE: Importing of external matrix rooms over client-server API (see previous)
  • HSE: fetching media from other homeservers
  • HSE: incremental sync! (at least for joined rooms)
  • HSE: /messages endpoint
  • HSE: /event/:id endpoint
  • HSE: estimation of position in time based off of pagination/sync tokens, and event IDs
  • HSE: chat commands for utility interaction (!hse x y z)
  • HSE: shorthand for calculating final state from a section of timeline (not state res!)
  • HSE: Support for read markers (top level only)
  • HSE: Added shorthand to get all rooms by member mxid, with membership

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

Matrix Rust SDK 🦀

bnjbvr announces

It's been a quiet week, with the team merging the LinkedChunk data structure for efficiently storing events in the EventCache, a few bugfixes here and there, as well as a full investigation and fixing issues in integration tests.

The team keeps on working on the event cache (including matching known events against new events received from servers, and prepping for caching on disk) as well as the QR code login feature.

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict reports

I added support for Matrix 1.10 in Trixnity 4.3.0 this week. Changes since last TWIM:

features:

  • Matrix 1.10
  • move all room list calculation logic into RoomListHandler making it a lot faster due to less database operations
  • BREAKING: naming of files saved by client-media-okio has been changed. This means, that files may need to be redownloaded

bugixes:

  • fix, that sending keys to new members of an encrypted room may not have been triggered
  • handle redacted event in RoomEventEncryptionService

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi says

Thanks to Aine of etke.cc, matrix-docker-ansible-deploy now uses KeyDB (a drop-in Redis alternative), instead of Redis.

The playbook used to install Redis (and now installs KeyDB in its place) if services have a need for it (enabling worker support for Synapse, enabling Hookshot encryption, etc.) or if you explicitly enabled the service (redis_enabled: true or keydb_enabled: true).

This change is provoked by the fact that Redis is now "source available". According to the Limitations of the new license (as best as we understand them, given that we're not lawyers), using Redis in the playbook (even in a commercial FOSS service like etke.cc) does not violate the new Redis license. That said, we'd rather neither risk it, nor endorse shady licenses and products that pretend to be free-software. Another high-quality alternative to Redis seems to be Dragonfly, but the Dragonfly license is no better than Redis's.

To learn more, refer to our changelog entry.

Slavi announces

Thanks to Julian Foad, matrix-docker-ansible-deploy can now install the Pantalaimon E2EE aware proxy daemon for you. It's already possible to integrate it with Draupnir to allow it to work in E2EE rooms - see our Draupnir docs for details.

See our Setting up Pantalaimon documentation to get started.

Dept of Bots 🤖

Gnuxie 💜🐝 announces

Draupnir v1.87.0 was released, and this will be the final release before we merge our 6month in the making rework of the Draupnir core. We are advising anyone running against gnuxie/draupnir:develop to instead pin to gnuxie/draupnir:v1.87.0 as there is going to a significant drop in user experience as we integrate and gather more feedback on the rework. Those running against gnuxie/draupnir:latest will be unaffected, but we will advise you to read the v2.0.0 release notes as there will be dramatic changes in behaviour. If you're a confident system admin and you're happy with manually intervening then by all means continue to use develop and come talk to us in #draupnir:matrix.org.

Dept of Events and Talks 🗣️

Matrix User Meetup Berlin

saces announces

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

Have you seen the weather forecast? Finally we can stop pretending to be interested in matrix and meet up for BBQ again :)

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.

And don't forget to wish you brougth your favorite item :)

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

Matrix room: #mumb:c-base.org

Dept of Interesting Projects 🛰️

Octoprint plugin

Cadair reports

I have for the first time in years pushed a release of my octoprint plugin which sends matrix notifications about the status of your prints with images. Thanks primarily to @Links2004 we now properly handle image transformations, upload images in a background thread and don't send markdown in the plain text body of the matrix message. If you run into any issues please open an issue on the github repo.

Moderator Tools for PubHubs

JulianF announces

This week I have put up a web site documenting my work on Moderator Tools for PubHubs.

PubHubs is a Dutch research project to enable citizen-facing organisations to provide online group communications, value-aligned with their real-world presence. It uses matrix protocol, combined with an interesting and different user identity model involving pseudonyms and selective cryptographic disclosure of identity attributes such as "is over 18" or "is a member of organisation X". Each hub is built around a non-federating Synapse server, with their own identity plugins and custom client. (All public-interest, open-source.)

I have been working on three aspects of introducing initial moderation tooling. Some of it crosses over with general matrix (this week's Pantalaimon role is a side product of the Draupnir part), while some is different (Attribute Disclosure), and the third part is general (research and planning for Civilised Discourse).

My funded stint is coming to an end and I am looking for ways to continue in any related area of work -- please matrix me @julian:foad.me.uk !

Dept of Guides 🧭

Matrix Codebrowser

Loren says

Some of you may be familiar with https://codebrowser.dev already. For those of you who aren't, it's a tool that parses compiled code in C++, Rust, or Dart and displays it as a webpage with full syntax highlighting, clickable links to symbols, searchable symbols, and a wealth of other features. It's very useful for browsing a library's source code to see what individual functions do (for example, here's QObject::connect() from Qt 6). The codebrowser software was originally built by Woboq, but as the maintainers have moved on to work on things like Slint, they have passed it on to KDAB.

I have spun up an instance of codebrowser at https://matrix.codebrowser.lorendb.dev, serving sources for mtxclient, libQuotient, and olm so far. If you want to see more projects added, please let me know and I'll add them if possible. I'm focusing on libraries for now, as they are the most useful for developers, but I'm not opposed to adding other Matrix projects either.

Please note that I currently can't support Rust or Dart code yet; while KDAB has implemented support for those languages, they haven't yet open-sourced their changes (though I can confirm that is tentatively in the pipeline). Once they open-source their changes, I'll be upgrading my installation to use that version and adding project like matrix-rust-sdk and vodozemac.

If you have any questions or feedback, come say hi in #matrix-codebrowser:nheko.im!

Matrix Federation Stats

Aine announces

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

As of today, 9531 Matrix federateable servers have been discovered by matrixrooms.info, 2844 (29.8%) of them are publishing their rooms directory over federation. The published directories contain 161695 rooms (gitter.im rooms are back)

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
1fostered.uk229.5
2aguiarvieira.pt239
3maunium.net272
4075-141-169-120.res.spectrum.com:8447275.5
5nerdhouse.io299
6herkinf.de374
7transfem.dev391
8fx3.eu507.5
9pain.agency533
10littlevortex.net551.5

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1aguiarvieira.pt156
2075-141-169-120.res.spectrum.com:8447162.5
3nerdhouse.io164
4fostered.uk185.5
5spritsail.io192.5
6transfem.dev200
7herkinf.de244
8doctoruwu.uk247
9daedric.net274.5
10craftingcomrades.net302

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-03-22

Matrix Live

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

Dept of Spec 📜

Half-Shot announces

Great news everyone! As of Matrix 1.10, you can now specify more contact information about your homeserver via the new /.well-known/matrix/support endpoint.

This is useful because it allows other citizens of the federation to know who to contact if there is a problem, and it only requires you to fill in a few details to get going. This change has been on the go since 2019, so on a personal note I am thrilled to see this finally land. You can see an example on the foundation's very own server at https://matrix.org/.well-known/matrix/support

TravisR announces

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

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

We released version 1.10 of the spec today! Read the blog post for the full details. Many thanks to Kévin Comaille for writing many of the spec PRs that landed in today's release!

With the release of Matrix 1.10, we on the Spec Core Team are looking forward to Matrix 1.11 and Matrix 2.0. We are asking the teams working on Matrix 2.0 features to update their MSCs and send them for review in #sct-office:matrix.org soon to help bring them closer to release in the next couple of quarters.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Olivier 'reivilibre' says

This week we released Synapse 1.103.0, which includes a bug fix to lock-ups when joining some very large rooms, a bug fix to joining remote rooms when certain types of modules are installed as well as support for the Retry-After header (MSC4041) and a small handful of other things.

Other than that, we have been gradually working through the backlog of pull requests — thanks for sending those in and sorry for the delay! See you next week.

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

Ștefan reports

Element X iOS version 1.5.12 is now available on the AppStore:

  • It's now possible to favourite a room so that you can keep track of the groups and the people you like to chat with the most.
  • If you read a room but you would like to come back to it later, you can now mark it as unread, making it similar to any room with unread notifications.
  • At the same time, if you feel a room's recent activity isn't interesting and you don't want the green badge on it, just mark it as read.

However these three amazing features are now also supported by another amazing quality of life feature, which is... drum roll ..filters! Is now possible to filter the room list by DMs (People), groups (Rooms), favourites, and unread, and any combination of these, allowing you full customisation over the content of the room list.

Meanwhile, on the normal development track, we've completely revamped our user onboarding flow and session verification is now mandatory either by entering the recovery key or by running the interactive emoji flow against an existing session. The new moderation options are close to making an appearance and we've improved overall error tracking and analytics.

Element X Android (website)

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

ganfra reports

Element X Android version 0.4.6 is now available on the PlayStore:

If you read a room but you would like to come back to it later, you can now mark it as unread, making it similar to any room with unread notifications. At the same time, if you feel a room's recent activity isn't interesting and you don't want the green badge on it, just mark it as read.

Room list filters and mark room as favourite are also finished, and will probably be enabled in the next release.

It'll be possible to filter the room list by DMs (People), groups (Rooms), favourites, and unread, and any combination of these, allowing you full customisation over the content of the room list.

We are also making progress on the room admin features.

Dept of SDKs and Frameworks 🧰

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

Emma [it/its] announces

Mainly homeserver emulator updates, with some bot SDK changes aswell :)

Changes

  • Made StateKey optional in events (given they may be null for non-state events)
  • Removed Event parameter from EventIdResponse constructor
  • HSE: work on partial sync, removed StatePosition because it doesn't make sense
  • HSE: Room internals: Abstract call to rebuild room state to dedicated function (so it can be called on load)
  • HSE: Room internals: Try to fix state rebuilding
  • Bot SDK: Use table for help command
  • Bot SDK: Cleaned up command parser

Additions

  • Added width and height to FileInfo in messages
  • Added UploadFile with byte arrays rather than streams to AuthenticatedHomeserver
  • HSE: Add sending events in, and leaving rooms
  • HSE: Add GET .../devices
  • HSE: Room internals: Add JoinedMembers accessor
  • Added table support to MessageBuilder

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

matrix-rust-sdk (website)

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

bnjbvr announces

  • It's now possible to send media with captions using the SDK, thanks to @surakin!
  • Support for searching in the Room directory has landed in the SDK 🥳
  • The UI Timeline now uses a different algorithm to insert day dividers, which ought to be super robust and well-tested; this should prevent double day dividers in embedders of the SDK like the ElementX apps.
  • More work is being done on the Linked Chunks data structure, used to represent series of room events in the Event Cache. Actual integration in the Event Cache is looming.
  • As we investigate more unable-to-decrypt (UTD) events, more logs have been added in multiple places, the crypto crate tests got improved, and a few bugs related to key backups have been already fixed.
  • Work on login via QR code for OIDC sessions is ongoing 👀
  • We now have a CI check for the minimum supported Rust version that's used for the SDK. The new MSRV for the project is Rust 1.76.
  • And your usual load of small changes/refactorings/bugfixes: Ruma has been updated to the latest version to support time on wasm; new functions have been exposed to the FFI layer for use in other languages; dependencies have been updated, and so on…

Matrix Federation Stats

Aine says

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

As of today, 9546 Matrix federateable servers have been discovered by matrixrooms.info, 2855 (29.9%) of them are publishing their rooms directory over federation. The published directories contain 22719 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
18447280
2nerdhouse.io263
3075-141-169-120.res.spectrum.com:8447269
4herkinf.de272
5aguiarvieira.pt291
6matrix.its-tps.fr404
7transfem.dev430
8shema.lv578.5
9pain.agency597.5
10computerlie.be607

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
18447218
2matrix.its-tps.fr116
3aguiarvieira.pt144
4nerdhouse.io154
5075-141-169-120.res.spectrum.com:8447154.5
6dendrite.s3cr3t.me191.5
7herkinf.de205
8transfem.dev210
9spritsail.io229
10inu.is230

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-03-15

Matrix Live

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

Dept of Status of Matrix 🌡️

Josh Simmons reports

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

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

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

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

Thib announces

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

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

Dept of Spec 📜

Andrew Morgan (anoa) says

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

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

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

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

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

Random MSC of the Week

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

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

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Andrew Morgan (anoa) announces

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

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

...and more!

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

Dept of Clients 📱

Element X iOS (website)

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

Mauro Romito announces

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

Element X Android (website)

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

benoit announces

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

Beeper (website)

All you chats in one app.

tulir says

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

Dept of SDKs and Frameworks 🧰

Matrix Rust SDK

bnjbvr announces

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

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

Emma [it/its] reports

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

Changes

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

Additions

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

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

Dept of Events and Talks 🗣️

Netzpolitischer Abend

HarHarLinks reports

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

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

Andy's Matrix bot live stream

andybalaam announces

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

Dept of Interesting Projects 🛰️

Gregor announces

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

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

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

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

Matrix Federation Stats

Aine announces

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

As of today, 9473 Matrix federateable servers have been discovered by matrixrooms.info, 2816 (29.7%) of them are publishing their rooms directory over federation. The published directories contain 20025 rooms.

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1maunium.net247
2nerdhouse.io291
3075-141-169-120.res.spectrum.com:8447343
4aguiarvieira.pt346
5plocki.org420
6chatinamatrix.xyz474
7ilmari.org476
8matrix.netho.tk537
9littlevortex.net646
10rom4nik.pl678.5

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1dendrite.s3cr3t.me154
2aguiarvieira.pt182
3pain.agency204.5
4matrix.its-tps.fr216
5spritsail.io235
6transfem.dev367
7inu.is439.5
8matrix.org524.5
9herkinf.de601
10doctoruwu.uk672

That's all I know

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

🔲 ⭐

Why the Matrix.org Homeserver Exists?

Matrix self-defines as the go-to protocol for "open, secure, decentralised communications". The Matrix.org Foundation defines "maximising […] the number of online servers in the open federation" as a key objective in its mission. So why is the Matrix.org homeserver, probably the largest homeserver in the whole federation, still in open registration mode?

Let's dive into the technical, and user experience choices behind it.

A point of centralisation

The Matrix protocol is heavily decentralised. It goes beyond just federation: every single server in a room maintains a local copy of that room in sync with all the other servers participating in the conversation.

Matrix is often compared to email but for instant messaging. The first thing that comes to mind is that email might be federated, but it's no longer that decentralised. According to this article on sellcell.com, Gmail.com provides nearly 50% of the active email accounts in 2023, iCloud follows with 27.8%, and Outlook.com owns 13.1% of them.

The Matrix.org Foundation doesn't want to become the Gmail.com or Outlook.com of Matrix. It doesn't generate any revenue from its users and runs on donations. The costs of hosting, maintenance and support of the Matrix.org homeserver grow with the number of people using it.

A steep and steady growth comes with three significant issues:

  1. The technical maintenance costs do not grow linearly with the number of users. The infrastructure itself costs more, but more time needs to be spent on research and development to make the backend scale.

  2. Moderation becomes more difficult. The more reports the Trust & Safety team has to handle, the less time it can spend on tools to improve the moderation experience.

  3. Support can't be automated and is very costly to scale. The more users on Matrix.org, the less responsive the support team can be (unless we find resources to hire more support team members) and the more frustrating it is for everyone involved.

In short: everyone stands to benefit from Matrix.org not being a supermassive homeserver that is difficult to leave.

Mindfulness of others

One of the goals of the Matrix.org Foundation is to maximise the number of Matrix users in the open federation. Another goal is to make sure Matrix remains decentralised by increasing the number of servers in that same open federation.

One of the fundamental aspects that makes Matrix appealing is decentralisation and (open) federation. Those concepts are not as difficult for the general public to understand as some claim. But we must acknowledge the general public is not regularly confronted with them and their implications when trying new apps.

For Matrix to gain traction outside of technical circles, it needs to be mindful of the time and habits of the general public. Whether we like it or not, people are used to trying apps, not protocols or providers. It is not reasonable to ask a user to pick a homeserver before they even know what a homeserver is, nor what this decision entails. People need to be able to download an app, try it right away, and get some (potential) value from it before making more advanced decisions.

We have made Matrix.org one of the most prominent entry points for people discovering Matrix because we believe inclusivity is one of the fundamental premises of Matrix's global success.

So then, how do we reconcile the need for ease of adoption with the goal of decentralisation?

A way in and a way out

Creating an account on Matrix.org is a typical first step in the Matrix user journey. Since agglomeration around a single instance is against the goals of Matrix and its Foundation, users need to have a way out and incentives to move.

To move to another homeserver, a user needs to be able to pick a homeserver and move there.

Picking a homeserver

Matrix community member Austin Huang created servers.joinmatrix.org to list all the servers with open registrations where people could find a new home. I am working on creating an official and curated version. We need the instance picker to work on Matrix.org's website, and provide data that the client apps can reuse and present to users who want to move away from Matrix.org.

Moving to the new homeserver

The Foundation will implement an account migration tool to allow people to migrate to another server. A proper portable identity mechanism would be better - however, the Foundation had to pause its development due to a lack of funding. Such a mechanism would also rely on a new room version. It would only allow migrating conversations that happened after a room upgrade to that hypothetical new version, which results in data loss.

The most reasonable solution

There are alternatives to a prominent onboarding homeserver like the Matrix.org homeserver. We don't find any of them satisfactory:

  • Picking a server randomly when a user wants to sign up in the app is confusing and has a lot of security implications. This is not acceptable.
  • Forcing the user to choose a server when they sign up is a highly cumbersome process that does not respect the user's time and resources.
  • Portable identities are very desirable but will take time to materialise.
  • P2P Matrix depends on a portable identity mechanism and is further away in the future.

As you can see, we at the Foundation need to strike a balance as we pursue goals that are occasionally in tension with one another, and the Matrix.org homeserver is a prime example. We are committed both to making Matrix more accessible, and to doing the work to decenter the Matrix.org homeserver.

You can help us achieve both: the Foundation needs your support! If you can afford to, please consider supporting us financially. If you want to contribute to the Foundation’s governance, consider becoming a member.

🔲 ☆

This Week in Matrix 2024-03-01

Matrix Live

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

Dept of Status of Matrix 🌡️

Josh Simmons announces

This week Thib published the second installment in our roadmap blog post series: Opening up the Foundation. This post dives into the work we’re doing this year to increase community participation and open governance, looking even beyond the Governing Board to things like office hours, working groups, and fiscal sponsorship.

If you missed the first post in the series, check it out: A roadmap and appeal for help from The Matrix.org Foundation.

We’re grateful for the level of support we’ve received as we share more about the Foundation’s financial needs and the work we are doing in service of the ecosystem. Many dozens of individuals have donated and joined as Individual Members, and we’ve more than doubled the number of organizational members! Huge thanks to Beeper, Fairkom, Famedly, Fractal Networks, Gematik, IndieHosters, and XWiki.

We still have a long way to go, and critically we need larger organizations to step up to the plate, but the early results are encouraging. Onwards and upwards! 🚀

Matthew reports

There's a huge number of Matrix projects active in the German public sector, and the team at Element has had a go at mapping them out and providing a guide to what's going on, how they relate to each other, and to generally try to explain why Germany is the leading country for digital sovereignty - including self-sovereign secure communication with Matrix: https://element.io/matrix-in-germany

Dept of Spec 📜

Andrew Morgan (anoa) says

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

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Update

Once again, a general call for help for folks to write up some spec PRs - aka turning our current list of accepted MSCs into actual PR against the spec itself.

Huge thanks to @zecakeh for writing several of these over the past week. The number left is dropping rapidly! Likewise to others that have been sending general fixes and updates to the spec as well.

If that sounds like something you'd like to help out with, even if you've never touched the spec before, please consider writing one up! You can see examples of Spec PRs here, and can join #matrix-docs:matrix.org for help 🙂

Random MSC of the Week

The random MSC of the week is... MSC2872: Move the widget title to the top level of the definition!

This is a very simple maintenance MSC which moves the "title" property from within the "data" property to the top-level of a widget definition (a m.widget state event). The reasoning is simply that the "name" property is also top-level in the widget definition, and it makes sense to put those by each other.

Dept of Servers 🏢

MTRNord says

ejabberd seems to now support Matrix federation https://www.process-one.net/blog/ejabberd-24-02/

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Andrew Morgan (anoa) announces

The final release of Synapse v1.102.0 was delayed this week while the team had limited bandwidth, sorry! Expect a release next week at the usual time.

Dept of Clients 📱

nannanko says

kazv v0.1.0 has been released.

kazv v0.1.0 adds a lot of features, fixes some bugs. We believe kazv has all the basic features that a matrix client and instant messaging app should have.

Full Changelog

Added

Fixed

Removed

Neochat (website)

A client for matrix, the decentralized communication protocol

Tobias Fella reports

NeoChat 24.02 was released

This week, we have released version 24.02 of NeoChat. On a technical side, the most notable change is the migration from Qt5 to Qt6, though as an end user, you shouldn't notice a significant difference here. On the feature side, this release brings massively improved support for spaces and in-app account registration and deactivation. It also brings support for showing reactions based on custom emojis, for receiving push notifications using KUnifiedPush (not enabled by default, for now), and for forwarding messages to other rooms. You can now also quickly share contacts with other users by showing a QR code linking people's matrix ID. We have fixed my favorite the most annoying bug NeoChat has, where NeoChat would load forever if it fails to connect to your account, and finally, we have implemented the most requested feature: being able to switch to a dark mode when running on Android. But that's not all! There's also a ton of other improvements, fixes, and features - far too many to list here.

The release will be out very soon on Flathub. If your distro doesn't have it yet, it probably will, some time soon. If it doesn't, go bother them about it :). The windows store should also receive the update in the near future.

What's next?

Since the release, we haven't been idle, of course. Notable features merged since the last update include:

  • The possibility to sort the room list alphabetically (Implemented by James)
  • Improvements to message rendering, most notably with amazing syntax highlighting for code blocks (also implemented by James)
  • Improvements to the developer tools, like showing account data and a nicer list for state events (implemented by me, Tobias)
  • Fixed sharing with Plasma's Purpose system (implemented by me)
  • Audio and Video messages now stopping when a different message starts playing (implemented by me)

Still under review are support for sharing messages to other applications using Purpose and a built-in QR code scanner for scanning contact info, room links, etc. Finally, as a sneak peak into the future: We might also currently be experimenting with LiveKit based video calls 🤫

FluffyChat (website)

Krille-chan reports

FluffyChat v1.18.0 has been released 🥳

FluffyChat v1.18.0 adds some new features, fixes a lot of bugs and improves the notifications on Android by showing them in a conversations style. Voice messages got the ability to change the play speed and the status header is now optional.

Full Changelog

  • feat: Add speed button for audioplayer (krille-chan)
  • feat: enhanced send video functionality by adding toggle send original (Mubeen Rizvi)
  • feat: add dialog to hide presence list with long-press (Marcus Hoffmann)
  • feat: Add notification shortcuts to android (krille-chan)
  • feat: make showing user presence info optional (Marcus Hoffmann)
  • feat: Open chat on shortcut click on android (krille-chan)
  • fix: BuildContext crash when joining room (krille-chan)
  • fix: Export session (krille-chan)
  • fix: Notifications open sometimes automatically on android (krille-chan)
  • fix: Open room after join (krille-chan)
  • fix: Open room by notification happened multiple times (krille-chan)
  • fix: Open room links with event id (krille-chan)
  • fix: properly initialize hideUnimportantStateEvents setting (Marcus Hoffmann)
  • fix: Remove status msg not changeable from old cache (krille-chan)
  • fix: use correct icons for chat pin/unpin (Marcus Hoffmann)
  • fix: use correct icons for mark read/unread action (Marcus Hoffmann)
  • build: Update Linux build files (krille-chan)
  • build: Update to Flutter 3.19.1 (Krille)
  • chore: Add more information to Person object in android notifications (krille-chan)
  • chore: Thumbnail follow up for notifications (Krille)
  • refactor: Better download UX with file picker for android and iOS (krille-chan)
  • refactor: Use hashcode instead of string to id workaround for notifications (Krille)
  • Added translation using Weblate (Belarusian) (kopatych)
  • Added translation using Weblate (Interlingua) (Software In Interlingua)
  • Translated using Weblate (Arabic) (Rex_sa)
  • Translated using Weblate (Basque) (xabirequejo)
  • Translated using Weblate (Chinese (Simplified)) (Poesty Li)
  • Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山)
  • Translated using Weblate (Estonian) (Priit Jõerüüt)
  • Translated using Weblate (Galician) (josé m)
  • Translated using Weblate (German) (Benjamin Wagner)
  • Translated using Weblate (Greek) (Benjamin Wagner)
  • Translated using Weblate (Russian) (Benjamin Wagner)
  • Translated using Weblate (Russian) (v1s7)
  • Translated using Weblate (Ukrainian) (Ihor Hordiichuk)
  • Translated using Weblate (Ukrainian) (Сергій)

Element X iOS (website)

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

Ștefan announces

Happy Mărțișor day, everybody! 💐

Element X 1.5.10 has been submitted to AppStore review and improves how your homeserver identifies the latest iPhones and Mac and makes errors more helpful when first configuring a homeserver. Plus tapping on your avatar in the Home Screen will go straight to the settings screen.

See the full release notes here: https://github.com/element-hq/element-x-ios/releases/tag/1.5.9

We're also making good progress on new features:

Element X Android (website)

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

benoit announces

The version 0.4.5 has been published on the testing track. Changelog: https://github.com/element-hq/element-x-android/releases/tag/v0.4.5. Among new things: mark rooms as favorite, add some moderation tool to rooms (still not 100% implemented), add a gesture to swipe to dismiss the media viewer.

Now the team is working on moderation actions like banning members, blocking / unblocking people. We are also improving the overall quality of the translations. And we have started to work on login using QR code, for a very fast way to log in a device using an existing session, which will also take care of accessing the message history without any other user actions.

We are also iterating on the room list filtering, which will be soon available on production.

Dept of VoIP 🤙

MatrixRTC calls

Timo K. says

Hello from the VoIP team, with matrixRTC recently reaching the point where there are multiple clients supporting it. There is lots of momentum and motivation to make it well integrated and joyful to use.

Embedding

Lot of work happened on improving and finalizing the embedding of element call into element web. We want it to be seamless and stable. Some of the more visible changes of the last weeks are:

  • EC will now use the same theme as EW and thanks to compound we already have a decent looking light theme for Element Call.
  • There is a new hidden feature to skip the lobby by pressing the shift key while clicking on any of the call buttons.
  • In embedded mode element call is now using the same compound themed lobby that is also used in the stand alone app.

We are getting closer and closer to make matrixRTC calls the new standard.

External conference links

Besides the integration work we are building a way to invite external non-matrix users into a call. In the future it should be possible to start a call in Element Web, create a link to that call and share that link. This url will bring non matrix users to an instance of the Element Call single page application where they get a temporal matrix account and seamlessly join the conference. (This is already working in an mvp fashion, Feel invited to watch the demo in this weeks matrix live)

Another small addition which might be hard to find, hence is worth mentioning, is that one can now change if a video is rendered as "Fit to Frame" (cropped) or without cropping which is very useful if someone is using a portrait video feed. (see the light themed screenshot)

For anyone eager to try calls over matrixRTC themselves, it is currently supported on EX and develop.element.io (If "new group call experience" is activated in the labs settings)

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

We're back to a regular schedule! This week, we've had the following improvements:

  • numerous additions and enhancements to the FFI layer,
  • work is ongoing on the Event Cache, including notably a novel data structure to efficiently hold events in memory and on disk ("linked chunks"),
  • a new debug TUI tool using the UI crate features has been introduced, multiverse, to help with debugging client issues.
  • work on new APIs to search the room directory has started!

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

Emma [it/its] announces

Not too much to report on, mainly some work on HomeserverEmulator

Additions

  • Added some E2EE/key storage related models
  • HSE: Added initial sync and /initialSync support
  • HSE: Partially implemented key uploads
  • HSE: Report supporting all documented login flows (implementation pending)
  • HSE: Implemented basic room creation
  • HSE: Split up some controllers (eg. User/Room ones)

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

nannanko reports

libkazv v0.3.0 has been released.

libkazv v0.3.0 adds a lot of features, fixes many bugs.

Full Changelog

Added

Fixed

Dept of Events and Talks 🗣️

Matrix User Meetup Berlin

saces says

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

Acter

ben reports

Acter 1.24.2229 brings 💪 Actionable Updates 📣

Yesterday's release of Acter, v1.24.2229 (available on the Apple Store and Google Play store) brings a cleaner Events UI and several fixes on various parts of the App, but most notably 💪 Actionable Updates 📣 with push notifications in a new editor—allowing space leaders to include calls-to-actions, formatted texts with links and even videos in the updates boosted to all members. More details including demo videos in the release blog post.

What's New & AMA next week

Or you join us for the "What's New & AMA" session I will be hosting next week (Wednesday March 6th, 16h UTC) on Zoom (Meeting-ID 946 107 8631), where I will be showing the latest features and other updates we have worked and answer any questions in regards to Acter. There will be a recording made available after, so if you have a question but can't make it make sure to DM me the questions prior so we can get it answered.

Dept of Guides 🧭

Draupnir4All

MTRNord announces

Small update on the project today: We updated https://docs.draupnir.midnightthoughts.space to a more readable design and hopefully also better working for mobile than before. If you have any issues please report them at https://github.com/the-draupnir-project/draupnir4all_docs :)

Also while I was at it I added S/MIME and PGP keys to my Zammad instance that's used for the email. You can find the public keys/certs at https://docs.draupnir.midnightthoughts.space/getting-started.html#pgp-and-smime as well as the fingerprints of each file. Sending both just signed or encrypted files should be possible with both. Encrypted Replies are only confirmed working with PGP at this time. This is somewhat complicated by the Zammad integration for now. However, all messages will be signed by either GPG or SMIME.

Matrix Federation Stats

Aine reports

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

As of today, 9512 Matrix federateable servers have been discovered by matrixrooms.info, 2776 (29.2%) of them are publishing their rooms directory over federation. The published directories contain 20157 rooms.

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1maunium.net242
2nerdhouse.io268
3ari.lt271
4rom4nik.pl273
5fostered.uk310
6plocki.org339
7aguiarvieira.pt420.5
8envs.net436.5
9littlevortex.net503
10nhnn.dev649

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1nerdhouse.io146.5
2ari.lt149
3aguiarvieira.pt151
4fostered.uk179
5spritsail.io211
6matrix.its-tps.fr236
7jpeg.city248
8shiftsystems.net259
9littlevortex.net325.5
10inu.is452.5

That's all I know

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

🔲 ☆

Opening up the Foundation

Since the Foundation got itself a Managing Director at the end of last summer, it has been working on its independence. With lines more clearly defined between its major supporter Element and itself, the Foundation has been able to clarify its role. The Foundation's major goal, alongside stewarding the specification, is to fill in the gaps where there is no direct organisational interest, to make the Matrix ecosystem grow.

There are two levels where the Foundation can have an impact: at the governance level, in the form of the Governing Board; and at the hands-on level, with working groups and projects.

See below what the coming year holds for us.

Setting the direction, together

The Foundation wants to be a place for the various entities who depend on Matrix to gather, share their insights and current situation, make decisions on what they want for the future of Matrix, and pool resources to make it happen.

A place that gives everyone in the ecosystem an opportunity to be proactive in their problem solving, sharing the cost of maintenance and development of projects that may lack commercial support.

It is also meant to be a place where all the members can discuss topics that need to be addressed, but that they cannot address on their own. Indeed, some components of the Matrix ecosystem receive attention because they are commercially viable, if not already sustainable. Some other projects might not be possible to monetise ethically. Or it might make sense for a neutral organisation to act as a point of reference. One example would be a strong Trust & Safety suite.

The Governing Board will help set the direction of the Foundation, so it can deliver on what matters the most to the ecosystem. For all the details on the Governing Board and its mission, please head to Josh's excellent blog post. If you have an opinion on the direction the Foundation should follow, consider becoming a member and running for the board!

More room for the community

Joining the Governing Board is not the only way to contribute to the Matrix ecosystem. The Foundation hosts numerous projects, and directly contributes to some of them. But there are no guidelines regarding how a project becomes hosted or managed by the Foundation, nor any guidelines on who can gain or lose access to a repository.

In coordination with the Governing Board, the Foundation will set-up processes to better define what a Foundation project is, how it can join the matrix-org/ namespace on GitHub, how it is governed, and when it makes sense to contribute financially. This is particularly important to make sure that the Foundation is open to new contributors and projects.

We don't want to define processes a priori and force them onto the project, creating unnecessary top-down bureaucracy. We would rather experiment, see what processes actually work in practice, and then formalise and generalise them.

We are starting with a couple of experiments: community member MTRNord and myself Thib have launched the Matrix.org Website Office Hours to onboard everyone who wants to contribute to the website. Web development is a rather widespread skill, and it should be a good testbed to gauge our ability to onboard a diverse group of contributors. You should join us!

A second initiative will be launched on a topic our community is full of energy and ideas about: a Trust & Safety working group, steered by myself. The working group will be tightly scoped to a single problem area, and tasked to come up with a single deliverable. We will spin up new working groups to tackle new problems. We will share the details of the first T&S working group in early April on this blog. You can subscribe to our RSS feed or follow us on our socials to stay tuned.

This experiment will establish a framework for collaborations on other important topics. This will help us make the Matrix ecosystem one that all individuals and organisations are able to contribute to.

This post is the second post in our roadmap series, and while governance isn’t the most exciting thing in open source, it makes the difference between a project that stands the test of time and a project that fails.

Support the Matrix ecosystem if you want to see it thrive, support the Foundation in its quest for inclusivity: become a member or a supporter today!

🔲 ☆

This Week in Matrix 2024-02-23

Matrix Live

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

Dept of Status of Matrix 🌡️

Thib says

This week MTRNord and myself have launched the Matrix.org Website Office Hours. We hope to turn that into an accessible way to onboard new contributors. Come join the fun with us, and help us making the world a better place!

Dept of Spec 📜

Andrew Morgan (anoa) reports

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

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

The Spec Core Team are continuing to internally reflect and evaluate on our processes. Not too much to say publicly here yet, but hopefully in a few weeks' time.

Otherwise there has been a surge of new MSCs coming into the fray related to all different portions of the spec. Lots to chew on for those invested!

A general call for help for folks to write up some spec PRs - aka turning our current list of accepted MSCs into actual PR against the spec itself. If that sounds like something you'd like to help out with, even if you've never touched the spec before, please consider writing one up! You can see examples of Spec PRs here, and can join #matrix-docs:matrix.org for help 🙂

And thank you to zecakeh for writing one up yesterday!

Random MSC of the Week

The random MSC of the week is... MSC3843: Reporting content over federation!

This MSC is short and very readable, so I suggest doing so on your own! But in short, this MSC proposes a new Server-Server endpoint to report either an event or an entire room to a remote homeserver. This makes sense if that remote homeserver is the one housing the user(s) whose content you are reporting. Alternatively, you could use this as a mechanism to alert other homeservers of an ongoing spam wave.

This proposal also introduces a new error code, M_UNACTIONABLE, if the homeserver does not accept the report for whatever reason.

Personally I feel that this would be a useful tool to get abuse reports from server A to server B, whereas all current tooling either doesn't have that functionality, or pushes it off to bots (which can be a bit clunky). Having a standard API for it (which clients can then add UI for) seems like a better path forward.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Andrew Morgan (anoa) says

This week Synapse v1.102.0rc1 was released. With it are some performance fixes, and a fix for stuck notifications. If you're able to test and report bugs, please do!

Otherwise we are aware of an issue with notification counts being too high on mobile clients, and believe we have narrowed down the issue. This PR has a potential fix, and we'll aim to get it out as soon as possible.

Dept of Clients 📱

Quaternion (website)

A Qt5-based IM client for Matrix

kitsune reports

Version 0.0.96.1 is out, bringing a few essential fixes. Not much to talk about, just go and upgrade!

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

  • El-X 1.5.8 has been released
  • new translations for bulgarian swedish and ukrainian have been added, and will soon be included in the next releases
  • The recovery key can now also be used to recover your chat backups/verify your device
  • If the user has set up a global OS proxy configuration, the app is now able to determine the proxy and use it!
  • Filters work is making progress, and now we can also filter by favourites.
  • Moderation features are making progress
  • We're improving our logging backend by using Rust to write the log files

Dept of Non Chat Clients 🎛️

Circles (website)

E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.

cvwright reports

We are happy to announce that Circles, the secure social network built on Matrix, is now available in the iOS App Store: FUTO Circles. With this release and our recent release in the main F-Droid repo, this leaves only the Google Play Store on our to-do list.

The initial App Store version is identical to beta v0.9.9 and brings only minor updates over v0.9.7 and v0.9.8. We expect to be very busy over the next few weeks as we add a few remaining features and bug fixes from our post-1.0 backlog on iOS, and as we get ready to launch Circles Android on the Play Store.

If you're interested in Circles, please stop by and say hello in #circles:futo.org

Dept of SDKs and Frameworks 🧰

matrix-sdk-store-media-cache-wrapper (website)

ben reports

Just a quick one on the side: We have just announced the stable release of the matrix-sdk-store-media-cache-wrapper Rust crate on crates.io for the matrix-rust-sdk. If you, too, want to separate the internal store state from the downloaded media in a safe and secure way with your matrix-rust-sdk-based project, this is for you. Enjoy.

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

Emma [it/its] reports

Lots of changes this time around, and a whole homeserver test jig has started development!

Changes

  • Remote homeserver timeout increased from 2 minutes to 5 minutes.
  • Homeserver resolver now falls back to HTTP if HTTPS is not available (I should probably add a toggle for that ^^')
  • Fixed power level checks
  • API calls now use ResponseHeadersRead mode for responses, meaning that some larger API calls (eg. sync, mmebers, ...) now deserialise faster, due to being deserialised while still streaming!
  • DisbandRoomAsync was renamed to PermanentlyBrickRoomAsync in order to clarify it's function and intent.
  • Common sync filter presets now return ephemeral objects, meaning any change to their contents will no longer be reflected in calls later on (eg. between different clients)
  • Bot SDK: Command listener uses a very small sync filter (only m.room.message, by not self), as this allows far faster initialisation.

New features

  • Filter uploads now allow @me (literal) in senders/not_senders, these will be substituted by the current user's MXID. This allows far easier templating.

New sub-project: Rory&::LibMatrix.HomeserverEmulator

A new project has appeared! This is an attempt at having a quick and dirty "homeserver" implementation in order to allow for fast iteration on development whilst offline. Upon an attempt to log in, a random account is generated with random rooms, in order to provide "realistic" test data.

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict says

This week just a small bugfix release (v4.2.5) of Trixnity.

bugfixes:

  • fix deadlock in start/stop-sync handling (thanks to @justjanne:matrix.org for finding and analyzing this bug)
  • fix ConcurrentModificationException in Concurrent-Collections

simplematrixbotlib (website)

simplematrixbotlib is an easy to use bot library for the Matrix ecosystem written in Python and based on matrix-nio.

imbev reports

simplematrixbotlib releases v2.11.0

pypi: https://pypi.org/project/simplematrixbotlib/2.11.0/

git: https://codeberg.org/imbev/simplematrixbotlib/src/tag/v2.11.0

  • The on_reaction_event listener now uses matrix-nio's ReactionEvent instead of UnknownEvent

  • api.send_text_message method now has a reply_to parameter, making it easier to reply to events

  • The minimum matrix-nio version is now 0.24

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 announces

It's been a while since the last update for the Rust SDK, so we're happy to report many improvements since the last time!

  • New APIs have been added to the main SDK: reading and setting room power levels, retrieve interesting tags (favourite, low priority), marking a room as unread following MSC2867.
  • When creating a Client, a convenient way to auto-discover if an URL is a homeserver URL or a server name has been added: ClientBuilder::server_name_or_homeserver_url().
  • Work has started on a new Event Cache, which should help with extracting some useful features out of the Timeline API, and put them back into the main SDK. This includes notably: automatically retrying decryption after new keys have been received, back-pagination of events, computing unread markers and updating read receipts in a single place. Stay tuned as the work moves forward.
  • The Room List service has more filters (all, unread, groups, DMs, favourites), and can combine them together (and, not).
  • Timeline: it's now possible to mark a room as read (and let the SDK automatically select the event that will receive a read receipt).
  • And of course your usual bunch of bugfixes, internal refactorings and performance improvements. It would be too long to list them all, but those involve the following categories: sliding sync, unread markers, indexeddb, backup support, many at the FFI layer used for EX apps, etc.

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi announces

matrix-docker-ansible-deploy now supports the new mautrix-meta bridge (following news of the deprecation of the old mautrix bridges).

mautrix-meta is a single bridge, which can run in different modes and bridge to Messenger (via Facebook, Facebook over Tor or via Messenger) and Instagram. The playbook makes this bridge available via 2 separate Ansible roles, allowing you to easily run 2 instances of mautrix-meta, for bridging to both services at the same time.

Consult our changelog entry for more details on migrating.

Dept of Interesting Projects 🛰️

Aine announces

Matrix Rooms Search project got a huge under-the-hood update!

At etke.cc we were busy with instrumenting our projects this week, and the biggest impact is seen with the MRS.

But let's start with some highlights from the changelog first:

  • Integrated Sentry APM Tracing
  • Fixed Federation API discovery (thanks ralfi and tulir for localizing it)
  • Rewrote avatars logic
  • Rewrote outgoing http requests logic - fixed edge cases with odd context cancellations, added retrier for 5xx responses

And the impact is: new 765 online and federateable servers were discovered (+8.6%)! Moreover, 287 of them (+11.4%) are publishing room directories over federation 🎉

The updates were already tested on the demo instance, and the change is visible on the MatrixRooms.info/stats page (Feb 21 -> Feb 22).

Apart from that, MSC1929 integration has been reworked. From now on, MRS will try to use m.role.admin email(-s), and if none found, use any valid email present in the support file. Plus, MRS now serves the /.well-known/matrix/support file of its own. Documentation has been updated to reflect the changes.

Try MatrixRooms.info (even directly from your matrix apps!), check the source code, and say hi in the #mrs:etke.cc room

Matrix Federation Stats

Aine announces

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

As of today, 9567 Matrix federateable servers have been discovered by matrixrooms.info, 2801 (29.3%) of them are publishing their rooms directory over federation. The published directories contain 20071 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
1ari.lt247
2nerdhouse.io278
3aguiarvieira.pt284
4envs.net285
5chatinamatrix.xyz304
6fostered.uk305.5
7plocki.org417
8matrix.its-tps.fr430
9utzutzutz.net501
10viorsan.space744

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1nerdhouse.io128
2ari.lt138
3aguiarvieira.pt167
4dendrite.s3cr3t.me170
5fostered.uk220
6spritsail.io222
7matrix.its-tps.fr226
8chatinamatrix.xyz234
9h2.gay304
10darkness.services350

That's all I know

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

🔲 ☆

Launching the Matrix.org Website Office Hours

The Matrix.org website is the public face of the Foundation, and the first thing you stumble upon when looking up “matrix chat” on a search engine. It’s a very important step in people’s Matrix journey.

A lot of thought has been put into making a website that talks to the various audiences visiting it, but we still have a lot of room for improvement!

The website is only maintained by community member MTRNord in a volunteer way, and part-time by me, Thib. We could use an extra pair of hands or two, but to make the most of people’s desire to help we need to let them know where they can have the most impact depending on their skill set, and how we can accept their help!

We did a small scale pilot of Website Office Hours on Tuesday 20. We gathered in an Element Call to talk, review PRs and issues, and merge/fix them! It looked like a form of peer programming since I (Thib) was sharing my Github and VSCode windows while working on the site, and we discussed it. A few people came by, and gave feedback about the format.

We are happy to launch the Matrix.org Website Office Hours, on Thursdays every other week at 16:00 UTC / 17:00 CET! starting next week on Thursday 29. You can join the #matrix.org-website:matrix.org where all the fun happens. We will embed Element Call in the website room as well, but you can join the Call directly if you’re not interested in the chat. MTRNord and myself will sit in that call and monitor that room for one hour, browsing and prioritising issues of the matrix.org website, and actually working on it.

Come and contribute to Matrix. Get involved, grow your skills, and make the world a better place with us!

🔲 ☆

This Week in Matrix 2024-02-09

Matrix Live

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

Dept of Status of Matrix 🌡️

Matthew says

Very happy to announce that the Spec Core Team has been reviewing how to make more progress on MSCs and get more organisational diversity into the SCT, and we've decided to expand the team - unanimously voting to add both tulir and clokep to the team effective today. Huge thanks to both tulir and clokep for being up for joining and donating their time... and looking forwards to their contributions in helping get MSCs to and through their Final Comment Period and merged into the spec!

Josh Simmons says

We’re excited to be forging stronger ties with other open source foundations, so that we can work together and lean on one another’s areas of expertise. Last week we announced that the Matrix.org Foundation joined OpenForum Europe as a supporter alongside Mozilla and many others.

Adding to that, we’re pleased to share that we have become an affiliate of the Open Source Initiative and joined their Open Policy Alliance, and we’ve also joined the Eclipse Foundation as an associate member.

We look forward to going further, faster, together! 🚀

Dept of Spec 📜

TravisR announces

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

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

Dept of Clients 📱

SchildiChat (website)

SchildiChat is a fork of Element that focuses on UI changes such as message bubbles and a unified chat list for both direct messages and groups, which is a more familiar approach to users of other popular instant messengers.

SpiritCroc announces

SchildiChat Next, our SchildiChat Android rewrite based on Element X, has received a couple of updates since our last report.

First, spaces support has matured. We now properly integrate the space filter with sliding sync, which means that when you filter for spaces, you're less likely to encounter missing room previews. Additionally, aggregated space unread counts and swipe gesture to switch spaces are back, and user-chosen space sort order is now respected.

Independent of spaces but also related to features that our old Android app had, you can now mark rooms as unread again, following MSC2867. Similarly, incoming HTML details-tags in formatted messages as sent by some bots are now collapsed by default again, allowing you to expand them on demand by touching the message.

Since Element X has added support for UnifiedPush, we naturally have that back now too. However, I changed our implementation a bit to use UnifiedPush's FOSS FCM distributor, which means that ideally we can avoid having to maintain two separate app flavors for the Play Store and F-Droid releases in the future (once we do stable releases), and those who install it from F-Droid can still use FCM for push notifications if their device supports it, while not having any closed-source Google library bundled with the app. I'm curious how well this works, so let us know if you have any issues with FCM that you cannot reproduce on Element X! Custom user-installed push distributors are given precedence over FCM, of course.

On the infrastructure side, translations of our SchildiChat-specific strings added on top of Element are now open for contributions at our weblate. Thank you to everyone who has already contributed!

FluffyChat (website)

Krille-chan announces

FluffyChat v1.17.3 has been released 🎉 with a bunch of bugfixes and the return of the wallpaper feature. This time it works on all platforms and is synchronized between your sessions.

Full changelog:

  • feat: New account data based wallpaper feature (Krille)

  • build: Update dependencies (Krille)

  • build: Update flutter to 3.16.9 (Krille)

  • build: Update matrix dart sdk to 0.25.7 (Krille)

  • build: Update minor versions (Krille)

  • chore: Adjust status msg design (krille-chan)

  • chore: Improved error handling for recovery key (Krille)

  • chore: Make stickers smaller (Krille)

  • chore: Wait for device keys before ask bootstrap (Krille)

  • fix: Missing null check in public room bottom sheet (Krille)

  • fix: onDragDone crashes when no files found (Krille)

  • fix: Render tg-forward html tags (Krille)

  • fix: Use HapticFeedback.selectionClick() for long press on message (Krille)

  • fix: whitespaces sometimes encoded in html message (Krille)

  • fix: Share invite links of public rooms (Krille)

Element X iOS (website)

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

Ștefan reports

Dept of Non Chat Clients 🎛️

Circles (website)

E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.

cvwright says

This week we fixed a particularly bad bug that had appeared in recent Circles iOS beta releases, where the app would fail to resume syncing with the server under certain conditions. We released v0.9.5 which (we think!) finally resolved the last of the sync issues. Then we also released a further update v0.9.6 to address a corner case where users could not decrypt messages posted between the time when they were initially invited and when they finally joined the room. With these two beta releases, we believe we have resolved all known decryption issues. It should be smoother sailing from here! The latest Circles iOS build is available for beta testers on Apple's TestFlight.

On Android, Circles v1.0.25 is now available on F-Droid.org and in beta release on the Play Store.

Source code for both platforms is available as always from the FUTO Gitlab and from our Github mirrors.

Dept of SDKs and Frameworks 🧰

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

Emma [it/its] says

This week has some minor changes and cleanup

Changes

  • room.GetNameOrFallbackAsync() now returns alias before building from member list
  • Cleaned up the EventTypes sub-library to consistently have EventId constants defined, for easy access
  • room.GetManyMessagesAsync(...) now has an optional chunkSize property, in order to cap the limit= sent on the API.
  • Applied syntax style across all of LibMatrix

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

Dept of Events and Talks 🗣️

HarHarLinks announces

Hello TWIM! The Matrix Foundation and Community were at FOSDEM last weekend (#fosdem2024-foundation-community-meetup:matrix.org) so we want to share this quick look back:

Thank you everyone for joining us at FOSDEM 2024! We had a great time and hope everyone arrived back home well and healthy, and wish anyone still on the road for other conferences or travelling reaaaally far a safe journey!

The Matrix Foundation and Community would like to thank Hackerspace Brussels (on Matrix: #hsbxl:matrix.org) for hosting the meetup on Friday on their premises again, and particular everyone involved with opening the gate for new arrivals, tending the bar, helping with pizza orders, and all the small odd things that need to get handled during such an event. We wish you the best for your move to the new location in the coming weeks and look forward to visiting you there next year! 🧑‍💻

We also want to express our gratitude to the sponsors of the Fringe event: Thanks to Nordeck (#nordeck:matrix.org) and Famedly covering the cost, the Foundation was able to provide drinks and pizzas for everyone at the Fringe event! 🍻

Speaking of pizza, special thanks to Adrian and Pommodoro Brussels for the excellent pizza and for fulfilling all our requests for vegetarian and vegan pizza! 🍕

Finally on behalf of the Community group co-organizing the fringe event, I'd like to thank the Foundation for the great support with planning and also covering the administrative tasks such as the financials! 🤝

On Saturday and Sunday there was the Matrix stand on the first second upper level of building K. I must say it was incredibly busy. We had so many visitors come by - we distributed thousands of Matrix stickers and 100 T-shirts! Thanks to everyone helping at and around the stand, answering questions, collecting donations, helping with the T-shirts sales! And thanks to everyone visiting the stand to say hi and chat, to ask your question, learn about Matrix, or give your feedback! 👕

On Sunday afternoon there was the Matrix devroom in H.1309 (Van Rijn)! Thanks to everyone presenting their project, thanks to the devroom hosts and helpers, and thanks to the FOSDEM and VOC crew for helping out and recording the sessions! The recordings should be available through the FOSDEM website and are also mirrored on YouTube by the Foundation. 🗣️

Thank you to all the individuals and organisations who signed up to support the Matrix Foundation, be it during FOSDEM or before! If you haven't yet, learn more here! 🫂

Finally, thanks to YOU for attending! Be it in person at the Fringe event, the stand, the main track talk, the devroom, or online in the chat room and stream! It was great to meet everyone and now as we are arriving back home, we can already not wait to see you again next time! 👋

Find the FOSDEM 2024 Wrap Up blog post on the Matrix.org blog for a summary, some photos, and links to the video recordings of the Matrix talks!

Thib announces

Whether you could make it to FOSDEM or not, here's our wrap-up from the conference. If you missed some talks, you can catch up with the YouTube Playlist of all the talks (or find the original recordings on https://fosdem.org/2024/schedule/track/matrix/ but those have audio/video sync issues)

Matrix Federation Stats

Aine announces

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

As of today, 8777 Matrix federateable servers have been discovered by matrixrooms.info, 2497 (28.4%) of them are publishing their rooms directory over federation. The published directories contain 20591 rooms. unpublished and offline rooms were removed

How to add your server | How to remove your server

Dept of Ping

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1maunium.net245.5
2aguiarvieira.pt246.5
3ari.lt259
4nerdhouse.io261
5fostered.uk268
6plocki.org336
7lama-corp.space391
8sulian.eu518
92345781.xyz676.5
10matrix.its-tps.fr707.5

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1ari.lt113
2fostered.uk124
3aguiarvieira.pt143
4nerdhouse.io145
5frai.se165.5
6matrix.its-tps.fr170
7daedric.net281
8inu.is313

That's all I know

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

❌