This Week in Matrix 2022-09-09

2022-09-09 — This Week in Matrix — Thib

Matrix Live 🎙

A short Matrix Live where we can see the goodness coming to Element very shortly!

Dept of Spec 📜

Andrew Morgan (anoa) announces

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 that entered Proposed Final Comment Period:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were merged this week.

Merged MSCs:

  • No MSCs were merged this week.

Spec Updates

I hope you like new MSCs, because this week has had a lot of them!

Spec Core Team review this week has focused on getting the remaining bits of threads over the line, mainly MSC3773, MSC3771, MSC3874 and MSC3856.

Random MSC of the Week

The random MSC of the week is... MSC2730: Verifiable forwarded events!

Ever noticed how when you forward an event in Matrix today, it simply looks like you've just copy/pasted the message and sent it yourself? Other messengers will often include some metadata with the forwarded message to inform the room that it's a message originally from another room and/or user, rather than being originally authored by yourself.

This MSC attempts to optionally add that metadata to messages, with the crucial goal of preventing that metadata from being faked (which could be dangerous). Check if out if that's something that interests you!

Dept of Servers 🏢

Synapse (website)

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

Brendan Abolivier reports

This week the team released Synapse 1.67.0rc1! This first release candidate includes a few features, a bunch of notable performance improvements and bugfixes, and also removes the long-deprecated TCP replication. We thank everyone who help us test this RC by running it ahead of the release next week, and reporting any bug or feedback on the Synapse repo or in #synapse:matrix.org, respectively.

Another very exciting thing that happened this week is the merge of the base code infrastructure to support running Rust code in Synapse! You can find more about this in the pull request, but what this means is we can now replace some bits of Synapse written in Python with code written in Rust to make it more efficient. This is not a rewrite of Synapse in Rust, but rather a way for us to optimise some specific hot paths. Currently there's some more work going on with implementing push rules support in Rust, as well as converting some caching code. Watch this space for more info!

Dendrite (website)

Second generation Matrix homeserver

neilalexander announces

This week we released Dendrite 0.9.7 with quite a few bug fixes and performance improvements. It's a recommended upgrade, so if you have a Dendrite installation, please upgrade! Changes include:

  • Initial supporting code to enable full-text search has been merged (although not ready for use yet)
  • Newly created rooms now have higher default power levels for enabling encryption, setting server ACLs or sending tombstone events
  • Incoming signing key updates over federation are now queued in JetStream for processing, so that they cannot be dropped accidentally
  • A race condition between the roomserver output events being generated, forward extremities being updated and room info being updated has been fixed
  • Appservices will no longer receive invite events which they are not interested in, which caused heavy load in some cases or excessive request sizes in others
  • A bug in state resolution v2 where events could incorrectly be classified as control events has been fixed
  • A bug in state resolution v2 where some specific events with unexpected non-empty state keys are dropped has been fixed
  • A bug in state resolution v2 when fetching auth events vs partial state has been fixed
  • Stale device lists should now be handled correctly for all user IDs, which may help with E2EE reliability
  • A number of database writer issues have been fixed in the user API and sync API, which should help to reduce database is locked errors with SQLite databases
  • Database migrations should now be detected more reliably to prevent unexpected errors at startup
  • A number of minor database transaction issues have been fixed, particularly for assigning NIDs in the roomserver, cleaning up device keys and cleaning up notifications
  • The database query for finding shared users in the sync API has been optimised, using significantly less CPU time as a result

As always, please feel free to join us in #dendrite:matrix.org for more Dendrite-related discussion.

Dept of Bridges 🌉

Postmoogle (website)

An Email to Matrix bridge. 1 room = 1 mailbox.

Aine reports

Postmoogle v0.9.1

"Are we bridge yet?" - Yes. The most notable changes in that release - you can send emails from matrix!

other changes:

  • bugfixes
  • removed migrations
  • smart auto joins according to ACL
  • send emails from matrix
  • send emails with proper DKIM signature
  • Secure SMTP (with TLS) for incoming emails
  • and lots of under-the-hood changes (48, actually)

Source code with updated Roadmap and feature list, say hi in the #postmoogle:etke.cc

Dept of Clients 📱

Nheko (website)

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

Nico says

New release out now, it includes improvements to stability and performance.

