This Week in Matrix 2022-12-09

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.

Accepted MSCs:

  • No MSCs were merged this week.

Spec Updates

Both new MSCs this week are from @uhoreg, and look pretty great from a spec polish perspective (I've been a fan with doing away of public device names for ages). Check them out!

Otherwise, MSC3898 (Native Matrix VoIP signalling) received some review and attention this week.

Random MSC of the Week

The random MSC of the week is... MSC3391: API to delete account data!

This MSC would allow users to actually delete account data they've set 🎉 Currently you cannot delete top-level keys from your account data, only remove their content.

Deleted account data items will come down /sync as having their content updated to {}, which clients that implement MSC3391 will take to mean that the account data item has been deleted. Clients that don't implement MSC3391 will store the content as {}, which commonly means an unused account data item anyhow.

Yours truly is currently writing an implementation for this in Synapse, and so far implementing the spec as written seems sound!

Dept of Servers 🏢

Synapse (website)

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

Shay announces

It's Friday which means it's time to talk about the newest Synapse release, v1.73.0! A few details:

Please note that this version removes legacy Prometheus metric names entirely. This also means that the enable_legacy_metrics configuration option has been removed; it will no longer be possible to re-enable the legacy metric names.

If you use metrics and have not yet updated your Grafana dashboard(s), Prometheus console(s) or alerting rule(s), please consider doing so when upgrading to this version.

In addition, a few notable features and bugfixes are:

  • Move MSC3030 /timestamp_to_event endpoints to stable v1 location (/_matrix/client/v1/rooms/<roomID>/timestamp_to_event?ts=<timestamp>&dir=<direction>, /_matrix/federation/v1/timestamp_to_event/<roomID>?ts=<timestamp>&dir=<direction>).
  • Reduce database load of Client-Server endpoints which return bundled aggregations.
  • Fix a long-standing bug where paginating from the start of a room did not work. Contributed by @gnunicorn.
  • Fix a bug introduced in Synapse 0.9 where Synapse would fail to fetch server keys whose IDs contain a forward slash

plus much more! You can read more about this release here: https://matrix.org/blog/posts.

Dept of Bridges 🌉

Valheim Matrix Bridge

Nico announces

So... some people are distracting me by asking me to play Valheim all the time since Mistlands was in public beta (it is released now). To make that easier to synchronize, especially if not everyone can be online all the time, I wrote a small bridge: https://nheko.im/nheko-reborn/valheimmatrix

Your own messages are bridged from Valheim to Matrix, while other peoples messages are bridged (privately) from Matrix to Valheim. This prevents loops and does nice puppeting, but it means everyone needs to run their own bridge. It also means you can see other peoples messages on Matrix, as long as they have the mod enabled, even if you are not signed in yourself.

It is a very hacky experiment, but it works, so... why not show it off? Definitely check out the game, it is great!

Gitter

madlittlemods (Eric Eastwood) announces

It's been a tiny while since I've given an update on the Gitter bridge because I've been focusing on other feature parity areas like the Matrix Public Archive and speeding up /messages in Synapse but there have been a number of changes over this time 🔢

The first big exciting thing is that Gitter now bridges threaded conversations as native threads on Matrix (no more impedance mismatch)!

We've also been plugging along on less visible changes during this time like bug-fixes for bridging DM's and fleshing out more of the bridge scenarios like leaving or deleting a room and bans to ensure things stay in sync. We also started bridging private conversations to Matrix behind the scenes back in February so we have a break-away point-in-time to import back from when we do the massive history import to backfill everything. Please note, that you still can't access these private rooms on Matrix but this will come later either in the form of inviting MXID's from the Gitter side or when we give access to the gitter.im homeserver itself to self-manage from that side.

Dept of Clients 📱

Nheko (website)

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

Nico says

Apart from playing Valheim, I at least also did some productive things! (Apart from everyone else who has been helping squashing bugs and jugendhackt of course.)

Nheko now supports MSC3664. Support for this is automatically enabled if it is enabled server side. This allows you to get notifications for events that relate to another event. For example you might want to get notifications for a reply to one of your messages. So you need to check if the replied to event was sent by you. Similar things can be done for relations like "notify me for reactions to my posts in rooms with less than 20 users".

By default only notifications for replies are enabled. You might not notice a difference, since by default you get notified for them because the fallback includes your username, but not all bridges implement that correctly and for me the reply fallback has been one of the biggest sources of bugs, so I'd like to get rid of it long term. (Also some users disable username mentions, because their name is too generic to be useful, in which case this can help as well since it actually checks the sender.)

Anyway, have fun playing around with this!

Element Web/Desktop (website)

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

kittykat announces

Element Web/Desktop

Lots of exciting news this week

  • matrix-js-sdk now has full strict TypeScript checking turned on!
  • We fixed lots of bugs, including replies to emotes looking weird
  • There are also some updates in the works, including bubble layout improvements and the user profile in the right-panel.
  • We made the unverified sessions dialog come up less often, and added a setting to prevent bold notifications.

And in case that wasn’t enough… now available in labs (you can enable labs features in settings on develop.element.io or on Nightly):

  • We merged several fixes for voice broadcasts
  • Threads is nearing release, thank you all who have been trying it out! You can still join the Beta testing in Settings -> Labs to give it a spin!

Element iOS (website)

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

Ștefan reports

  • Threads has made great progress and is nearly ready for release into the wild! There’s a few bugs remaining that we want to smash before we turn the feature on by default for all users.
  • Work on Element X is making great progress, we’re even looking at how to improve the iPad and desktop view for users on larger screens.

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.11 has been released, it includes fixes for some crashes that had been reported via rageshake.
  • Threads has made great progress and is nearly ready for release into the wild! There’s a few bugs remaining that we want to smash before we turn the feature on by default for all users.
  • Please note the release cycle will be slightly different over the holidays!
  • Work has begun on Android X and fast progress is being made.
    • Currently we’re looking at performance on the room list and the timeline view, implementing a memory cache to handle things more efficiently.

Element (website)

Everything related to Element but not strictly bound to a client

kittykat says

We are skipping one release cycle over the festive holidays: all apps will receive a release on 20th December (with threads coming out of Beta!) and the following RC will come out on 10th January leading up to a release on 17th January!

Dept of Non Chat Clients 🎛️

Effektio (website)

The one mobile-first, decentralized community organizing app

ben reports

Earlier this week, we have release the EFFEKTIO white paper, outlining what we are working on, why we think this matters, where we intend to head with it and what perspective we come from. We’ve published this 30-pager as a Google Doc with comments activated (if you have any feedback on it) as well as with a 2-page executive summary for the busy. You can also join us in #foyer:effektio.org if you’d like to discuss it with us.

For a couple of weeks now, we have a fresh nightly build available whenever changes have been merged within the 24 hours prior. Unfortunately the Android package, with mobile being the main target the UI has been developed for, can’t be installed as is (you need to clone and build it yourself for now), the Desktop App for Linux, Windows and Mac do give you an impression what we are after. Mind you that a) other than the chat all sections are still mainly UI mocked and b) it is still in heavy development: things break sometimes.

