Matrix Live 🎙
Dept of Spec 📜
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.
MSCs in Final Comment Period:
- MSC3589: Room version 9 as the default room version (merge)
- MSC3582: Remove m.room.message.feedback (merge)
- [WIP] MSC3726: Safer Password-based Authentication with BS-SPEKE
- MSC3725: Content warnings
- MSC3723: Federation /versions
Spec Core Team
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.
Numbers only mean so much, and graphs show progress. Here's the breakdown of MSCs over time:
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 :)
Dept of Servers 🏢
Synapse is the reference homeserver for Matrix
Brendan Abolivier reports
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!
See you next week! 😀
Homeserver Deployment 📥️
Helm Chart (website)
Matrix Kubernetes applications packaged into helm charts
Dept of Clients 📱
Desktop client for Matrix using Qt and C++17.
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).
That's all, have a wonderful bubbly day!
Everything related to Element but not strictly bound to a client
Hello and welcome back to another week at Element!
- As of this week, Location Sharing is now available by default for users on all platforms, except desktop where you can receive but not send locations.
- We’re starting work on the next stage, which is to enable live location sharing, and ‘pin dropping’ where you can pick any location on a map to share.
- Threads are now live in Labs on all Element platforms!
- Please remember this feature is experimental; let us know your feedback and report any bugs as we continue to improve.
- The teams on all platforms are working hard on improving the stability and performance of Threads.
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- 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.
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- 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.
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- 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.
Dept of Non Chat Clients 🎛️
Beeper media viewer
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.
You can try it out by sending files in an encrypted room with @media:maunium.net. It'll reply with a link like https://media.mau.chat/AGIPyjtJQAU#KHBwuZFrv1ffCd4ZUylo8MV03P9N4sz2T75zLi1Urcw
The code can be found at https://gitlab.com/beeper/media-viewer
Cactus Comments (website)
Cactus Comments is a federated comment system for the web, based on the Matrix protocol.
Cactus Comments is a comment system for the open web, built on Matrix.
Another small-ish release for the client: v0.12.0
This update introduces a new UI for the login form.
Here's the changelog:
- Re-structure login form to more clearly separate matrix.to links from direct login.
- Require user id (e.g.
@alice:example.com) instead of username. Only show homeserver url field if .well-known lookup fails.
- Add top-right "X" button to close login modal.
- Login modal now closes when you press outside it.
- Fix some CSS bugs related to positioning the login form in viewport center.
LoginForma stateful component.
/ipns/latest.cactus.chat is updated to point to the latest release, so sites linking there should already be using the new version.
Try out a live demo: cactus.chat/demo
Join our Matrix room: #cactus:cactus.chat
Dept of Ops 🛠
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
Full Nix code for the module is at https://git.pixie.town/f0x/nixos/src/branch/synapse-workers/common/modules/synapse pictured is the ping stat for a little test deployment with 8 federation senders :P
do tell your about publishing my NixOS module for workers in a git repository as well then 👀? https://github.com/dali99/nixos-matrix-modules
Matrix server setup using Ansible and Docker
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.
Dept of Services 🚀
Your matrix server on your conditions
🎉 Today marks 1 year of the etke.cc! 🎉
During that year, we did:
- 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
- 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.
- In May 2021 the service was published globally
#news:etke.cc | #discussion:etke.cc
Dept of Bots 🤖
An implementation of the popular Wordle game for the Matrix Protocol.
An implementation of the popular Wordle game for the Matrix Protocol.
Source: Github Repository
Made with simplematrixbotlib
Install Python 3.8 or higher
python -m pip install poetry
git clone https://github.com/KrazyKirby99999/matrix-wordle.git
cd matrix-wordle python -m poetry install
Set environment variables
HOMESERVER=https://matrix.org USERNAME=wordle-bot PASSWORD=password # or ACCESS_TOKEN=syt_...
python -m poetry run python main.py
Dept of Interesting Projects 🛰️
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
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.
Dept of Guides 🧭
Hay y'all. I created a blog post about how to host element and matrix .well-known files using cloudflare pages that I thought might be worth sharing. Have a few kinks to work out regarding CORS (might need to clean my browsers cache) though. https://minecraftchest1.wordpress.com/2022/02/17/hosting-element-and-matrix-well-known-files-with-cloudflare-pages/ https://matrix.to/#/#minecraftchest1-blog-matrix-elemet-cloudflare:matrix.org
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!