This Week in Matrix 2022-11-04

Matrix Live

Dept of Spec 📜

Andrew Morgan (anoa) says

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.

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

Closed MSCs:

Spec Updates

This week we've been continuing our mission to define Matrix as the interoperable standard for instant messaging! With many of our discussions expected to happen next week in this area, we've prepared some drafts for the wider community to review (with even more on the way!). With MSC3923, we're asking for feedback on whether people think the approach is something that could work for Matrix, though there is a cautionary note that there's a lot of TODOs to fill still.

We hope to have even more news next week, but as a reminder: The IETF process is fairly slow-moving as it takes a lot of time to get through the different stages. Keep an eye on MSCs tagged "IETF" or "MIMI" - or watch this space - for updates on how it's going 🙂

Random MSC of the Week

The random MSC of the week is... MSC3911: Linking media to events!

This MSC attempts to be an addition to authenticated media in matrix (specifically MSC3916) where successful authentication would also be conditioned on whether or not the user was able to view an associated event in a Matrix room. In plain english, that means that if the media was sent in a room, then you'd need to be in that room to be able to see the media (even if you tried to load the media outside of a matrix client). This change helps address some concerns about media leaking outside of the room it was sent. It also opens up possibilities to delete media if all associated events have been redacted.

Check it out if you're interested in advancing media in Matrix!

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

Telodendria is moving along slowly but steadily. Here are a few brief things to note for this week:

  • GitHub: There's now a read-only Git mirror of the source code hosted on GitHub, which you can browse online, or clone if you want to do local work with it.
  • Network & Memory Improvements: I did a lot of work with my debugger this week and made a number of network and memory improvements that make Telodendria much more stable and efficient.
  • Data API: I just have begun writing code for persisting data and caching it. At the current pace, I'd expect to see that done around the end of this year.
  • Get Involved: If you want to speed up development, I'm happy to delegate any of the tasks in TODO.txt to you.
  • Matrix: As a reminder, Telodendria is organized entirely on Matrix at #telodendria:bancino.net. There you'll find a number of rooms for various purposes, including submitting patches, discussing Telodendria, and digesting the official newsletter. Feel free to stop by, even if it's just to say hi and express your interest in the project.

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Shay reports

Welcome to another Friday! Here in Synapse-land we have been hard at work on this week's release candidate: v1.71.0rc2. It contains bugfixes, a few new features, and continued work on speeding up Synapse. Some notable elements are:

  • 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 now supports back-channel logouts from OpenID Connect providers.

  • Synapse now supports use of Postgres and SQLlite full-text search operators in search queries.

  • Synapse now implement MSC3664, Pushrules for relations.

You can read more about v1.71.0rc2 here: https://github.com/matrix-org/synapse/releases

Swiclops (website)

A Matrix user-interactive authentication (UIA) server

cvwright announces

Announcing the first alpha release of Swiclops, a server that handles authentication, registration, and other user management tasks for a Matrix homeserver like Synapse.

Swiclops can be configured to provide user-interactive authentication (UIA) on the Matrix /login endpoint, similar to MSC2835. This opens up many exciting possibilities for the future, including:

  • Requiring acceptance of the latest terms of service at login
  • Multi-stage authentication protocols, such as WebAuthn or PassKeys, or various password-authenticated key exchange (PAKE) protocols
  • Two-factor authentication

Authentication Modules

  • MSC3231 Registration Tokens
  • Token-based email validation
  • Cryptographic password-based login that does not expose users passwords to the server
  • Legacy password auth (ie m.login.password)
  • Terms of service
  • (Coming soon!) Support for registration with paid subscriptions via the Apple App Store and Google Play Store
  • (Coming soon!) Support for Apple FaceID and TouchID

Source Code

Swiclops release v0.1.0

Installation

The easiest way to install Swiclops is by using Ansible and Docker. We have created an Ansible role for it in a fork of the popular matrix-docker-ansible-deploy playbook.

Dendrite (website)

Second generation Matrix homeserver

neilalexander says

We wouldn't ordinarily make so many releases in one week, but we've been quite busy! Instead of including the entire set of changelogs, please see the releases below which have more details about what's changed:

  • Version 0.10.7 today, which fixes a variety of things in /sync amongst other things
  • Version 0.10.6 on Tuesday, which optimises history visibility, improves E2EE and tweaks some state resolution code
  • Version 0.10.5 on Monday, which adds hCaptcha support, improves E2EE and a range of other fixes

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.

