Dept of Status of Matrix 🌡️
A few Matrix folks went to IETF115 this week, and here is my Trip Report: Can Matrix help messaging standardisation through MIMI?
Dept of Spec 📜
Andrew Morgan (anoa) 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://matrix.org/docs/spec/proposals.
MSCs in Final Comment Period:
- No MSCs are in FCP.
This week the Spec Core Team has been working with the IETF More Instant Messaging Interoperability (MIMI) working group to define a charter. With a charter, the working group is able to start thinking about implementation and design details, which means talking even more about Matrix!
We had the opportunity to discuss Matrix with several interested people at IETF this week, and are extremely excited for the (long) road ahead: even in the event where Matrix doesn't get accepted, we hope the protocol(s) the working group publishes will be fit for purpose and adopted widely (not to mention our own spec will be better as a result).
To find out more about what we're doing in this space or to learn more, check out this week's Matrix Live above!
Random MSC of the Week
The random MSC of the week is... MSC3381: Polls (mk II)!
Polls! They are useful for quickly gauging whether a group of people agree, or entirely disagree on a topic or choice. This is an MSC with a fairly long history, but has received experimental implementation in a small number of Matrix clients. The concept uses Extensible Events, and there are plans to rewrite it off the back of changes in MSC1767 (extensible events). But for now, it works and is a fun feature.
It's likely worth waiting for the rewrite before commenting on the MSC with detailed changes, but otherwise feel free to have a read to see how it currently works!
Dept of Servers 🏢
Feta is a Matrix server distribution for the Raspberry Pi 3 and 4.
It is a an operating system image, based on Raspberry Pi OS Lite and includes the Matrix Synapse server, a self-hosted Element client, Postgres database, and it generates an SSL certificate for your domain using Certbot. The coturn TURN server is also included so voice and video calls work without any additional configuration.
The provided setup script will have your server up and running in a matter of minutes.
All you need to do is configure your DNS settings for your domain, forward some ports through your router, and boot up your Raspberry Pi. Once setup is complete, enjoy your new Matrix server! Synapse, Element, Postgres, coturn, and federation are all preconfigured for you.
Visit https://www.feta.bz/ to download and get more info.
Head on over to #feta:matrix.org for discussion and updates!
An open source Matrix homeserver implementation written from scratch in ANSI C and designed to be lightweight and simple, yet functional
Jordan Bancino says
- Donations: Both recurring and one-time donations are now accepted via LiberaPay and Stripe, respectively—GitHub Sponsors is hopefully coming soon. All funds will go directly to infrastructure and development labor. You can find the donate links on the website, and the GitHub mirror.
- Memory/Network Improvements: Another week brings another round of memory and socket handling improvements.
- Patch Submission: It's now easier than ever to contribute to Telodendria thanks to the new
send-patchscript. Submitting your changes for review is now only a single command.
- Newsletter: Catch the full-length newsletter in #telodendria-newsletter:bancino.net.
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
Synapse 1.71.0 has been released! It contains the usual round of bugfixes and performance improvements, plus some new features. Notably, Synapse now supports:
- back-channel logouts from OpenID Connect providers.
- Postgres and SQLite full-text search operators in search queries.
- MSC3664, push rules for relations.
Server administrators should be aware that:
- legacy Prometheus metric names are now disabled by default, and will be removed altogether in Synapse 1.73.0. If not already done, server administrators should update their dashboards and alerting rules to avoid using the deprecated metric names.
- Synapse 1.71.0 will be the last release to support PostgreSQL 10. Server administrators are encouraged to upgrade their PostgreSQL servers before the next release, if needed.
You can read more about v1.71.0 here: https://github.com/matrix-org/synapse/releases
In the mean time, the team has been working on the remaining parts of faster room joins.
Dept of Bridges 🌉
An Email to Matrix bridge. 1 room = 1 mailbox.
Postmoogle vUnreleased is here!
Yep, no pinned release yet, but there are some exciting features in the
You can have one main email domain (eg: the-etke.cc) and multiple additional domains that will be used as aliases (not-etke.cc, example.com), so you can get more spam to the [email protected], [email protected] and [email protected] at the same time!
bridged thread replies!
the last planned feature of the roadmap: send reply (reply-to or thread reply) to an email message in the matrix room and it will automatically set all magic stuff (
In-Reply-Toheader, subject with
Re: %original message's subject%, etc) and send email. It's pretty rough implementation, so feedback is appreciated!
Source code and say hi in the #postmoogle:etke.cc room
Dept of Clients 📱
Hydrogen is a lightweight matrix client with legacy and mobile browser support
Released v0.3.4 (and v0.3.3) with a join room UI and lots of bug fixes! Special thanks to Isaiah Becker-Mayer for his numerous typescript PRs!
Some of the fixes are for:
- an error that can stop sync
- an issue where hydrogen did not verify senders of room keys!
- message verification not working in rooms where we haven't sent a message yet
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- 1.11.14 is out, with many improvements to threads!
- This week, we fixed some issues, including a bug with media uploads
In labs (you can enable labs features in settings on develop.element.io or on Nightly):
- We’ve added more functionality to the rich text editor, it’s catching up slowly with the basic composer
- Voice broadcast also has a few new tricks up its sleeve, including improvements to pre-recording and message length
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- We have been working hard on improving the Element experience and to that extend we have fixed some crashes, squashed timeline layout issues, improved the device manager and the new rich text editor
- Work is also continuing on thread notifications and the new crypto frameworks
- ElementX on the other hand received support for offline logins, message editing, video and encrypted messages in the timeline and a brand new underlying navigation mechanism
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- Element Android 1.5.7 has been pushed to production on the PlayStore and should also be available for F-Droid users soon. This version fixes the issue when sharing items to the app, and also fixes the regression observed in 1.5.6 (before it reaches production!) during the first sync with the server.
- We are making progress on ElementX, which is a new client using the Matrix Rust SDK and Jetpack Compose. This app is now able to display a timeline and send messages to a room using the wysiwyg composer.
Dept of SDKs and Frameworks 🧰
Multiplatform Kotlin SDK for Matrix
We released Trixnity 3.0.0-beta3, which supports the matrix spec 1.4 and new relation types: reply (without fallback), replace, thread (basic support, no separate timelines or client aggregations yet).
simplematrixbotlib is an easy to use bot library for the Matrix ecosystem written in Python and based on matrix-nio.
Version 2.8.0 released!
This version brings a few improvements.
The sending of video messages has been added. The following handler will send a video after any message from another user:
async def example(room, message): match = botlib.MessageMatch(room, message, bot) example_video="./videos/example.mp4" if match.is_not_from_this_bot(): await bot.api.send_video_message( room_id=room.room_id, video_filepath=example_video)
Thanks to moanos and HarHarLinks, there are improvements to the handling of device ids.
Join us in the Matrix room at https://matrix.to/#/#simplematrixbotlib:matrix.org or the Git repository at https://codeberg.org/imbev/simplematrixbotlib !
Version 3.0 coming soon!
A set of Rust library crates for working with the Matrix protocol. Ruma’s approach to Matrix emphasizes correctness, security, stability and performance.
Jonas Platte announces
Since our last update in June (yeah, sorry...), we released Ruma 0.7.0 and a few patch releases including all of the following and more:
- Support for refresh tokens (MSC2918 / Matrix 1.4)
- Unstable support for discovering an OpenID Connect Server (MSC2965)
- Unstable support for private read receipts
- Lots of API refinements, like renaming
- Support for Room Version 10
- Unstable support for sliding sync
Since this release was released back in September, a bunch of things have also happened that are not released yet:
- Many features were moved out of unstable feature flags because they were stabilized in Matrix 1.4
- We made message construction easier than ever with improvements to markdown detection and improvements to reply and edit creation
- We refactored and extended the push notification code
- We are about to conclude a massive refactoring that should make our codebase look less strange if you are familiar with Rust, and could help compile times as well
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
This week has seen important strives forward on sliding sync, which now has a PR up for offline support and the new timeline API, with some initial unittests and video messages support merged and support for file messages coming up. On the FFI, we now have support for logging in Android and work on moving the iOS binding scripts into our internal xtask cli.
As usual a lot of work is been going in the background without any visible, tangible outcome yet. On one side we are making great progress on getting a first async-prototype for uniffi with python working, on the other we have been profiling the sdk on iOS mobile devices for its memory footprint - which is a major blocker for notification support.
️👉 Wanna hack on matrix rust? Go check out our
help wantedtagged issues and join our matrix channel at Matrix Rust SDK.
Dept of Events and Talks 🗣️
There will be a Matrix Devroom at FOSDEM next February 🎉 We will issue a CfP very soon™
Dept of Interesting Projects 🛰️
Matrix Plays GameBoy games
Using this Lua script and NodeJS bot, you can remotely control any GameBoy (Classic + Color + Advance) game using the mGBA emulator. Invite some friends to the Matrix room and everyone can control the game at once. Yes, the project name is a reference to the famous "Twitch Plays Pokémon" stream which has 1000s of people complete Pokémon games together just by typing into a chat.
This is a bot and does not need an AppService registration.
Disclaimer: This is a hobby project of mine. It is neither associated with nor endorsed by my employer or Nintendo. The project does not contain ROMs or other non-free assets.
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.
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!