Dept of Spec 📜
Andrew Morgan (anoa) reports
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.
- MSC3980: Dotted Field Consistency
- MSC3979: Revised feature profiles
- MSC3977: Matrix as a Messaging Framework (IETF/MIMI)
MSCs in Final Comment Period:
- No MSCs were merged this week.
The Spec Core Team has started to publish their weekly list of MSCs to focus on reviewing in the Office of the Spec Core Team room. The list consists of the MSCs that are ready for immediate review, and would most help advance the Matrix protocol on any given week. This used to happen internally (they started out as weekly ping by a bot, and then slowly became curated by our resident human, Travis). But the idea to publish the list both allows people to easily follow along with what they're doing on a weekly basis (much like these posts, but in real time!), as well as helps push subsequent discussion to public channels.
Otherwise, Travis continues to be hard at work integrating Matrix into the IETF process. MSC3923 - initially published in November 2022 - was proposed for FCP this week (and has nearly passed!). Additionally, MSC3977 was published this week and talks about how Matrix is a great fit for the goals of the IETF's MIMI working group.
This is all ahead of the IETF 116 event which starts on March 26th. The Matrix.org Foundation will be attending remotely.
Random MSC of the Week
The random MSC of the week is... MSC3735: Add device information to m.room_key.withheld message!
This MSC proposes adding a new field,
m.room_key.withheldmessages. This to-device message type is used to inform devices why a megolm session was not sent to them after they requested it.
Devices can request megolm sessions from multiple devices at once, but upon receiving a
m.room_key.withheldmessage from one of them is currently unable to tell which of the devices responded with that message.
from_devicefield should not be added to
m.room_key.withheldmessages that are sent outside of key request flows.
Dept of Servers 🏢
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
Friday, Friday, Friday, also known as TWIM day. We here at Synapse have another release for you: Synapse v1.79.0. As always it is packed with features and bugfixes. Some notable highlights include:
- Added media information to the command line user data export tool.
- Added an admin API to delete a specific event report
- Added support for knocking to workers
- Fixed a bug introduced in Synapse 1.79.0rc1 where attempting to register a
on_remove_user_third_party_identifiermodule API callback would be a no-op
- Fixed a long-standing bug where a URL preview would break if the discovered oEmbed failed to download
and much more. Feel free to take a deep dive in the release notes and have a happy Friday!
Second generation Matrix homeserver
This week we released Dendrite 0.12.0, which marks the end of polylith/HTTP API mode.
- The userapi and keyserver have been merged (no actions needed regarding the database)
- The internal NATS JetStream server is now using logrus for logging (contributed by dvob)
- The roomserver database has been refactored to have separate interfaces when working with rooms and events. Also includes increased usage of the cache to avoid database round trips. (database is unchanged)
- The pinecone demo now shuts down more cleanly
- The Helm chart now has the ability to deploy a Grafana chart as well (contributed by genofire)
- Support for listening on unix sockets has been added (contributed by cyberb)
- The internal NATS server was updated to v2.9.15
- Initial support for
runtime/tracehas been added to further track down long-running tasks
session_idis now correctly set when using SQLite
- An issue where device keys could be removed if a device ID is reused has been fixed
- A possible DoS issue related to relations has been fixed (reported by sleroq)
- When backfilling events, errors are now ignored if we still could fetch events
- ⚠️ DEPRECATION: Polylith/HTTP API mode has been removed
- The default endpoint to report usages stats to has been updated
If you have a Dendrite homeserver, staying up-to-date is highly recommended so please upgrade when you can. Otherwise, if you want to play with Dendrite without having to set up your own infrastructure, the dendrite.matrix.org homeserver is open for registration (upon completion of a CAPTCHA, so you may need to register using Element Web).
As always, please feel free to join us in #dendrite:matrix.org for related discussion.
A performance-oriented homeserver with minimal dependencies.
Jason Volk says
Construct is inching closer toward public-registration safety for its upcoming 1.0 release. This week I'd like to thank tiix for helping me fix a bug in the registration availability checker, and @dynfox for dropping some documentation for how to launch Construct dockers with certbot.
I'd like to thank @qg:schildi.chat and @bgiovanni for helping me hunt down an elusive auth-rules divergence between Synapse and Construct. This bug affects Synapse users who have been kicked from a room before the summer of 2022 by an admin who runs Construct. After Synapse 1.62, those users are not able to rejoin that room -- ever. This was due to a bug which added unnecessary
auth_eventswhich is no longer accepted by Synapse after that version. This is now fixed on our end going forward, but fixing this retroactively is something I'll be working on over the weekend. I'd like to send my regards to Philantrop 🏳️🌈 who first brought this to my attention and is still trying to get back into #construct:zemos.net even at this very moment. Don't worry, we haven't forgotten you! 😁
Construct has over five years of battle-tested experience federating at scale from the very first days of Matrix. If you're looking for an alternative to Synapse to run on a cheap host: less than or equal to 100% CPU usage is our guarantee or your money back. I use it every day at
Homeserver Deployment 📥️
Helm Chart (website)
Matrix Kubernetes applications packaged into helm charts
My Helm Charts continue to be updated regularly, now offering an improved first-install experience for Synapse through running the original signing key generation as an install hook. The sliding sync proxy is now also packaged as a Chart for those wanting to spin one up to test with.
Dept of Bridges 🌉
A multi purpose multi platform bridge, formerly known as matrix-github
Hookshot 3.0.0 storms in and demands attention
Howdy folks, another big release for you coming up. So you remember how last week Justin and Myself came onto Matrix Live to talk about the new bridge widgets and show off how sleek and snappy they are? Well, Hookshot is also getting some updates of a similar flavor. The more observant of you may be starting to notice a pattern of us tarting up our public integrations. Something might well be on the horizon very, very soon :)
In the meantime, here are the latest changes for Hookshot 3.0.0:
- Add support from migrating go-neb services to Hookshot (#647)
- Implement grant system to internally record all approved connections in hookshot. (#655)
- Add support for logging into GitHub via OAuth from bridge widgets. (#661)
and a bunch of other changes too!
You'll notice we're migrating to a grant system for approving connections, which is why this is considered a breaking major release. Please check the notes before updating and give us a quick message if you have any issues or concerns.
And with that, I wish you all a great weekend!
Dept of Clients 📱
Matrix messaging app for GNOME written in Rust.
Kévin Commaille reports
As predicted 3 weeks ago, Fractal 4.4.2 has been released and is available on Flathub.
As a reminder, there are no new features, but it makes Fractal compatible with newer versions of our dependencies. Big thanks to everyone who tested the beta version and feel free to uninstall it.
In another news, let's talk a bit about Fractal 5…
We have finally implemented one of the most annoying missing features: sending read receipts and updating the fully-read marker. What is doubly great about this, is that we are now only one feature away from being regression-free compared to our stable release (and a merge request is opened for the last one)!
This means that a beta release is around the corner, but we also have serious performance issues to resolve first. We hope that switching to the new store backend currently developed in the Matrix Rust SDK will fix some of it, but we still need to investigate properly how we can improve the situation.
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
Danielle 🪖 announces
- We’re working on the remaining pieces related to sunsetting Gitter.
- Investigations on Stuck Notifications also are continuing and we think we’ve cracked part of the nut - an MSC coming soon!
- Our general work on Notifications is also still progressing with some critical MSCs starting to complete their final comment period
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- On Element X this week we’ve been focussed on creating the UI for new chat, and other improvements to the DM flow.
- We’ve also be adding mentions and slash commands to the new text editor and making improvements to permalinks, so tagging people in the timeline should be even easier!
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- This week the Element X team for Android have been setting up the foundations for push notification, the room list, and translations
- We’ve also been adding support for mentions and slash commands in the new text editor
- Permalinks and pillifying MXIDs have also been getting improvements too.
Dept of Non Chat Clients 🎛️
mnotify got a few updates:
- there is now a matrix channel: https://matrix.to/#/#mnotify:hackbrettl.de
- it can now also send emote
mn send --emote(in element:
/mecommand) and notice
mn send --notice(e.g. someone left a room or anything else changed) messages
- information about the current login (e.g. the homeserver url or the token) can be printed with
mn homeserveror short
mn hs, to ease the development of scripts which use
curlfor special requests
- typing notifications can be send with
- currently I am working on joining rooms
E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.
We just published a new Android beta of Circles, the E2E encrypted social network app.
Updates in the v1.0.10 release include:
- New feature: User profiles as Spaces, with an updated "People" tab showing the people who you're connected with
- New feature: Scan a friend's QR code to connect with them (ie to knock on their profile Space room)
- New feature: Notifications using Sygnal or ntfy
- Bugfix: Better detection of
Interested users can get this latest beta from all the usual sources:
- Our F-Droid beta repo: https://circu.li/fdroid/repo/
- Google Play: https://play.google.com/store/apps/details?id=org.futo.circles
- Source code: https://gitlab.futo.org/circles/circles-android/-/tags/v1.0.10
Dept of SDKs and Frameworks 🧰
Elm SDK (website)
The Elm SDK has reached an unofficial alpha version! It can be downloaded and used for testing purposes. Now that the core has been finished, the exposed modules
Matrix.RoomInviteare available with the following features:
- Automated login & sync
- Joining / leaving rooms
- Accepting / rejecting invites
- Receiving the latest events of a room
Before publishing a version 1.0.0, I aim to implement the following features:
- Automated login & sync for spec version
v1.1and legacy versions
r0.6.1using sync v1
- Room membership manipulation (invite, kick, ban, knock users/rooms)
- A few QOL functions to explore a room's state
You may expect these in the next few weeks. On to a version 1.0.0!
Repo: https://github.com/noordstar/elm-matrix-sdk Public room: #elm-sdk:matrix.org
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
Jonas Platte reports
- This week, a lot of functionality was added to our foreign language bindings for Swift and Kotlin:
- We also added a guide for contributing to those bindings
- We added more detailed event verification states
- We added a convenience method for setting the room name (but not for the bindings yet)
- We fixed another set of bugs in Sliding Sync
- We fixed a small bug around OIDC
- We added support for highlighted messages in the timeline (follow-up PR)
Shout-out to Kévin Commaille for contributing many of these improvements in his free time!
Dept of Ops 🛠
GitHub Action (website)
I have pushed a small update to my GitHub Action to send matrix notifications about builds. It now correctly backs off if it's rate limited by the matrix server, and has a new option to combine all successful statuses into a single reaction, which is useful if you have a lot of builds.
Matrix server setup using Ansible and Docker
Learn more from our changelog entry.
Dept of Bots 🤖
A Matrix bot for the Friendly Linux Players community.
In the past two weeks, there have been a bunch of small improvements. The events page of the community website now lists upcoming events, and the event pages themselves have received some polish. As a result, links to event web pages are now included in the output of several commands. This makes it easier to see the event time in your local time and to share the event with people who are not in the Matrix room.
Besides website-related improvements, I took some time to add unit tests for the lowest-hanging fruit parts of the code. There are more tests to be added, and further testing improvements may be possible in the future after some refactoring, but this is not a high priority for me right now.
Dept of Interesting Projects 🛰️
bridged.to project idea handing over
Alexey Murz Korepov reports
Searching for people to hand over a business idea of paid bridges for Matrix users to other messengers, for free!
I have a business idea to make a paid service for bridging Matrix (matrix.org) with other messengers using the Bridges feature (https://matrix.org/bridges/). It's like beeper.com, but which works with any MXID on any homeserver. And like t2bot.io, but commercial one and with more bridges available. Yes, t2bot.io is a great project, but free services usually got occupied by a lot of accounts, especially by spammers, and managing all of them for free sounds not so perspective to me. But bridged.to could also provide some free services for the community.
For that purposes I’ve bought a bridged.to domain several years ago, to make cool identifiers of bridges like
But I still can’t find time to implement this idea at all. So, I’ve decided to stop paying for this domain and want to hand over this domain and the whole idea to someone else, who has the time and energy to implement this project.
The idea was to make the payments flexible, per-bridge, for example, $1 per month for each bridge. So, if a user will use bridges to Telegram + FaceBook + Instagram + WhatsApp, they will pay $4 per month, if they stop using some bridges - they pay less. And give a free trial period of 2 weeks for new users, to give it a try.
From the technical point of view, this should look like a standard Synapse server with a custom python module that just block-unblocks sending of messages by the user’s account balance, and also can gather some usage statistics (number of bridged messages per user, etc), and bridges instances, connected via appservices. And some admin panel with UI to manage and administrate this.
All this sounds easy to implement, but I have a lot of tasks at my main job, so have no time to accomplish this, and have decided to hand over this idea to someone else, who might be interested in it, for free.
So, if you’re interested in this idea or want to know more, or even just want to grab the cool bridged.to domain for free - please feel free to contact me via Matrix - @murz:ru-matrix.org.
The domain annual cost is $41.98, it's on namecheap.com, expires at Mar 28, 2023.
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!