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:
- MSC3925: m.replace aggregation with full event
- MSC3924: Capability-style access control for Matrix media
- MSC3923: Bringing Matrix into the IETF process
- MSC3922: Removing SRV records from homeserver discovery
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
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):
- We’ve been updating Threads for a few weeks now and some great improvements have landed. If you’re not feeling any improvements here’s some tips for checking you’re in the right place
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 ourmatrix-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 istrixnity-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 aCoroutineScope
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 wrongCoroutineScope
with a too long lifecycle, the cache could grow unlimited. We figured out to solve this with KotlinFlow
s, 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
toXyz
and the implementation of it fromXyz
toXyzImpl
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
- matrix-sdk-crypto-nodejs 0.1.0-beta.3 has been released to npmjs.com - main change is a fix on the downloader to pick the correct asset from the release and some other smaller fixes
- the new Timeline API now features the ability to show not-decryptable items
- restore tokens passed via FFI are now a proper type not just a string anymore
- we've cleaned up the error types in base
- a fix on sliding sync allows us to create sliding sync when offline (which locked before)
- the sdk now uses the server-supplied retry time when available
👉️ 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.
Rank | Hostname | Median MS |
---|---|---|
1 | matrix.org | 402.5 |
2 | nognu.de | 488 |
3 | maescool.be | 587.5 |
4 | seymour.family | 751.5 |
5 | zemos.net | 1062 |
6 | mailstation.de | 2588 |
7 | kittenface.studio | 3202 |
8 | roeckx.be | 3374.5 |
9 | cezeri.tech | 3884 |
10 | diasp.in | 4767 |
#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 | dendrite.matrix.org | 138.5 |
2 | matrix.sum7.eu | 143.5 |
3 | willian.wang | 410.5 |
4 | forlorn.day | 714 |
5 | matrix.milkte.ch | 2024 |
6 | frai.se | 10978.5 |
That's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!