Okay, Nheko might start with N, but you can get a proper changelog too:

Highlights

  • Community editing support 🤼
    • You can now create communities.
    • You can add and remove rooms to and from communities in various ways.
  • Prettier joins ✨
    • You can now see the avatar, title, topic and member count of the room you are trying to join.
    • You can see if a room requires knocking or can be joined directly.
    • Requires MSC3266 support from your server.

Features

  • Add a discrete edit button to room profiles. (Hiers)
  • Don't escape the summary tags on sending.
  • Focus message area when pressing Escape. (Forest)
  • Barebones spoiler support on desktop platforms.
  • Enable encryption for DMs started from a profile by default.
  • Enable option to disable notification sounds and badges on macOS.
  • Speed up the completion trie. (nenomius)

Translations

  • Polish (Romanik, luff)
  • Dutch (Thulinma)
  • Finnish (Lurkki)
  • Estonian (Priit)
  • Indonesian (Linerly)

Bugfixes

  • Fix crash on empty private receipts sent by some servers.
  • Don't set a transient parent for child chat windows.
  • Validate roomid, state_key, event_id and userids sent by the server.
  • Fix empty widgets showing up in the widget list.
  • Clean up linter config. (Forest)
  • Use the right palette colors for reactions. (Forest)
  • Fix groups sidebar's grammar. (Forest)
  • Fix version position. (Zirnc)
  • Properly validate urls in image tags.
  • Case insensitive member search.
  • Fix crash on global profiles.
  • Fix crash on incomplete identity keys.
  • Fix message notification format on Windows.
  • Fix room members menu opening profiles for the wrong room.

Notes

Requires mtxclient 0.8.1 and fixes a few crashes that can be abused by remote users.

THANK YOU EVERYONE WHO CONTRIBUTED TO THIS!

FluffyChat (website)

Krille Fear says

FluffyChat 1.6.4 has been released. 🥳 This time it is only a minor bugfix release which also updates translations and some dependencies. The app now tries to automatically request keys for undecryptable messages and displays a detailed explanation why a message is unable to decrypt, when clicking on it.

Full changelog:

  • Translated using Weblate (Chinese (Simplified)) (Eric)
  • Translated using Weblate (Estonian) (Priit Jõerüüt)
  • Translated using Weblate (Galician) (Xosé M)
  • Translated using Weblate (Indonesian) (Linerly)
  • Translated using Weblate (Slovak) (Marek Ľach)
  • Translated using Weblate (Turkish) (Oğuz Ersen)
  • Translated using Weblate (Ukrainian) (Ihor Hordiichuk)
  • chore: Adjust bubble color in dark mode (Christian Pauly)
  • chore: Update matrix sdk (Christian Pauly)
  • chore: Update to flutter 3.3.0 (Christian Pauly)
  • feat: Automatic key requests and better key error dialog (Christian Pauly)
  • fix: Styling and notification settings (Christian Pauly)
  • fix: add missing command localizations (Christian Pauly)

Element (website)

Everything related to Element but not strictly bound to a client

kittykat says

Community testing

  • We are continuing to collect feedback on the WISYWIG editor: sign up to take part in testing!
  • We will have a group session to test Element Call at 16:00 BST on Monday 12th September.
  • If you would like to help with testing Element Call in your own time, you will be able to find more details in the community testing room!
  • For more info on our next testing sessions (sync or async), you can join us at #element-community-testing:matrix.org!

Element Web/Desktop (website)

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

kittykat says

  • 🔒 We had a security release: please update to v1.11.4 ASAP.
  • The DM flow has seen a rework: when you start a DM with someone for the first time, they will only see the room after you send your first message (in any form) rather than when you first open the room

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

  • We are getting closer to Element Call being ready for release. We will be running testing next week if you’d like to help out!

Element iOS (website)

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

kittykat announces

  • We have a new release candidate out and this time around the New App Layout is enabled by default! 🥳 And, as if that wasn’t enough, we have also fixed all the iOS16 issues, just in time for the big release on Monday.
  • Also starting with this release, Direct Message rooms will only be created when the first message is sent
  • In ElementX land we fixed the last issues on sliding sync, the timeline can now handle edits, redactions and reactions, we’re implementing proper signing out and started adding more timeline actions like copying permalinks and replies.

Element Android (website)

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