Homeserver Deployment 📥️

Ananace announces

This week has been quite calm, only a single update to my Helm Charts; element-web being bumped to 1.11.13

Dept of Clients 📱

SmallTalk (website)

Minimal Android messenger powered by Matrix

adam says

Quick update from SmallTalk - a tiny native android client, currently in BETA

  • Fullscreen zoomable image viewer
  • Muting room notifications
  • Rich text formatting (very WIP)
  • Bug fixes around Android 13 permissions and being unable to login on non synapse homeservers

There's been an effort to make the app chat agnostic through the abstraction of a chat engine, this could allow different chat protocols to be used or simply swap out matrix SDK implementations (like the matrix-rust-sdk!)

More information over at Github & #small-talk

Quadrix (website)

A Minimal, simple, multi-platform chat client for the Matrix protocol.

JFA announces

Quadrix v1.4.5 has been released and is available for mobiles and desktops in the respective app stores (Google Play, App Store, Mac App Store, Microsoft, Snap Store, Flathub).

The main improvement in this release is the added support for the .well-known API call, which allows to register and login on homeservers using a base domain URL.

Also, the displaying of redacted and edited messages has been improved.

I started testing Quadrix on the Conduit server implementation (thanks to @timo:conduit.rs for a test account on conduit.rs) and noticed right away some major issues. A few fixes are already included in this release.

Finally, for PinePhone users, the Ozone/Wayland switch has now been disabled in the flatpak build for Phosh, because of a compatibility issue between Electron and the on-screen keyboard. On Phosh, the app now runs in XWayland mode (it looks blurry) but at least the OSK works.

Please leave feedback/comments at #quadrix:matrix.org or in the issues at https://github.com/alariej/quadrix (stars welcome :-)

Nheko (website)

Desktop client for Matrix using Qt and C++17.

red_sky (nheko.im) reports

You can now respond to notifications on macOS in nheko! These will be sent as a rich reply. No need to open up the main client any more to respond to folks.

Nico says

As already mentioned, the Apple Silicon builds are now properly packaged.

Additionally we fixed the pagination issues in our search and you should now be able to find more messages. As part of that we also optimized a few database queries again to reduce disk load when running Nheko (which became more noticeable after we enabled some durability flags on the database last week).

There have also been more fixes to the pushrules code. Test code now outnumbers the actual implementation by 4:1. As an additional feature, we do highlight messages marked as "highlight" via a pushrule (i.e. when someone mentions you) in the timeline by adding a red outline.

As part of the push work I also implemented and fixed a few things in Synapse related to pushrules. If replies are not highlighted for you currently, it might be this bug. A longer term fix will be MSC3664, which I also implemented. I also fixed some compatibility issues when sending pushrules to clients after the recent Synapse refactoring.

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

Danielle reports

  • This week we’ve released a hotfix - there’s important changes in this one so please update when you can.
  • The team is starting to look at improving our Matrix.to links and flow.
  • There will be some opportunities to contribute here, so if you’re interested keep your eyes on the Help Wanted tag in GitHub
  • Following our recent research into Notifications we’re starting to build a picture of the things that would be useful to change. We need clearer definitions around defaults, and flexibility in notifications.

In labs (you can enable labs features in settings on develop.element.io or on Nightly):

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Ștefan reports

  • Version 1.9.10 is ready for release and brings a handful of bug fixes throughout the app
  • The rich text editor now has voice message support as well as other updates and performance enhancements
  • We’ve been making good progress on ElementX push notification support and we’re getting close to a working solution
  • ElementX also gained a new timeline scroll mechanism and improved concurrency
  • We have also been working on improving thread notification counts and read receipts
  • Work continues on the device manager
  • This week we also saw the first build of the ElementR iOS app, introducing Rust side crypto support to the existing codebase

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

Danielle announces

  • This week's release has a new media picker when you’re choosing to upload something to the timeline.
  • We’ve also been working on multi-select in the new device manager
  • And… Fixing the share actions in the share dialog
  • In Labs; We’re building loading and pagination improvements for Threads.

Dept of Non Chat Clients 🎛️

Circles (website)

E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.

cvwright says

Circles is a secure, E2E encrypted social network app built on Matrix. We have a new build (v1.0.6) of our Android beta today.

Circles v1.0.6 is now available from our beta F-Droid repo, so F-Droid users' clients should start picking it up over the next day or so. Updates in this release include:

  • A new expandable view for long text posts
  • Animated .webp support
  • Password strength estimation (using zxcvbn)
  • Fixed scroll on emoji dialog
  • Fixed crash on take photo/video

