This Week in Matrix 2022-11-11

Matrix Live

Dept of Status of Matrix 🌡️

andybalaam reports

A few Matrix folks went to IETF115 this week, and here is my Trip Report: Can Matrix help messaging standardisation through MIMI?

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 in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

Spec updates

This week the Spec Core Team has been working with the IETF More Instant Messaging Interoperability (MIMI) working group to define a charter. With a charter, the working group is able to start thinking about implementation and design details, which means talking even more about Matrix!

We had the opportunity to discuss Matrix with several interested people at IETF this week, and are extremely excited for the (long) road ahead: even in the event where Matrix doesn't get accepted, we hope the protocol(s) the working group publishes will be fit for purpose and adopted widely (not to mention our own spec will be better as a result).

To find out more about what we're doing in this space or to learn more, check out this week's Matrix Live above!

Random MSC of the Week

The random MSC of the week is... MSC3381: Polls (mk II)!

Polls! They are useful for quickly gauging whether a group of people agree, or entirely disagree on a topic or choice. This is an MSC with a fairly long history, but has received experimental implementation in a small number of Matrix clients. The concept uses Extensible Events, and there are plans to rewrite it off the back of changes in MSC1767 (extensible events). But for now, it works and is a fun feature.

It's likely worth waiting for the rewrite before commenting on the MSC with detailed changes, but otherwise feel free to have a read to see how it currently works!

Dept of Servers 🏢

Feta (website)

geoffledak announces

Feta is a Matrix server distribution for the Raspberry Pi 3 and 4.

It is a an operating system image, based on Raspberry Pi OS Lite and includes the Matrix Synapse server, a self-hosted Element client, Postgres database, and it generates an SSL certificate for your domain using Certbot. The coturn TURN server is also included so voice and video calls work without any additional configuration.

The provided setup script will have your server up and running in a matter of minutes.

All you need to do is configure your DNS settings for your domain, forward some ports through your router, and boot up your Raspberry Pi. Once setup is complete, enjoy your new Matrix server! Synapse, Element, Postgres, coturn, and federation are all preconfigured for you.

Visit https://www.feta.bz/ to download and get more info.

Head on over to #feta:matrix.org for discussion and updates!

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 says

  • Donations: Both recurring and one-time donations are now accepted via LiberaPay and Stripe, respectively—GitHub Sponsors is hopefully coming soon. All funds will go directly to infrastructure and development labor. You can find the donate links on the website, and the GitHub mirror.
  • Memory/Network Improvements: Another week brings another round of memory and socket handling improvements.
  • Patch Submission: It's now easier than ever to contribute to Telodendria thanks to the new send-patch script. Submitting your changes for review is now only a single command.
  • Newsletter: Catch the full-length newsletter in #telodendria-newsletter:bancino.net.

Synapse (website)

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

squah says

Synapse 1.71.0 has been released! It contains the usual round of bugfixes and performance improvements, plus some new features. Notably, Synapse now supports:

  • back-channel logouts from OpenID Connect providers.
  • Postgres and SQLite full-text search operators in search queries.
  • MSC3664, push rules for relations.

Server administrators should be aware that:

  • 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 1.71.0 will be the last release to support PostgreSQL 10. Server administrators are encouraged to upgrade their PostgreSQL servers before the next release, if needed.

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

In the mean time, the team has been working on the remaining parts of faster room joins.

Dept of Bridges 🌉

Postmoogle (website)

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

Aine announces

Postmoogle vUnreleased is here!

Yep, no pinned release yet, but there are some exciting features in the main branch (latest docker image):

multi-domain support!

You can have one main email domain (eg: the-etke.cc) and multiple additional domains that will be used as aliases (not-etke.cc, example.com), so you can get more spam to the [email protected], [email protected] and [email protected] at the same time!

bridged thread replies!

