This Week in Matrix 2022-11-18

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:

  • No MSCs are in FCP.

Merged MSCs:

  • No MSCs were merged this week.

Spec Updates

Matrix v1.5

Matrix v1.5 was released on November 17th, 2022! πŸŽ‰

While not as feature-packed as previous releases (v1.5 was intended as a maintenance release), it's still worth checking out! Included are two new MSCs that have landed, as well as loads of little bugfixes and clarifications to the spec text itself. Thanks to all who helped fix issues since v1.4!

See the Matrix v1.5 blog post for all the juicy details.

Extensible Events are Shaping Up!

As may be apparent from the new MSCs this week, the SCT has been looking at extensible events to iron out some of the finer details of the system. They're not necessarily in the best position to review at the moment, but keep an eye on this space for when review would be most welcome πŸ™‚

Random MSC of the Week

The random MSC of the week is... MSC2705: Animated thumbnails for media (and thumbnail content-type requirements)!

This MSC attempts to define a method for clients to indicate to their homeserver that they would like to have animated version if possible when requesting a thumbnail of some media. This would allow clients to provide a toggle to the user for whether media in the timeline should be animated, or whether room and user avatars should be animated, etc. Potentially separate options for each!

Today, there is no way for the client to indicate per-request whether they would like to receive an animated version of a thumbnail. This leaves the choice up to the homeserver, which gives individual users much less control.

The MSC also defines mimetypes that animated thumbnails should return. And it has an implementation in matrix-media-repo!

Check it out if animated avatars/thumbnails peaks your interest.

Dept of Servers 🏒

Synapse (website)

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

Shay says

Another week has gone by and we here at Synapse Inc have been working hard on faster room joins, bugfixes, and other fun items to make Synapse faster and better, in addition to releasing v1.72.0rc1. Just a few highlights of the release are:

  • Adding experimental support for MSC3912: Relation-based redactions.

  • Adding an Admin API endpoint for user lookup based on third-party ID (3PID).

  • Fixing a background database update, introduced in Synapse 1.64.0, which could cause poor database performance.

  • Improving the performance of /context in large rooms.

In addition, please note that we now only support PostgreSQL 11+, as PostgreSQL 10 has reached end-of-life. As always, if you'd like to know more about this release, hop on over to the release page (https://github.com/matrix-org/synapse/releases) and take a look!

Dept of Clients πŸ“±

Neochat (website)

A client for matrix, the decentralized communication protocol

Tobias Fella says

It's been a few weeks since the last update on NeoChat and we've been working hard on bringing new features and fixes. Some notable ones include:

  • Porting our settings to a nicer style
  • Various UI Improvements in the Room list and Timeline
  • Added the ability to configure a Proxy
  • Creating a significantly nicer UI for switching accounts
  • Improved the room search, with a more obvious way of searching on a different server
  • Viewing and Answering polls
  • The ability to change your display name for a single room
  • Correctly escaping HTML characters in various places
  • Fixed file sending on android
  • Fixed reactions sometimes not showing up
  • Fixed some problems with viewing custom emojis
  • Fixed the external room window blocking the main client window
  • Implemented showing animated images in the timeline

FluffyChat (website)

Krille Fear announces

FluffyChat 1.7.0 has been released. It features a new way to work with spaces via a bottom navigation bar. A lot of work has also been done under the hood to make the app faster and more stable. The main color has slightly changed and the design got some finetuning. Please be aware that it can take some time until it receives all app stores. The Snap Store currently waits for a review, while the arm64 version of Flatpak has recently failed to build. Read the full changelog here: https://gitlab.com/famedly/fluffychat/-/blob/main/CHANGELOG.md

Ement.el (website)

Matrix client for Emacs

alphapapa announces

Ement.el, a Matrix client for the GNU Emacs text editor and Lisp environment, has been updated to v0.5. Since the last version announced in TWIM, these improvements have been made:

Additions

  • Present "joined-and-left" and "rejoined-and-left" membership event pairs as such.
  • Process and show rooms' canonical alias events.

