Dept of Spec 📜
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.
MSCs proposed for Final Comment Period:
MSCs in Final Comment Period:
- No MSCs are in FCP.
- No MSCs were accepted this week.
- No MSCs were closed/rejected this week.
New MSCs in detail
In this new segment, we aim to give a bit more context as to why an MSC was opened, beyond what is available in the MSC's introduction.
MSC4056 stems from a conversation held back at IETF 117, where members of the Spec Core Team (SCT) were attempting to make RBAC work in Matrix. Thankfully, there was prior art in the form of MSC2812, but a problem with decentralization (and specifically state resolution) was discovered. Thoughts were had about how to fix it, and MSC4056 is the result of those thoughts. Implementation work is eventually planned for this MSC, but in the meantime it should see forwards movement with the SCT's involvement in the MIMI working group at the IETF.
If you have thoughts or suggestions about the very Discord-centric approach, please leave them on the MSC :)
Department of the Matrix.org website 🌐
If you maintain a Matrix app, I need you
In June we launched the new Matrix.org website, including a revamped section for the clients. The clients information is currently static and only updated manually, which means it can be outdated rapidly.
I got in this field because I was promised computers could work for us even before AI was a trend. So let's leave the boring work to the machines, and spend our time doing what we enjoy: let's automate the clients data refreshing!
And because I want the computers to work and not the maintainers of apps, I need you to tell me if your project relies on a specific file format to store app data information (such as the maintainer information, licence, last release date, etc), so I can create a script that consumes it and updates the matrix.org website with reasonable safeguards.
If you're an app maintainer and you maintain such a file, please let me know about it in this issue
Department of Trust & Safety 🛡️
An all-in-one moderation tool that protects your Matrix community.
Gnuxie 💜🐝 reports
Draupnir has been a loosely kept secret passed by word of mouth between Matrix communities for a while now. And with the announcement of Draupnir4all we should really announce Draupnir formally itself (if we also ignore that one time it was indirectly mentioned in TWIM previously).
So what is Draupnir?
Draupnir is an all-in-one moderation tool that protects your Matrix community by synchronizing moderator actions across many Matrix rooms. Whether these be your own bans, or those from a policy list curated by other moderators. Draupnir is a continuation of the Mjolnir project and has seen further development, maintenance and support by myself and a handful of other contributors over the course of the year.
A huge amount of work has gone on to make Draupnir easier to maintain than its predecessor. Luckily for our users this has meant that there are new ways of interacting with the bot. Mainly the ban propagation protection which is enabled by default, to allow room level bans issued from a Matrix client to be propagated to the management room. This means for managing users, moderators do not need to enter any commands, they can instead respond to simple prompts sent by Draupnir. We're still working on these prompts with the hope that as much of basics of moderation can be done from within a Matrix client without issuing commands to the bot.
As part of the ongoing work to refactor Mjolnir a majority of the legacy Mjolnir commands have already been reworked. The new interface manager is now able to prompt for missing arguments, provide a reasonable suggestion for why an argument is invalid, and provide a traceable error message that can be provided to a system admin in the event of an unexpected error.
Finally in addition to all of the above, Draupnir incorporates many significant fixes to bugs, usability issues, unreviewed PRs originally made to Mjolnir, and has an active support room with enthusiastic project and community members. We'll see you there #draupnir:matrix.org.
Today I am happy to announce that I am providing Draupnir4All.
What does this mean?
Draupnir is a continuation of the Mjolnir project developed by Gnuxie 💜🐝 and includes significant improvements to the UX. Draupnir allows moderators to manage multiple rooms efficiently and subscribe to community curated ban lists.
Draupnir4All is a way to get your own Draupnir instance provisioned to you without you needing to run, configure or host the bot yourself. This is accomplished because the bot is running in appservice mode, meaning that we can host many bots with less overall resource usage. This mode of operation was initially developed for Mjolnir (as Mjolnir4all) and released for limited beta earlier during the year before being prematurely shut down. During the course of this project, many improvements have been made to the appservice mode and Draupnir itself, which greatly improve usability.
For more information on this process, please see https://docs.draupnir.midnightthoughts.space/
What is the catch?
Currently, there are a number of catches:
- Since there is not much data on load, I am currently artificially rate limiting the usage of the system. This means that I may deny requests to join if the user base is either considered too big or there are already many users with a bot, in which case I may need to first improve the backend before moving on. However, we will try to come back to these people as soon as capacity allows it.
- It is community run. I am running this service on my Servers without making any money. In turn, this means I am hosting this on a best effort basis. There is a status page available at https://status.draupnir.midnightthoughts.space/ and I am trying to run it in a redundant manner on Kubernetes + a Postgres Cluster. However, I can't promise any SLA at this time.
How can I ask for a bot? Is there any support?
To ask for a bot, please follow the Documentation. It is the most up-to-date information on the process. I decided that it's best to have the process running outside of Matrix, since sensitive information can then be provided privately. Email also means the administration teams can stay anonymous and provide support when it is convenient to them, which will mean the management of open tickets overall will be both better managed and received.
In terms of Support, there are 3 ways currently.
- For anything regarding sensitive information, you can ask via the Email to open another Ticket, which then will be handled.
- You can use the Forum at https://forum.miki.community/c/d4all/5 and open new topics. Remember however that anyone can view these.
- If the issue is clearly a bug that happens in Draupnir itself and is not D4All specific, you can use the Draupnir matrix #draupnir:matrix.org and GitHub.
Are there any changes regarding features over a normal Draupnir?
Currently, we have a few changes in the code. However, the goal is to upstream it all over time, so anybody can benefit from the project.
- There is a
displaynamecommand allowing you to set the Display name of the Bot. (#91)
- There exist some more metrics for the Provisioning to track how many active bots exist (#70)
- The Provisioning bot is using the newer command system now (#69)
- The Appservice has added OpenTelemetry Tracing support, which allows more insights into errors
- There are UX changes to how the provisioning happens
Any change happens in https://github.com/the-draupnir-project/Draupnir/tree/MTRNord/draupnir4all until it gets merged into the main branch. This is also the branch which is deployed at this time.
Dept of Bridges 🌉
A bridge between Matrix and Discord.
Andrew F reports
That's right, a new release! But don't get too excited: this is mainly a maintenance release for fixing compatibility with Synapse 1.90.0+ and migrating to the latest version of Node.
The latest image can be pulled from
ghcr.io/matrix-org/matrix-appservice-discord:v4.0.0, and source is available at https://github.com/matrix-org/matrix-appservice-discord/releases/tag/v4.0.0.
As usual, feel free to direct questions & comments to #discord:half-shot.uk .
Dept of Clients 📱
A client for matrix, the decentralized communication protocol
So the big news this week is that NeoChat master has been moved to QT6 only. This means that most the changes this week were focussed on dealing with the fallout of the changeover.
Even so there will still a couple of notable user facing changes:
The taskbar now only show the number of highlighted messages rather than a total of all unread messages.
The room explorer page has been given a facelift.
Matrix client for Emacs
ement-notificationsshows recent notifications, similar to the pane in the Element client. (This new command fetches recent notifications from the server and allows scrolling up to retrieve older ones. Newly received notifications, as configured in the
ement-notifyoptions, are displayed in the same buffer. This functionality will be consolidated in the future.)
ement-room-quote, applied to quoted parts of replies.
ement-room-goto-prevwork more usefully at the end of a room buffer. (Now pressing
non the last event moves point to the end of the buffer so it will scroll automatically for new messages, and then pressing
pskips over any read marker to the last event.)
- Room buffer bindings:
ement-room-goto-prevare bound to
ement-room-goto-fully-read-markeris bound to
M-g M-p(the mnemonic being "go to previously read").
- The quoted part of a reply now omits the face applied to the rest of the message, helping to distinguish them.
- Commands that read a string from the minibuffer in
ement-connectuser ID prompts use separate history list variables.
- Use Emacs's Jansson-based JSON-parsing functions when available. (This results in a 3-5x speed improvement for parsing JSON responses, which can be significant for large initial sync responses. Thanks to Ryan Rix for discovering this!)
- File event formatter assumed that file size metadata would be present (a malformed, e.g. spam, event might not have it).
- Send correct file size when sending files/images.
- Underscores are no longer interpreted as denoting subscripts when sending messages in Org format. (Thanks to Phil Sainty.)
- Add workaround for
savehist-mode's serializing of the
command-historyvariable's arguments. (For
ement-commands, that may include large data structures, like
ement-sessionstructs, which should never be serialized or reused, and
savehist's doing so could cause noticeable delays for users who enabled it). (See #216. Thanks to Phil Sainty and other users who helped to discover this problem.)
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+.
Exciting times ahead of our next release. We kept ourselves busy by:
- Rewriting deep link handling to support Element Call
- Adding a custom decorator for threaded replies
- Enabling notification settings for everybody
- Improving overall accessibility
- Parsing html and markdown in push notifications
- Introducing a new advanced settings screen
- Improved the rich text editor and enabled it by default
- And many many bug fixes
Element X Android (website)
Android Matrix messenger application using the Matrix Rust Sdk and Jetpack Compose
- First Pull Request about integrating Element Call has been merged! The application is now able to handle Element Call links. More change will come in this area to integrate the feature deeper in the app.
- We are improving the performance again, for a faster as ever rendering of the room list.
- Messages from thread got a new decoration, so it is clearer that replying to such messages will reply in the thread. Full thread support will come later.
- There is a new “Advanced settings” screen, which let the user disable the Rich Text Editor, to directly type raw Markdown, and to enable developer mode. For now the developer mode will reveal the “Show source” action when long clicking on an event from the timeline.
- We are polishing the application design. The biggest changes are: new bloom effect behind the user avatar on the room list, and the application will get a new icon.
- And we are fixing bugs and smaller issues
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- This week we’ve made progress on our new and improved room header. It’s currently behind a labs flag - to get as much feedback as possible we’ll be defaulting that flag to “on” for those users on Nightly and Develop in future releases. Let us know what you think!
- Related to our visual improvements; we’ve found some regressions, and had some feedback, on our previous changes and so we’ve been tackling those this week too.
- We’re progressing on the issues related to Stuck Notifications, with open PRs and many many many tests in the pipeline to help us identify and protect against future issues
- In other news we’re moving closer to our goal of native-OIDC, currently working on the matrix-auth-service which is a prerequisite for providing OIDC.
Dept of Non Chat Clients 🎛️
E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.
Circles is an end-to-end encrypted social network app built on Matrix. After being relatively quiet for a while, we have some big news to share this week.
First, on Android, we released a new beta build v1.0.15, which includes big performance improvements in rendering the timeline and updated support for new secret storage key generation algorithms. v1.0.15 is now available on Google Play and our Circles F-Droid repo.
On iOS, we are wrapping up a complete from-the-ground-up rewrite of the Circles app based on our own homegrown Swift SDK. After more than a year of development and a month of closed beta testing, we are ready to offer you a sneak-peek at the new public Circles beta on Apple TestFlight. The latest iOS beta build is v0.5.3, and it is available for iPhone, iPad, and also for Apple Silicon Macs that can run the iPad version.
Along with Circles iOS, we are also announcing the beta phase for its SDK, Matrix.swift. The latest version v0.4.0 includes support for message redaction and replacement, detection of
@mentions in message events, and support for encrypting and uploading video files for
m.videomessages. The Matrix.swift SDK is now at the point where it could be a useful building block for hobby projects and open source apps.
If you're interested in trying out Circles or Matrix.swift, you can also drop into our Matrix rooms and say hi. #circles:futo.org #matrix.swift:futo.org
Dept of SDKs and Frameworks 🧰
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
Jonas Platte says
This week was a pretty quiet one, focused on bugfixes (in particular around OIDC) and refactorings.
Emma [it/its] says
Announcing Rory&::LibMatrix, an extensible C# (.NET 7) library that originated from personal needs!
Rory&::LibMatrix is a completely new library for interacting with the Matrix CS API, though I'm also working on adding some support for the AppService API's. The library originated as the underlying core for MatrixRoomUtils, a personal utility project that lately we haven't worked on much, but might get picked back up at some point.
Git repository can be found at git.rory.gay, note that you will need to clone the repository locally!
Contribution information can be found within the README.MD included in the repository. All kinds of contributions (documentation, more features, ...) are welcome and even encouraged.
Questions, ideas and discussion are welcome at #libmatrix:rory.gay!
Dept of Ops 🛠
Command line admin tool for Synapse (Matrix reference homeserver)
So if you encounter an issue (a Python exception) using synadm as an API or CLI, do try upgrading synadm first.
Dept of Podcasts 🎙️
Matrix Salon Podcast (German episode)
Meet Kirill, who generated a Scalar library from the Matrix Spec.
- Episode url: https://podcasters.spotify.com/pod/show/matrix-podcast0/episodes/Kirill---FrOSCon-2023-e29bu5g
- RSS feed: https://anchor.fm/s/cdb34188/podcast/rss
- Mastodon post: https://mastodontech.de/@jaller94/111069757716414355
For English interviews of Matrix community members, check out some of our previous episodes!
Dept of Interesting Projects 🛰️
It was quite a bit of work but you can now get a first beta of Acter on the Apple AppStore for iOS and in the Google Play Store for Android for anyone to download and try out. If you want to register with our server you need an invite token from us (DM me) but as you are reading this, you probably already have a Matrix account you can just use. As we enabled most features for "acter"-marked spaces only, we recommend you join our #sandbox:acter.global -space to play around with the existing features and give us feedback in #foyer:acter.global if you like.
More configuration, control and moderation
During that process we gave some more love on actual moderation, abuse and user-level management: You can now configure which features should be activated on a space-by-space-basis, manage the power levels of users (though we recently noticed a bug in that features), kick and ban users and report any content as in need for moderation and block users.
Upcoming: more stores, stabilization & usability
Next to Android and iOS, we are also in the process of releasing the Desktop Apps through the corresponding stores for Mac and Windows. Until then you can still grab the nightly releases and use them - with the additional benefit that we release them more often ;) .
The first round of feedback has showed a few areas we intend to improve on. For once the internal state structure of the chat just wasn't working as expected. That's why we have been working on a large overhaul of the entire section, soon also including typing notifications coming up soon. Content redaction has been ignored for way to long, too, and is now under way.
With a chat on your phone, you are also expecting to see push notifications, which is still its early stages. Other than that we decided to focus on stability and usability for the next few weeks, so if you find any bugs not yet reported, please let us know.
See us at the summit
Dept of Ping 🏓
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
That's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!
The Foundation needs you
The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.
It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.Support us