Matrix Live 🎙
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/unstable/proposals.
MSCs with proposed Final Comment Period:
- No MSCs entered proposed FCP state this week.
MSCs in Final Comment Period:
- No MSCs are in FCP.
- No MSCs were merged this week.
Merged Spec PRs
Travis rolled out MSC3202 to aid in the quest for end-to-bridge encryption without having to rely on
/sync. Otherwise the Spec Core Team has been reviewing MSCs and focusing on the last remaining spec PRs needed before cutting a new spec release. Watch this space!
Awesome to be able to VISIBLY see the progress in that graph!
Dept of Servers 🏢
Synapse is a popular homeserver written in Python.
The big news this week was the launch of Spaces, supported by the release of Synapse 1.34.0.
However, there were quite a few other fixes, improvements, and additions: I'd encourage you to read the release announcement for those.
But more than anything, we're hard at work realizing the room-join memory improvements we talked about in last week's Matrix Live, and we expect to have some exciting news to share next week. Concretely: the pull request to support incremental parsing of join responses was merged, and several pull requests (#10017, #10018, #10035) to simplify and slim down the code for verifying event signatures are in review.
See you next week! 🚀
Conduit is a Matrix homeserver written in Rust https://conduit.rs
Here are some Conduit news!
Feature: Handle incoming read receipts over federation
Feature: Send read receipts over federation (MVP done)
Improvement: Make UIAA (user-interactive authentication API) work like in Synapse (this gives us better client support)
Refactor: Sending code refactored to make EDUs over federation possible
Fix: Remove old presence events when restarting Conduit
Fix: Array bounds bug in server_server.rs
Fix: Power level content override adds to the default event instead of replacing it
Homeserver Deployment 📥️
And this week brings another instance of the regularly scheduled Kubernetes updates, with Element-web going to 1.7.28 and Synapse having been bumped to 1.34.0 on both the deprecated image and the chart.
Dept of Bridges 🌉
libera.chat IRC network news
Howdy folks! I'm sure many of you read the news about the new libera.chat IRC network starting up, and many of you also reached out (via pretty much every channel available) to ask about a potential bridge. libera.chat are doing a remarkably good job of getting spun up but are hyper busy with all the inbound users and need a bit more time, so in the meantime I would ask that everyone subscribe to https://github.com/matrix-org/matrix-appservice-irc/issues/1324 to listen for changes as they happen.
The matrix.org bridge team are on the case! Expect news in the near future :)
Dept of Clients 📱
Element Client Updates
Submitted by the teams
- Spaces are now live! 🚀 Test them on Element Web, Desktop & Android (iOS is coming soon!)
- In short, Spaces are a new way to group rooms and people together, and are slated to replace legacy groups/communities
- We’d love your feedback! Either submitted in app or in #spaces-feedback:matrix.org
- Read the full blog post
- 1.7.28 released
- New spaces Beta (new way of grouping rooms and people)
- Added support for slash commands working in edits
- 1.7.29-rc.1 on staging
- Improved startup performance by focusing decryption on recent rooms
- Fixed reaction duplication
- Continuing to pursue application performance generally
- Improving day to day developer experience with more TypeScript conversion
- 1.3.9 has been published on the app store
- Some performance improvements have been merged on develop:
- Reduce the number of decryptions. A decryption takes about 5ms on iPhone X. On an account with 500 rooms this allows us to skip thousands of decryptions on an initial sync
- Those decryptions do not happen anymore on the main thread
- Lots of dependency upgrade following the release with Space (1.1.7).
- Next release candidate, 1.1.8 will also contain improvements on Spaces.
- We have set up towncrier flow to better handle changelog generation.
- Also Element Android project is now using GitHub actions, but it cannot run the integration tests for the moment.
Alexandre Franke offered:
As announced in the general Matrix GSoC post, we are lucky to get two interns this year again. Alejandro (whose previous work includes switching to matrix-rust-sdk for syncs) will implement multi-account support, while Kai (also a regular contributor by now) will help bring our application rewrite to the same functionality level as our current nightly and stable versions. Both projects will build on top of Fractal Next.
Julian came back from his vacation and immediately got quite busy reviewing and merging contributions from others. Kevin (also known as zecakeh) and him made good progress on several fronts:
Room handling was improved. We now keep track of whether the user joined them, left them, or has been invited to them, as well as their categories (favourites, low priority…).
The sidebar uses these categories and now uses a single list with GtkFilterListModels instead of one list per category. The greatly simplifies code for things like moving a room from one category to another.
History style has been tweaked, state events and timestamps have been added.
Markdown can be enabled from the newly implemented popover and the message composer offers syntax highlighting, although a bug currently makes it so that sent messages are still not sent with a
A persistent state store is used to load rooms on startup while sync is in progress.
Last but not least, new contributor Raatty implemented room name and topic display in the header bar.
A minimal Matrix chat client, focused on performance, offline functionality, and broad browser support. https://github.com/vector-im/hydrogen-web/
Released 0.1.53 with support for linking to room this week, which should allow to add Hydrogen to matrix.to soon. Also started working on redactions, which is useful in itself and also lays the foundations for reactions and edits coming next.
Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE and intends to be full featured and nice to look at
Check out this flattering portrait of Nheko on the Brodie Robertson "Linux Tips & Tricks" channel.
Dept of SDKs and Frameworks 🧰
Ruma is a set of Rust library crates around Matrix
We've been quiet in the past weeks, but certainly not due to lack of activity! So many awesome things have happened, I don't even know where to start. I guess I'll go chronologically:
We published so many new crate releases. Most of our crates didn't see non-alpha releases for almost a year and now we've finally reset that counter! Now you can depend on
ruma 0.1and get bug fixes and new functionality through
cargo updatewithout having to worry about breaking changes. Huge thanks to @zecakeh for automating our release process, without that this would have taken so much longer.
We got initial spaces support! I'm super excited that we're now enabling client authors to take spaces into account, even if "taking into account" will initially just mean filtering out space rooms from their room lists. Code-wise, this was actually a relatively small change, with ruma-client-api receiving support for room types and ruma-events receiving support for the event types
We're swapping out ruma-signatures' crypto library. Since
ring, which is what we've been using so far, doesn't currently support cross-compilation to WASM, there's long been some interest to exchange it for something else for webbrowser homeserver experiments. A viable alternative library was identified a while ago and now @ShadowJonathan has taken on the task of implementing the switch.
In addition to unblocking the WASM usecase, this work revealed a bug in
ring, which generated invalid PKCS#8 documents. We are pretty confident that once the switch away from
ring(including a small compatibility shim to convert the invalid documents), a certain class of signature verification failures that Conduit has been getting will be fixed.
We're taking part in GSoC again. As you might have seen in the earlier blog post, two students are working on Ruma as part of GSoC this year: @Frinksy (for the first time) and @DevinR528 (for the second time).
Apart from that,
@jplatte (that's me) made ruma-client independent of the underlying HTTP client library
Dept of Ops 🛠
This Ansible playbook is meant to easily let you run your own Matrix homeserver.
Slavi told us:
By default, we still install Element, as Hydrogen is still not fully-featured. Still, people who'd like to try Hydrogen out can now install it via the playbook.
Additional details are available in Setting up Hydrogen.
To get started, see our Setting up Heisenbridge bouncer-style IRC bridging documentation.
Dept of Services 🚀
etke.cc is "spantaleev/matrix-docker-ansible-deploy as a service" and we got some updates:
New services: miniflux, wireguard, languagetool, email service for you domain (based on awesome Migadu) and consultations
Website redesign - made with ❤ ourselves instead of old generic template
announcements room migrated to public room without encryption, but with invites and previews
Dept of Bots 🤖
Community -> Space Bot
spacebot makes quick work of the conversion by translating as much as possible to the Space structure. Simply DM the bot and say
!convert +group:example.organd it'll go off and make your Space.
The bot doesn't invite everyone from your Community to your Space, giving you a chance to configure the Space further before advertising it within your rooms.
The source can be found on GitHub if you feel like running your own or seeing how simple it is under the hood. #spacebot:t2bot.io is a great place to get help if you're having problems getting it going, and #help:t2bot.io would be glad to assist you if the t2bot.io deployment doesn't do the right thing.
P.S.: Spaces are currently considered Beta in Element, so they might not be perfect just yet. #spaces:riot.ovh is the room to join if you have questions about Spaces.
Hemppa the Bot is a multipurpose bot for writing modules super easily in Python.
Hemppa the bot is a general purpose Matrix bot written in Python. This week it gained two useful admin tools: Kick by wildcard (for cleaning up zombies after bridge decomission) and making tombstones to point room to a new one. https://github.com/vranki/hemppa
Dept of Interesting Projects 🛰️
raspberry-noaa-v2 matrix support
A little bit different, but matrix related, this week I added Matrix push support to the raspberry-noaa-v2 project. This is a project which runs on a raspberry pi to automate receiving, decoding and post processing of images over radio from weather satellites. It's easy to build a cheap ground station for this with little more than a USB SDR dongle and a metal coat hanger. If you want to see the pictures I am decoding you can join #weather:cadair.com.
Cadair, living in the north of England, will only see this symbol unfortunately 🌧️
Server_Stats Voyager Project
The Project now has a proper webpage at https://serverstats.nordgedanken.dev/ !
Newly added Features are:
A List of all the rooms that are found
A list to find the links (either outgoing or incoming) for a room. So a 1 level deep view into the graph as a table.
An FAQ with some information about the project, known data issues and more
A websocket at
wss://serverstats.nordgedanken.dev/wsthat allows you to get the updates directly pushed as soon as a room lands in the db. Effectively the fastest way to get data updates.
Planned features for the webpage
AR and VR Graphs
A Space Finder that allows you to find the discovered spaces
Be aware that this page is very new and therefor might have bugs. It also isn't yet mobile optimized.
For questions, suggestions or fast updates check the #server_stats:nordgedanken.dev Room or for questions regarding issues with the bot in a specific room feel free to write a DM to MTRNord :)
Possible Bug that needs manual fixing
Due to a bug with my homeserver or synapse it happens for some rooms that synapse generates a lot of join events (Lots of "server_stats bot made no change" messages). If you see this please write a message to MTRNord so I can manually prevent my bot from trying to join the room over and over again as I cannot easily detect this kind of issue before joining.
The issue can be followed at https://github.com/matrix-org/synapse/issues/10021
midnight from cvwright
This might be of interest for TWIM. It's a little web app that supports token-based registration in the Matrix UIAA. Sort of like matrix-registration, but aiming for compliance with the UIAA spec
Dept of Built on Matrix 🏗️
Circles, new social network on top of Matrix
Circles is a new project to build an E2E encrypted social network on top of Matrix. https://www.kombuchaprivacy.com/circles/ https://www.kickstarter.com/projects/cvwright/circles-a-secure-social-app-for-friends-and-family
It's really early days for this project, but please check it out!
Final Thoughts 💭
The fedora project is discussing which domain to take in https://discussion.fedoraproject.org/t/so-what-domains-should-we-use-for-our-matrix-server/29842
Un-burying the lede: Fedora are making the jump to Matrix!
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!