Changes

  • The taxy.el-based room list, with programmable, smart grouping, is now the default ement-room-list. (The old, tabulated-list-mode-based room list is available as ement-tabulated-room-list.)
  • When selecting a room to view with completion, don't offer spaces.
  • When selecting a room with completion, empty aliases and topics are omitted instead of being displayed as nil.

Fixes

  • Use of send-message filter when replying.
  • Replies may be written in compose buffers.

Feel free to join us in #ement.el:matrix.org!

Element iOS (website)

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

Ștefan reports

  • This week has been exciting for ElementX (our brand new Element iOS client based on the Matrix Rust SDK) which gained a brand new navigation system and a new user notification system, support for displaying file messages in the timeline and playing back video ones, as well as sending states for new messages and an improved bubble layout.
  • We have also started working on an iPad specific layout, improved our logging components, improved hardware keyboard handling and fixed a few annoying issues
  • In Element land we have a made a handful of bug fixes which will hit the store next week and work has been continuing on threads, the new rich text editor, the device manager and our new crypto stack

Element Android (website)

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

benoit announces

  • Element Android 1.5.8 RC is available on the PlayStore for testers.
  • The team is working on the device manager, the Rich Text Editor (to add more edition options: links, quote, etc.), and the voice broadcast.
  • On the Element Android X side, we are also making progress. We can now change the server (the server has to support sliding sync though). The room list is displayed and the timeline with the Rich Text editor too. We are now working to add more features such as supporting more Event types in the timeline, etc. And the app got a new monochrome icon!

Dept of Non Chat Clients πŸŽ›οΈ

Populus Viewer (website)

A Social Annotation Tool Powered by Matrix

gleachkr says

Since our last update, Populus viewer has added two features, both a bit overdue:

  1. Populus viewer now supports .well-known discovery, so you just need to know your matrix server name, rather than the full subdomain in order to connect.
  2. Populus viewer now supports the "restricted" join rule for annotations, so that annotation membership can be restricted to members of the underlying resource space. This will likely be the default for newly created annotations in the future.

Our server (at populus.open-tower.com) has also been rebuilt and reconfigured a bit, and will likely be converted from a test-bed to a stable home for annotation-based discussions in the coming weeks. As always, if you want to give us feedback, keep track of progress, or talk about the future of social annotation on Matrix, join us at #opentower:matrix.org!

Dept of Encryption πŸ”

uhoreg announces

As many of you know, we are working on using MLS, an upcoming IETF standard for end-to-end encryption, in Matrix. We've set up a page, Are We MLS Yet to track the progress of this project.

Dept of SDKs and Frameworks 🧰

Matrix SDK in Elm (alpha)

Bram reports

Elm is a functional programming language that compiles to JavaScript with the promise that their generated JS code will NEVER raise any runtime errors and show high performance.

Despite the fact that certain implementations like Cactus Chat already use Elm, I could not find an SDK for it. That's why I've started to write one: https://git.noordstar.me/bram/Elm-Matrix

The SDK is currently in early development. The /v3/sync endpoint is functional and there are already a few other ways to interact with the API, so the repository can already be tested by developers who are familiar with Elm. If you aren't that familiar with the language, it is better to wait until I release the first complete version.

libcmatrix

Matthew announces

Purism has been chipping away at libcmatrix for their chat app: https://puri.sm/posts/toward-matrix-support-in-chats/

trinity (website)

bnjbvr reports

Trinity is an experimental bot framework written in Rust and using matrix-rust-sdk, as well as commands / modules compiled to WebAssembly, with convenient developer features like modules hot-reload.

Two weeks of updates, because I've been slightly late last week:

  • Trinity now uses WebAssembly components as created with cargo-components and wit-bindgen under the hood for the Matrix modules. This is quite experimental and early stage, but this allows multiple exciting things in some not-so-distant future: switch API implementations at runtime, more security by isolating specific APIs, using source languages for the modules that can be compiled with wit-bindgen, etc.
  • In particular, we've made a proof-of-concept for a bot module written in C (!) and compiled to WebAssembly, and we've been very close to having a bot module written in Java using the excellent TeaVM project.
  • New APIs have been added for the modules:
    • a simple key-value store, that is backed by the redb pure Rust project, which comes with great performance.
    • modules can now specific help messages as well as admin commands (that will be available only to a predefined admin user).
  • Which then allowed to write a shiny new Mastodon module: configure it in a room with a set of credentials, a Mastodon URL instance, define which users are allowed to use it, and then post statuses from the room using !toot message.

