Matrix Live
Dept of Spec 📜
Andrew Morgan (anoa) [GMT-6] 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.
MSC Status
New MSCs:
- MSC4030: Progressive image in Matrix
- MSC4029: [WIP] Fixing
X-Matrix
request authentication- MSC4028: Push all encrypted events except for muted rooms
- MSC4027: Propose method of specifying custom images in reactions
MSCs in Final Comment Period:
- MSC3989: Redact
origin
property on events (merge)- MSC3821: Update the redaction rules, again (merge)
- MSC3077: Support for multi-stream VoIP (merge)
Accepted MSCs:
Closed MSCs:
- No MSCs were closed/rejected this week.
Spec Updates
This actually happened last week, but a huge shoutout to Kévin Commaille, aka @zecakeh, for their work on upgrading the OpenAPI schema data for the Matrix Spec to version 3.1. This schema describes all of the requests and responses for all endpoints in the spec, as well as various event types and other bits and pieces. It directly powers the Matrix spec website, the Matrix API Playground and several Client and Homeserver SDKs that generate code from it.
With a diff of
+14,997 −12,660
, this was a multi-month effort of both implementation and review (thank you @richvdh and @KitsuneRal!). This change will allow us to use all the new features that OpenAPI 3 has to offer, as well as generally keeps us up to date with modern tooling.Thank you!
Random MSC of the Week
The random MSC of the week is... MSC3051: A scalable relation format!
This MSC describes a different way of describing how an event relates to other events. In the current Matrix spec, you can use the
m.relates_to
property to indicate that this event (say, a reaction) relates to another event (say, a message) in a certain manner. You can specify how it relates using them.relates_to->rel_type
key; a value of "m.annotation" for reactions.But sometimes you may want to relate to multiple other events. For instance, what if that message you're reacting to is also in a thread? In fact, this MSC has come up recently as one possible way to solve the problem of efficiently discerning whether an event should belong in a thread or not (discussion). This MSC isn't the only option for solving such a problem - MSC4023 would also work, and both have tradeoffs.
MSC3051 could also allows for actions such as editing replies; both the text and the message it was a reply to. Neat!
Do read the MSC and give feedback if relations is something that excites you.
Dept of Servers 🏢
Telodendria (website)
An open source Matrix homeserver implementation written from scratch in ANSI C and designed to be lightweight and simple, yet functional
Jordan Bancino reports
A Matrix homeserver written in ANSI C, targeting POSIX operating systems.
- Telodendria v0.3.0:
v0.3.0
was just released earlier this week. It finishes out the client authentication portion of the specification, including a few basic profile management endpoints. This release also features full TLS support and some major architectural changes to make the code base easier to work with, the details of which I laid out in a previous TWIM.- Cytoplasm: A lot of the code that makes up Telodendria has been broken out into a separate C library for general-purpose use. I am calling this library Cytoplasm. At some point, it will live a life of its own, with its own website, releases, and Matrix rooms. But for now, it is still an integral part of Telodendria, so while it can be built and installed without Telodendria, you'll have to download the Telodendria source code to get it.
- Coming Soon: I think the main thing that has a lot of us really excited around here is that the next step for Telodendria is implementing rooms and events. I'm hoping that the next release,
v0.4.0
, due around the end of this year, will have all of the necessary components in place to allow very basic communication between local users.As always, feel free to say hi in #telodendria-general:bancino.net, and for more details, join #telodendria-newsletter:bancino.net to read the full-length newsletters. If you want to support Telodendria, please donate to the project.
Synapse (website)
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
Shay announces
This week we released 1.86.0rc2. Here are a few of the highlights:
- Support resolving a room's canonical alias via the module API
- Speed up
/messages
by backfilling in the background when there are no backward extremities where we are directly paginating- Correctly clear caches when we delete a room
- Enable support for MSC3952: intentional mentions
and much more. If you'd like to take a deep dive into the changes, you can find the release notes here and as always, if you encounter a bug feel free to report it at https://github.com/matrix-org/synapse/issues/new/choose.
Dept of Clients 📱
Neochat (website)
A client for matrix, the decentralized communication protocol
Tobias Fella says
Here's what's happened in the last three weeks of NeoChat development:
- You can now create spaces in NeoChat. You can't edit them yet, but it's a start 😀.
- NeoChat will no longer show outdated notifications.
- As part of the matrixification of Itinerary (stay tuned for more info about that), Volker implemented support for viewing MSC3489 Live Location Shares.
Ement.el (website)
Matrix client for Emacs
alphapapa says
TWIM: Ement.el, a Matrix client for the GNU Emacs text editor and Lisp machine, has been released at v0.10. Changes include:
Security Fixes
- When uploading a GPG-encrypted file (i.e. one whose filename ends in
.gpg
), if the recipient's private key or the symmetric encryption key were cached by Emacs (or a configured agent, likegpg-agent
), Emacs would automatically decrypt the file while reading its contents and then upload the decrypted contents. (This happened because the functioninsert-file-contents
was used, which does many things automatically, some of which are not even mentioned in its docstring; refer to its entry in the Elisp Info manual for details. The fix is to useinsert-file-contents-literally
instead.) Thanks to@welkinsl:matrix.org
for reporting.Additions
- Support for Single Sign-On (SSO) authentication. (#24. Thanks to Jeffrey Stoffers for development, and to Phil Sainty, Jakub Kadlčík, and Juanjo Presa for testing.)
- Bind
m
in room buffers toement-room-mark-read
(which moves read markers to point).Changes
- Activating a space in the room list uses
ement-view-space
(which shows a directory of rooms in the space) instead ofement-view-room
(which shows events in the space, which is generally not useful).- Command
ement-view-room
, when used for a space, shows a footer explaining that the buffer is showing a space rather than a normal room, with a button to callement-view-space
for it (which lists rooms in the space).- Command
ement-describe-room
shows whether a room is a space or a normal room.- Command
ement-view-space
shows the space's name and alias.- Command
ement-room-scroll-up-mark-read
moves the fully read marker to the top of the window (when the marker's position is within the range of known events), rather than only moving it when at the end of the buffer. (This eases the process of gradually reading a long backlog of messages.)- Improve readme export settings.
Fixes
- Extra indentation of some membership events. (Thanks to Steven Allen.)
- Customization group for faces.
- Don't reinitialize
ement-room-list-mode
when room list buffer is refreshed. (#146. Thanks to Ted Reed for reporting.)- Don't fetch old events when scrolling to the bottom of a room buffer (only when scrolling to the top). (Thanks to Steven Allen.)
- Minor improvements to auto-detection of homeserver URIs. (See #24. Thanks to Phil Sainty.)
- Uploading of certain filetypes (e.g. Emacs would decompress some archives before uploading). Thanks to
@welkinsl:matrix.org
for reporting.- Messages edited multiple times sometimes weren't correctly replaced.
Feel free to join us in the chat room, #ement.el:matrix.org.
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
Johannes Marbach announces
- Our changes to the notification settings are entering code review and we’ve started planning a beta release for further testing
- The Compound design library has been integrated as a dependency and we started working on an initial color and typography pass
- OIDC-native support is moving ahead. We’ve mostly finished provider discovery and are now implementing static and dynamic client registration.
- Our call sounds have been normalized using LUFS. Thanks to JMoVS for contributing this improvement. 🙌
Element X iOS (website)
Doug announces
- DMs will prompt you to re-invite the other user when trying to send a message after they left.
- Messages that failed to send can now be tapped to retry sending.
- Improvements to message decryption in notifications.
- Colours from our Compound design system are now used throughout the app.
- Adopted the new RoomList API from the Rust SDK.
- Work continues on message forwarding, static location sharing and improvements to reactions.
Element X Android (website)
Everything related to Element but not strictly bound to a client
benoit announces
- Element X Android is getting more and more features and polishing, especially around the timeline. We will also work on the room list screen to make it as snappier as ever.
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
Doug reports
- Version 1.10.13 is available on TestFlight with the Jitsi screen sharing feature and an increased voice message length of 5 minutes.
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
benoit says
- We have started the roll out of Element Android including the Crypto Rust SDK for 5 % of the users in production. We will create a new version 1.6.3 to fix an issue which occurs during the database migration.
- In the meantime we are fixing more crashes and more ANR.
Dept of SDKs and Frameworks 🧰
simplematrixbotlib (website)
simplematrixbotlib is an easy to use bot library for the Matrix ecosystem written in Python and based on matrix-nio.
imbev announces
v2.9.0
Notes:
- Improvements :)
Additions:
- Add sending of reactions
- Add recovery if stored access token is invalid
- Show proper error message when connection fails
Modifications
- Improve api docs
- Fix circular import bug
- Update matrix-nio dependency to 0.20
- Update pillow dependency to 9.0
Removals:
- None
Deprecations
- None
matrix-rust-sdk (website)
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
Jonas Platte says
- Fixed processing of state events for invited rooms in sliding sync
- Added
Timeline::cancel_send
for cancelling local echoes that failed to send- Added
RoomList
API, replaces direct access to sliding sync for GUI clients- Use
short_authentication_string
fromm.key.verification.start
inm.key.verification.accept
- Always fall back to auto-discovered sliding sync proxy URL
- Properly support the
hkdf-hmac-sha256.v2
MAC method for SAS verification- Timeline: Add loading indicator before waiting for
prev_batch
token- Make store requests in btch for
Room::get_members
- Sliding Sync: Lazily generate and include the transaction id, only if it's useful
- Fix wrong room state for invites with Sliding Sync
- Make upload progress observable (WIP)
Notification
API (WIP)
Dept of Bots 🤖
TeXLily (website)
LoaD Accumulator announces
For a while, I and a couple of other people have been working and testing on a bot to parse LaTeX and LilyPond expressions. This allows people on clients like Nheko to send and see math equations on LaTeX(and even more, like custom packages, and TikZ support) and sheet music with LilyPond, both on normal, and encrypted rooms!
Check out the code(and maybe host your own): https://codeberg.org/lda/TexLiLy (mirror), https://git.freetards.xyz/lda/TexLiLy (original)
maubot (website)
A plugin-based Matrix bot system.
wreck announces
I have written a handful of Maubot plugins which help me manage my private community on matrix, and figured I could share them a little more publicly with the world:
maubot-welcome is a greeter bot for when new users join a room, and can optionally alert admins in a separate notification room that someone new has joined. maubot-createroom allows admins to issue a simple command to create a new room and automatically connect it to a Space, saving you the trouble of configuring it with default settings manually. maubot-join is a helpful plugin that allows you to turn off Maubot's auto-join feature, and rest assured that only a known list of users can invite your maubot to any new rooms. maubot-kickbot will watch activity within the rooms in a Space and generate a report of inactive users. If you make your bot a moderator (or whatever your appropriate power-level is), the bot can also kick inactive users out of all rooms in the space and the space itself. Helpful for tidying up your community.
all of these plugins, and any other Maubot plugin I come across, can be found in a hopefully-easy-to-use list at https://maubotplugins.mssj.me. Please feel free to submit more that aren't here!
flip-matrix-bot (website)
A Matrix bot for the Friendly Linux Players community.
HER0 announces
Hey, I haven't updated here in a while! Shortly after my last update, I did some refactoring work that made the code a little nicer and more testable, then added some more unit tests in, along with implementing CI. After this, I took a bit of a break from working on the bot.
Earlier this week, I implemented an idea suggested by a community member and contributor to the bot: users joining our main Matrix room (#flip:flip.earth ) are now greeted by the bot. This includes a random prompt/ice breaker to help get the conversation going. The first two times this was triggered, it spurred a bunch of conversation, so I'm pretty happy with it so far!
On the website side, the events page now lists the next upcoming event at the top. Outside of our development work, several FLiP community members participated in a Q&A session with GitLab, resulting in the following blog post (published last month): Building a more inclusive gaming community with GitLab.
Dept of Events and Talks 🗣️
Matrix @ FrOSCon this year
Oleg announces
On August 05-06 the annual Free and Open Source Conference (short FrOSCon) will take place at the German University of applied Sciences Bonn Rhine Sieg.
As German Matrix community grown rapidly in the last years, this is a great opportunity to meet each other and hack together.
Matrix Dev Room
We will be organizing a Devroom this year. The idea is to exchange on the latest Matrix development and projects, get to know each other and drink
<your_favorite_beverage>
together on the Saturday evening. 😉To make it happen we need your help!
Devroom is living from talks and workshops - this is your chance to present your Matrix project or to do a workshop on Matrix!
- Language: German or English
- Due date: please give us feedback ASAP so we can plan now
Also help in organizing the Devroom (moderation, timekeeping, etc) is needed.
Matrix Open Source booth
It was a great place to chit-chat and to get your in-depth answers regarding Matrix at FOSDEM this year. 👍️
We will have a Matrix booth at FrOSCon as well.
We need your support in answering questions about Matrix or just to have a good time at the booth. If you have experience with Matrix and want to help us out at the booth - get in touch with us!
Get in touch
If you want to take part please contact @oleg:fiksel.info (or [email protected]) ASAP to add you to the Devroom/booth participants list.
BTW: we also have a Matrix FrOSCon room
German
Matrix auf der FrOSCon dies Jahr
Dieses Jahr wird die FrOSCon (Free and Open Source Conference) in-person ablaufen.
Das ist eine gute Möglichkeit die Deutsche Matrix-Community zusammen zu bringen.
Deshalb organisieren wir eine Devroom und ein Matrix-Stand.
Eine Devroom lebt von Vorträgen und Workshops.
Wir brauchen eure Hilfe!
Wollt ihr euer Matrix-Projekt vorstellen oder ein Workshop machen - das ist die Möglichkeit!
Auch brauchen wir Hilfe beim Moderieren vom Devroom.
Beim Matrix-Stand werden wir auch Unterstützung brauchen.
Wenn ihr interessiert seid kontaktiert mich (@oleg:fiksel.info oder [email protected]) bitte umgehend, damit wir kurzfristig einen Plan machen können.
Dept of Guides 🧭
Matrix Client Tutorial
uhoreg says
As promised, I've been working on the end-to-end encryption chapter of my Matrix client tutorial. I've recently added an sections on uploading device keys and one-time keys and keeping track of recipient devices, both which of were much longer than I expected (and they're not even complete yet). Next up is the Megolm encryption and decryption section. As usual, feedback is welome. The source code is at https://gitlab.com/uhoreg/matrix-tutorial
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.
#ping:maunium.net
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank | Hostname | Median MS |
---|---|---|
1 | test.zemos.net | 251 |
2 | zemos.net | 435 |
3 | fluse.duckdns.org | 705 |
4 | 075-141-169-120.res.spectrum.com:8446 | 814 |
5 | infosec.exchange | 881 |
6 | kittenface.studio | 901.5 |
7 | rom4nik.pl | 3080.5 |
8 | matrix.netho.tk | 4976 |
9 | herkinf.de | 6026 |
10 | nerdhouse.io | 7082 |
#ping-no-synapse:maunium.net
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 | test.zemos.net | 110 |
2 | zemos.net | 153 |
3 | 075-141-169-120.res.spectrum.com:8446 | 188 |
4 | l1qu1d.net | 193 |
5 | nerdhouse.io | 234.5 |
6 | 777.tf | 302.5 |
7 | kumma.juttu.asia | 342 |
8 | aguiarvieira.pt | 427 |
9 | matrix.org | 519 |
10 | davralin.work | 828 |
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.
Support us