benoit reports

  • Next release 1.4.36 will include the new App Layout, behind a lab flag. To the application settings, then Labs, then Enable new layout. This release will also include a fix for the Push not received and so missing notification.
  • In the meantime, we are making progress on the WYSIWYG editor, and on creating Direct Message on the first message.
  • We are also working to improve our test coverage. Currently we are evaluating several options to add screenshot tests to the project.

Dept of VoIP 🤙

Element Call (website)

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

Dave announces

Hello from the VoIP team 👋

We've just released element call v0.2.11 which we hope should fix any remaining problems with multiple calls (aka split-brain) in a room: please rageshake if you see further problems 🙂

Additionally, we are really excited about embedding Element Call into Element Web and we need your help: It's time for Community testing.

🕓 12th of Sept (16:00 BST / 17:00 CEST / 11:00 EDT)

❓ Please help us test our new integration of Element Call into Element Web.

(Details in https://matrix.to/#/#element-community-testing:matrix.org)

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict says

I externalized the building of libolm binaries into a separate git repository. As a result, opening the Trixnity project does not need any C-Library-Building-Tools, because the binaries are just downloaded. On the one hand this speeds up building Trixnity significantly and on the other hand contributing to Trixnity is much easier (especially on Windows machines). Just do ./gradlew build.

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 reports

This week saw the merge of PR/Issue #1000, a milestone, that, though random, marks the continuous progress and pace this project has taken up. 🥂 to the next 1000!

Further more we saw the merge of make create_dm_room public, allowing any developer using the SDK to use it as well saw the first review of the sliding sync PR, which now also has a tracking issue explaining what remains to be done (and when) once the PR has landed. Other than that we had several refactorings, clean ups and minor fixes merged, in anticipation of the upcoming release of 0.6, which we expect to land before the end of the month. If all goes will that release will contain both sliding sync and the new timeline API behind feature flags to use and play with. 🫰 Fingers crossed.

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

matrix-crdt (website)

Use Matrix as a backend for local-first applications with the Matrix-CRDT Yjs provider.

yousefed reports

Matrix-CRDT v0.2.0

Matrix CRDT enables you to build collaborative applications (like Google Docs) by using Matrix as backend for sharing application updates.

In this release we've updated matrix-js-sdk to the latest version 19.4.0, which was a big jump. This opens up the path to adding support for End-to-end Encryption and Sliding Sync - and are looking for people excited to work on this.

I've also rolled it out to the preview version of TypeCell; which is a multiplayer document / programming environment that runs on top of Matrix (more soon!)

Come chat in our Matrix space or in Beyond Chat!

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi says

Thanks to Julian-Samuel Gebühr (@moan0s), matrix-docker-ansible-deploy/ can now set up Cactus Comments - federated comment system for the web based on Matrix.

See our Setting up a Cactus Comments server documentation to get started.

Dept of Bots 🤖

matrix-rss-bridge

imbev reports

matrix-rss-bridge is a bridge for reading RSS feeds in Matrix rooms. You can find the repository at https://gitlab.com/imbev/matrix-rss-bridge

Setup

Requires Python ^3.8

python3 -m pip install poetry
git clone https://gitlab.com/imbev/matrix-rss-bridge.git
cd matrix-rss-bridge
python3 -m poetry install

Usage

Config

Create config.toml to configure the bridge.

# config.toml
homeserver = "https://example.com"
username = "username" 
password = "password"
interval = 60 # seconds

[[bridge]]
    name = "matrix.org blog"
    feed_url = "https://matrix.org/blog/feed"
    room_id = "!AUweUQXCxcVfFOaOIU:matrix.org"

Running

python3 -m poetry run bridge

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
1conduit.rs259.5
2babel.sh279.5
3jameskitt616.one362
4kootstra.frl485
5alemann.dev510.5
6cezeri.tech588
7rollyourown.xyz709
8kittenface.studio767.5
9dendrite.babel.sh785.5
10rom4nik.pl875

#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
1conduit.rs109
2babel.sh112
3conduit.hazmat.jacksonchen666.com208
4dendrite.babel.sh253.5
5matrix.org272
6dendrite.matrix.org313.5
7babel1.eu371
8kernel-error.com399
9foxo.me410
10cutema.re558

That's all I know 🏁

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