If you're interested to follow the project, feel free to join our Matrix room or get the code on Github.

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

Major breakthroughs have happened behind the scenes this week: we were able to get a simple python3-asyncio to poll our rust-side future and receive its result via uniffi. While there isn't much to show for the outside world, this is a major step towards having async-uniffi. The team is super excited about this development.

Meanwhile in Sliding-Sync-Land, we have debugged the session reset and added transparent session recovery to the offline-caching PR. Together with the latest PR that hands over the already received timeline events to the new Timeline API, this should visibly speed up things and improve overall performance across all major clients using both of these. Further more, the Timeline API has UTD decryption retry support now. The client interfaces are moving ahead fast.

On the always-on-going-improvement-front, we have upgraded to ruma, merged the component generation for swift in xtask, switched to custom cargo build profiles, have a signaling mutex for crypto now, moved large parts of deserialized_responses to matrix-sdk-base and made the sync_token accessor private.

πŸ‘‰οΈ Wanna hack on matrix rust? Go check out our help wanted tagged issues and join our matrix channel at Matrix Rust SDK.

Dept of Ops πŸ› 

ML model for Matrix Spam Detection

MTRNord says

A few weeks ago I started experimenting with extending my moderation tools with a basic ML model that can give me early warnings on common spam.

As a result https://github.com/MTRNord/matrix-spam-ml was made. It contains a basic ML model using tensorflow based on telegram spam from matrix and a standard SMS dataset. It provides a HTTP api which can also be found at https://spam.midnightthoughts.space and a Synapse and mjolnir integration for both sampling training data and using it as automated spam reactions and is planned for the future.

Feel free to hop by in #matrix-spam-ml:midnightthoughts.space for any further questions :) also please note that the repo is using LFS and as it contains trained models it is pretty huge when cloning with LFS data.

axon.sh

An interactive command-line administration tool for Synapse written in Bash. Better than typing curl requests!

joe says

axon.sh version 0.22.0 has been released, adding support for retrieving event reports from your homeserver, and looking up local users by third-party ID (requires Synapse 1.72.0rc1 or later). Please try it out and report your experience in #axon:matrix.thisisjoes.site!

Dept of Events and Talks πŸ—£οΈ

FOSDEM

Thib reports

This year, the Matrix.org Foundation is excited to host the first ever Matrix.org Foundation and Community devroom in person at FOSDEM. Half a day of talks, demos and workshops around Matrix itself and projects built on top of Matrix.

We have a physical devroom on Sunday 5 morning, and will follow with details for the online devroom as soon as we get them! You can read the CfP for the physical devroom here: https://matrix.org/blog/2022/11/16/call-for-participation-for-the-fosdem-2023-matrix-devroom

Dept of Interesting Projects πŸ›°οΈ

Matrix plays GameBoy games once more

Bram announces

Last week's TWIM presented a GBA emulator that was written and implemented in JavaScript. Due to some obscure Rust dependencies that weren't compatible with my server setup, I decided to rewrite the program in Python.

The Python implementation can be found at bram/pyboy-to-matrix. It only supports GameBoy games (no GBA), but it only needs one process (or Docker container) to run both the emulator and the Matrix bot.

If you're unfamiliar with last week's post, the GameBoy emulator is a program that emulates games and then interacts with you on Matrix. You can send commands and the emulator will show you what happened in the game.

Send me a DM at @bram:noordstar.me if you want to see a live demo.

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
1dmnd.sh270
2joeth.uk439.5
3matrix.org483.5
4babel.sh617
5willian.wang731
6babel1.eu738
7cezeri.tech741
8kittenface.studio906
9wcore.org993
10keks.club1435

#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.org130
2babel.sh214
3willian.wang289
4wcore.org297
5frai.se301
6forlorn.day572
7grin.hu612
8valha.la796.5
9rustybever.be869
10matrix.milkte.ch911

That's all I know

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