On the app itself, we have spent a lot of time on getting the chat right. The app’s core was upgraded to matrix-sdk 0.6+ to get the latest timeline API in, which required quite some refactoring. But allowed us to implement reactions, edits and replies. Encrypted Messages are still somewhat unreliable though. Prior to the nightly builds we’ve also taken some time to clean up the UI to give it a more polished look and make clear which things are simply not enabled yet. On the non-chat side of things, we’ve mostly worked on UI things (check out the ToDo-Sections and Pins), while we were waiting for the synapse fix on reading the timeline from the beginning, which is now released in 1.73. Happy to get back to implementing the state machines soon.

You want updates more frequently and close to when they actually happen? Join our #news:effektio.org or hang out with the devs in our #tech:effektio.org matrix room.

Dept of SDKs and Frameworks 🧰

libolm

uhoreg reports

libolm 3.2.14 has been released. This is maintenance release. The main change was improvements in the TypeScript types. There were also some improvements in the Python packaging, which should mean that the pre-built Python package for Linux is compatible with more distributions. Unfortunately, there are some issues with the i686 and aarch64 Linux builds, meaning that those packages are not currently available for the current version. However, if the previous version works for you, there is no reason to upgrade. We are investigating the issue, and may provide new packages later.

elm-matrix-webhooks

