Hello everyone! It’s me, not-anoa, here with your weekly spec update. I finally got the scripts to run which means you get a proper update once again (yay).
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://matrix.org/docs/spec/proposals.
In terms of Spec Core Team MSC focus for this week, we’ve been looking at unblocking MSC3440: Threads so it can make a smooth journey into acceptance. This involves quite a lot of work to ensure that the features we’re concerned about are addressed, but so far the FCP progress on it is looking good.
We’re also spending a bunch of time working out what room version 10 looks like to try and fix some usability issues with join rules and general maintenance of things like power levels. The hope is that in time for Matrix 1.3 we’ll have v10 out (but not made default) for folks to experiment with.
Random MSC of the week
Your random MSC is MSC2974: Widgets: Capabilities re-exchange. I swear it was actually random and only after running the script exactly once. The MSC is interesting because it allows widgets (a feature working its way into the general spec, slowly) to ask for more permissions when they need them. This ensures the widget doesn’t need to ask for everything at startup (which is more likely to mean that it gets rejected), and that it can maintain a clean security state during normal operation.
One day it’ll probably make it into the spec as part of the larger widget movement, but first we need to get widgets into the spec properly.
The Graph
Numbers only mean so much, and graphs show progress. Here’s the breakdown of MSCs over time:
Of note
If you look carefully at the OpenAPI viewer, you might notice a dropdown for not-client-server APIs 👀. There’s still work to be done to bring on the missing APIs, but this is in a place where it can be experimented with. Thanks to Alexandre Franke for getting this over the line :)
This week we’ve released Synapse 1.53.0rc1, which includes a bunch of new features, improvements, and other niceties… But more on that next week when we release Synapse 1.53.0 🙂 As usual, we’re super grateful for anyone that helps us test release candidates by running them with their homeservers! Please report any breakage or feedback in #synapse:matrix.org
Apart from this we have been continuing our experimentations with Poetry to better manage our dependencies in our Python projects after we switched Sydent to it last week. We’re already starting to see improvements off the back of this work, such as automated security PRs and an opportunity to centralise our automated workflows to better reuse them in our projects (see https://github.com/matrix-org/backend-meta). We look forward to bringing all this goodness to Synapse soon!
And my Helm Chart updates are still happening, also now listed on Artifact Hub for easier discovery. This week saw several element-web updates, finally ending on 1.10.4
Is using Nheko a bit of a pain on your PinePhone? Do you just want bubbles in your chat app, not raw lines of text? Does Nheko waste too much space on timestamps and other metadata for messages?
Well, I am assuming Malte was annoyed by that or similar reasons. But in the end, they did spend a lot of effort reorganizing the way Nheko layouts messages so that people can have bubbles. This should make Nheko feel much more at home on the PinePhone and it seems like they are doing even more to make Nheko a great experience on mobile devices! But just look at it yourself:
If you are scared now and you think: “This is not the Nheko I came to love!”, don’t worry, all of this is optional. You can play around with the different avatar sizes as well as the bubbles themselves. You can even make Nheko look like it always looked!
There will be some regressions though. If you want to contribute, it would help a lot if you test those changes and report issues that you find! <3
Apart from that, there were also a lot of other bugfixes and cleanups by various contributors. You can also hide events by type now. If you don’t want to see stickers or when someone joins a room, just disable that in the room settings! Tastytea implemented that. Long usernames should now also no longer overflow the profile pages and you can reset the state for a single room using the /reset-state /command. This is helpful when updating Nheko to use widgets, but Nheko just threw those events away (or pinned messages or other state events).
The new search experience came out this week, you can enable it in Beta to try it out! We are collecting feedback from users to inform upcoming improvements.
We’re working hard on smashing bugs and reducing the number of defects.
Along with closing bugs, we’re working hard on adding finesse to our app and removing some of those “papercut” issues that users experience.
Keep your eyes peeled for updates and let us know what you think!
Our first time user experience is being updated also. We’ve introduced new splash screens to help introduce Element. Don’t panic! You can skip straight to “sign-in” if this isn’t for you.
A new spinner is here… While we work on the speed and performance of the app we’ve introduced a new spinner that does not get in your way while you work.
Bugs and Papercuts… Our app is getting some love from our developer team as we try to reduce confusion and simplify flows throughout the app.
Keep an eye out for any small changes and let us know what you think!
Creating a new account in Element can be intimidating for new users, especially those who aren’t familiar with Matrix. We’re introducing new screens and simplifying our questions so that users can sign up with confidence!
If you have any feedback, or want to share your thoughts on our first time user experience, get in touch.
A new layout option hit our app this week: Message Bubbles! If you’re used to seeing inbound messages on the right, and outgoing messages on the left this might be for you. You can access the new appearance option from Settings.
I wrote a small web app thing that can download, decrypt and display Matrix media in a browser. The goal is to use it in the Android SMS bridge for sending attachments that are too big for MMS, but it might be useful for other things too.
Currently it consists of the web frontend, a maubot plugin to generate links, and a small server that stores file metadata (so the URLs just contain the decryption key and a short ID to find the metadata on the server). I’ll probably continue working on the exact URL format to make it shorter and to encrypt the metadata, and maybe also add an alternative mode where all info is included in the URL to make the server component optional.
I worked on adapting the NixOS module for Synapse to support worker deployments. It’s a great reproducible deployment method, and super easy to configure. My module is perhaps less quality than the rest of the chain, but it’s pretty neat to define your whole Matrix deployment like this: https://git.pixie.town/f0x/nixos/src/branch/synapse-workers/nodes/cosmos/containers/synapse-workers.nix#L60 and have Nix figure out all the systemd units and nginx routes that have to be added
matrix-docker-ansible-deploy now supports installing the matrix_encryption_disabler Synapse module (details here), which homeserver admins can use to prevent End-to-End-Encryption from being enabled by users on their homeserver. The popular opinion is that this is dangerous and shouldn’t be done, but there are valid use cases for disabling encryption discussed in this Synapse issue.
Pushed 234 updates and enhancements to the automation framework used as the service core
Integrated 17 additional components to the matrix stack
Developed 5 bots and tools to extend matrix capabilities
Installed 92 new matrix servers
Helped 172 people and organizations to achieve their goals in the matrix
Posted 74 updates in the announcements room
Some history:
the project (not service yet) started on February 12, 2021
the first installed server was etke.cc itself (yes, etke.cc homeserver is a customer of etke.cc service from the day 1)
the second installed server was a chatbot, that uses matrix as a platform to interact with users across different chat networks (Telegram, WhatsApp, Signal, etc.) - one API to rule them all.
After a few years, matrix-room-directory-server has finally gotten an upgrade to modern times. Intended to eventually be a standalone directory server (making vanity aliases possible, but otherwise not functional as a homeserver), it currently only supports overriding the federation /publicRooms endpoint.
The changes made today are to replace the old, broken, appservice-backed approach with a space-backed approach. You can see this in action on t2bot.io: querying the room directory over federation will hit the room directory server, which is watching #directory:t2bot.io in the background to determine which rooms to serve.
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank
Hostname
Median MS
1
nognu.de
210
2
rustybever.be
262.5
3
cry.is
299
4
matrix.org
322.5
5
conduit.grich.sk
331
6
dendrite.grin.hu
568
7
conduit.rs
613.5
8
matrix.sum7.eu
635.5
9
dendrite.s3cr3t.me
896
10
dendrite.matrix.org
1430
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.