πŸ”—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:

MSCs in Final Comment Period:

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 the m.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, like gpg-agent), Emacs would automatically decrypt the file while reading its contents and then upload the decrypted contents. (This happened because the function insert-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 use insert-file-contents-literally instead.) Thanks to @welkinsl:matrix.org for reporting.

Additions

Changes

  • Activating a space in the room list uses ement-view-space (which shows a directory of rooms in the space) instead of ement-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 call ement-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

πŸ”—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.

RankHostnameMedian MS
1test.zemos.net251
2zemos.net435
3fluse.duckdns.org705
4075-141-169-120.res.spectrum.com:8446814
5infosec.exchange881
6kittenface.studio901.5
7rom4nik.pl3080.5
8matrix.netho.tk4976
9herkinf.de6026
10nerdhouse.io7082

πŸ”—#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.

RankHostnameMedian MS
1test.zemos.net110
2zemos.net153
3075-141-169-120.res.spectrum.com:8446188
4l1qu1d.net193
5nerdhouse.io234.5
6777.tf302.5
7kumma.juttu.asia342
8aguiarvieira.pt427
9matrix.org519
10davralin.work828

πŸ”—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