Bram says

If you write code in Elm, you can now send messages in a Matrix room using a webhook.

I built noordstar/elm-matrix-webhooks, a small wrapper around the Webhook API of nim65s/matrix-webhook.

I am building an Matrix SDK in Elm but I've never created or published a library before. This is a practice library to see what I can expect. You can install the library using

elm install noordstar/elm-matrix-webhooks

And you can send a webhook message using a function like this:

import Matrix.Webhooks as Hook

send : String -> Cmd msg
send = Hook.sendMessage toMsg webhook

-- send "Hi TWIM!"
-- send "I support **Markdown!**"
-- send "That's cool, isn't it?"

There is currently no room for this library. Just contact me @bram:noordstar.me for the library or visit #matrix-webhook:tetaneutral.net for questions about the Webhook API.

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

After porting the remaining fixes over from the demo branch for element-x as PRs to main, we've spent a significant time debugging the two biggest know pain points: double echos for sending messages, for which we've merged a fix, and unable to decrypt, which appears to be caused by a broken to-device message exchange (with an incomplete sender_key), which we are still investigating. Furthermore we've exposed the ability to send reactions over FFI, LoginBuilder and SsoLoginBuilder can now be used with .await and merged some smaller sled crypto store improvements.

The latter came up when investigating, whether we could use sanakirja, the pijul database backend, as a multi-process crypto store backend for mobile. This investigation is still on-going.

Further than an investigation is the uniffi async support. After completing the Python backend, Swift is also passing all tests now. Additional Docs should clarify most questions. We are as excited about this as the Mozillians seem to be. Next up: Kotlin backend.

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

Dept of Bots 🤖

ChatGPT for Matrix

Jake C announces

I built a ChatGPT bot for Matrix! It does exactly what you think it does: you send a message, and ChatGPT will respond. It's very cool being able to talk to ChatGPT while on a mobile device.

It sends read receipts when messages are received by the bot, and the bot sends a typing indicator as ChatGPT is "thinking" 😀

It currently only works in unencrypted chats. I haven't managed to get encryption using matrix-bot-sdk working reliably yet. If it's meant to be working, tips or PRs are very welcome! I've really enjoyed tinkering withmatrix-bot-sdk on a few projects so far.

Keep in mind any text you send it will go to the closed source servers of OpenAI, and it is unlikely to stay free forever.

PRs very welcome!

https://github.com/jakecoppinger/matrix-chatgpt-bot

Dept of Events and Talks 🗣️

Thib reports

The Matrix.org Foundation has a stand at FOSDEM! Come in Brussels on February 4 and 5 to meet us in person, see the fun stuff we're doing, show us the nice things you are doing and grab cool merch.

We have also received proposals for a little more than a full day of devroom! We only have half a day of in-person devroom. We will (try to?) broadcast the in-person devroom in the Matrix room of course, and then the conference bot will schedule the talks we couldn't fit in the in-person slots.

Yan says

Matrix Community Summit Berlin 2022 Podcast (German) Another week, another episode, another community member interviewed. Meet Robert, who spoke with Christian, about creating a CMS system on top of matrix.

episode link: https://spotifyanchor-web.app.link/e/p8aiO8ABCvb rss feed: https://anchor.fm/s/cdb34188/podcast/rss I hope you enjoy this week's interview and learn what other people in the community are up to.

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
1nognu.de594
2keks.club596.5
3cezeri.tech840
4trygve.me912
5kittenface.studio916
6babel1.eu1026.5
7willian.wang1084
8btln.de1878
9mailstation.de2662
10poldrack.dev2762

#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
1kumma.juttu.asia284
2dendrite.s3cr3t.me343
3willian.wang481.5
4frai.se646
5matrix.shutdown.network986
6rustybever.be3051

That's all I know

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