Adventurous users can also install the latest build by grabbing the APK directly from our repo.

Interested users can also join us in #circles:matrix.org to get the latest news about the app.

Dept of Widgets 🧩

Oliver Sand says

Hello from Nordeck 👋 This week we finally released the first of our widgets as open source: It's the matrix-poll-widget.

The widget allows to conduct polls in Matrix rooms. But unlike MSC3381 it is designed for more complex scenarios, like polls with multiple parties in a council. You have full control over your data, as it's stored in your Matrix room. It is currently in use in the German public sector. The widget is built using TypeScript, React, and the matrix-widget-api. We also extracted a thin layer of code that is shared between our widgets into our matrix-widget-toolkit, another project we made open source recently. Our remaining widgets will follow in the next couple of weeks. We keep you updated here.

If you have any questions, reach out to us at our #nordeck:matrix.org.

Dept of VoIP 🤙

Element Call (website)

Native Decentralised End-to-end Encrypted Group Calls in Matrix, as a standalone web app

Florian Heese says

Hello from the VoIP team,

We've just released Element Call v0.3.2 which has a whole collection of new things. Screen sharing will now work in embedded mode on desktop and it will now show tiles for people it's trying to connect to, so it should make it easier to see what's going wrong in a call. Please continue rageshaking if you see failures: ideally immediately after the failure, from both sides, and please describe what went wrong in as much detail as you can!

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict reports

Trixnity release 3.0.0-beta1

We released Trixnity 3.0.0-beta1. This is a major version with many (breaking) changes. We will wait for the 3.0.0 release until we have implemented the Matrix 1.4 spec changes (m.replace will be really hacky due to a - in my opinion - spec bug).

Support realm database

We now support realm as a database backend. This allows you to use Trixnity on iOS with a persistent database.

Added exchangeable MediaStore

Media is not saved into the database anymore, but in an exchangeable MediaStore. It is also streamed, so you can download and upload large files. There is trixnity-client-media-okio for a multiplatform file based implementation.

Improved StateFlowCache

The StateFlowCache, which basically is a reactive cache on top of an arbitrary database does not need a CoroutineScope parameter for any read or write operation anymore. It was needed to react to the lifecycle of the consumer, so that not used data could be removed from the cache. This was really error prone, because if the consumer passed a wrong CoroutineScope with a too long lifecycle, the cache could grow unlimited. We figured out to solve this with Kotlin Flows, so everything is lazy and the lifecycle can be determined from the Flow consumer!

We also fixed a long standing bug, which could cause to return a Flow, which does not emit updated values.

Power level calculation support

We implemented some functions to calculate power levels (e. g. canBanUser(...)).

Naming change of classes and interfaces

We changed the naming of all interfaces from IXyz to Xyz and the implementation of it from Xyz to XyzImpl

Server-API improvements

We made some improvements to the various server APIs to allow implementing proxies filtering requests and responses.

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

ben announces

👉️ Wanna hack on matrix rust? Go check out our help wanted tagged issues and join our matrix channel at Matrix Rust SDK.

Dept of Events and Talks 🗣️

Salt reports

SeaGL (the Seattle GNU/Linux Conference) will be holding our tenth annual (third virtual) conference online November 4–5, powered by Matrix and our custom bot, Patch. Join this free—as in freedom and tea—volunteer powered grassroots technical summit, no registration required. This year's theme is "Hang Ten”, in honor of our tenth year!

Keynote speakers include:

  • Aeva Black
  • Ernie Smith
  • Lorena Mesa
  • Sumana Harihareswara

We have a packed lineup of free / libre / open source talks. There are also a number of fun social activities providing opportunities to mingle with your fellow participants. Additional information on the conference and how to attend is available on our blog.

As previously mentioned, we've been refining the virtual conference experience for three years and would gladly welcome new wings and beaks to our all-volunteer staff!

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
1matrix.org402.5
2nognu.de488
3maescool.be587.5
4seymour.family751.5
5zemos.net1062
6mailstation.de2588
7kittenface.studio3202
8roeckx.be3374.5
9cezeri.tech3884
10diasp.in4767

#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
1dendrite.matrix.org138.5
2matrix.sum7.eu143.5
3willian.wang410.5
4forlorn.day714
5matrix.milkte.ch2024
6frai.se10978.5

That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!