the last planned feature of the roadmap: send reply (reply-to or thread reply) to an email message in the matrix room and it will automatically set all magic stuff (In-Reply-To header, subject with Re: %original message's subject%, etc) and send email. It's pretty rough implementation, so feedback is appreciated!

Source code and say hi in the #postmoogle:etke.cc room

Dept of Clients 📱

Hydrogen (website)

Hydrogen is a lightweight matrix client with legacy and mobile browser support

Midhun says

Released v0.3.4 (and v0.3.3) with a join room UI and lots of bug fixes! Special thanks to Isaiah Becker-Mayer for his numerous typescript PRs!

Some of the fixes are for:

  • an error that can stop sync
  • an issue where hydrogen did not verify senders of room keys!
  • message verification not working in rooms where we haven't sent a message yet

Element Web/Desktop (website)

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

kittykat announces

  • 1.11.14 is out, with many improvements to threads!
  • This week, we fixed some issues, including a bug with media uploads

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

  • We’ve added more functionality to the rich text editor, it’s catching up slowly with the basic composer
  • Voice broadcast also has a few new tricks up its sleeve, including improvements to pre-recording and message length

Element iOS (website)

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

Ștefan says

  • We have been working hard on improving the Element experience and to that extend we have fixed some crashes, squashed timeline layout issues, improved the device manager and the new rich text editor
  • Work is also continuing on thread notifications and the new crypto frameworks
  • ElementX on the other hand received support for offline logins, message editing, video and encrypted messages in the timeline and a brand new underlying navigation mechanism

Element Android (website)

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

benoit reports

  • Element Android 1.5.7 has been pushed to production on the PlayStore and should also be available for F-Droid users soon. This version fixes the issue when sharing items to the app, and also fixes the regression observed in 1.5.6 (before it reaches production!) during the first sync with the server.
  • We are making progress on ElementX, which is a new client using the Matrix Rust SDK and Jetpack Compose. This app is now able to display a timeline and send messages to a room using the wysiwyg composer.

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict announces

We released Trixnity 3.0.0-beta3, which supports the matrix spec 1.4 and new relation types: reply (without fallback), replace, thread (basic support, no separate timelines or client aggregations yet).

simplematrixbotlib (website)

simplematrixbotlib is an easy to use bot library for the Matrix ecosystem written in Python and based on matrix-nio.

imbev reports

Version 2.8.0 released!

This version brings a few improvements.

The sending of video messages has been added. The following handler will send a video after any message from another user:

async def example(room, message):
    match = botlib.MessageMatch(room, message, bot)
    example_video="./videos/example.mp4"
    if match.is_not_from_this_bot():
        await bot.api.send_video_message(
            room_id=room.room_id, 
            video_filepath=example_video)

Thanks to moanos and HarHarLinks, there are improvements to the handling of device ids.

Join us in the Matrix room at https://matrix.to/#/#simplematrixbotlib:matrix.org or the Git repository at https://codeberg.org/imbev/simplematrixbotlib !

Version 3.0 coming soon!

Ruma (website)

A set of Rust library crates for working with the Matrix protocol. Ruma’s approach to Matrix emphasizes correctness, security, stability and performance.

Jonas Platte announces

Since our last update in June (yeah, sorry...), we released Ruma 0.7.0 and a few patch releases including all of the following and more:

  • Support for refresh tokens (MSC2918 / Matrix 1.4)
  • Unstable support for discovering an OpenID Connect Server (MSC2965)
  • Unstable support for private read receipts
  • Lots of API refinements, like renaming AnyRoomEvent to AnyTimelineEvent
  • Support for Room Version 10
  • Unstable support for sliding sync

Since this release was released back in September, a bunch of things have also happened that are not released yet:

  • Many features were moved out of unstable feature flags because they were stabilized in Matrix 1.4
  • We made message construction easier than ever with improvements to markdown detection and improvements to reply and edit creation
  • We refactored and extended the push notification code
  • We are about to conclude a massive refactoring that should make our codebase look less strange if you are familiar with Rust, and could help compile times as well

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

This week has seen important strives forward on sliding sync, which now has a PR up for offline support and the new timeline API, with some initial unittests and video messages support merged and support for file messages coming up. On the FFI, we now have support for logging in Android and work on moving the iOS binding scripts into our internal xtask cli.

As usual a lot of work is been going in the background without any visible, tangible outcome yet. On one side we are making great progress on getting a first async-prototype for uniffi with python working, on the other we have been profiling the sdk on iOS mobile devices for its memory footprint - which is a major blocker for notification support.

️👉 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 🗣️

FOSDEM

Thib announces

There will be a Matrix Devroom at FOSDEM next February 🎉 We will issue a CfP very soon™

Dept of Interesting Projects 🛰️

Matrix Plays GameBoy games

jaller94 reports

Using this Lua script and NodeJS bot, you can remotely control any GameBoy (Classic + Color + Advance) game using the mGBA emulator. Invite some friends to the Matrix room and everyone can control the game at once. Yes, the project name is a reference to the famous "Twitch Plays Pokémon" stream which has 1000s of people complete Pokémon games together just by typing into a chat.

This is a bot and does not need an AppService registration.

https://github.com/jaller94/matrix-plays-pokemon

Disclaimer: This is a hobby project of mine. It is neither associated with nor endorsed by my employer or Nintendo. The project does not contain ROMs or other non-free assets.

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
1babel.sh350
2nognu.de409
3trygve.me548
4maescool.be623
5keks.club630
6shortestpath.dev640.5
7willian.wang686
8rom4nik.pl775
9alemann.dev840.5
10babel1.eu898

#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
1babel.sh130
2dendrite.matrix.org185
3kumma.juttu.asia219
4rustybever.be327.5
5forlorn.day511
6frai.se606.5
7matrix.milkte.ch1078
8babel1.eu1243
9willian.wang36298
10jacksonchen666.com236505

That's all I know

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