This Week in Matrix 2021-05-21

2021-05-21 — This Week in Matrix — Ben Parsons

Matrix Live 🎙

Dept of Spec 📜

Spec

anoa reported:

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://spec.matrix.org/unstable/proposals.

MSC Status

New MSCs:

MSCs with proposed Final Comment Period:

  • No MSCs entered proposed FCP state this week.

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Merged MSCs:

  • No MSCs were merged this week.

Closed MSCs:

Merged Spec PRs

Spec Updates

Travis rolled out MSC3202 to aid in the quest for end-to-bridge encryption without having to rely on /sync. Otherwise the Spec Core Team has been reviewing MSCs and focusing on the last remaining spec PRs needed before cutting a new spec release. Watch this space!

2021-05-21-3uNd3-stacked_area_chart.png

Awesome to be able to VISIBLY see the progress in that graph!

Dept of Servers 🏢

Synapse

Synapse is a popular homeserver written in Python.

callahad offered:

The big news this week was the launch of Spaces, supported by the release of Synapse 1.34.0.

However, there were quite a few other fixes, improvements, and additions: I'd encourage you to read the release announcement for those.

But more than anything, we're hard at work realizing the room-join memory improvements we talked about in last week's Matrix Live, and we expect to have some exciting news to share next week. Concretely: the pull request to support incremental parsing of join responses was merged, and several pull requests (#10017, #10018, #10035) to simplify and slim down the code for verifying event signatures are in review.

See you next week! 🚀

Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timokoesters said:

Here are some Conduit news!

  • Feature: Handle incoming read receipts over federation

  • Feature: Send read receipts over federation (MVP done)

  • Improvement: Make UIAA (user-interactive authentication API) work like in Synapse (this gives us better client support)

  • Refactor: Sending code refactored to make EDUs over federation possible

  • Fix: Remove old presence events when restarting Conduit

  • Fix: Array bounds bug in server_server.rs

  • Fix: Power level content override adds to the default event instead of replacing it

Homeserver Deployment 📥️

Kubernetes

Ananace said:

And this week brings another instance of the regularly scheduled Kubernetes updates, with Element-web going to 1.7.28 and Synapse having been bumped to 1.34.0 on both the deprecated image and the chart.

Dept of Bridges 🌉

libera.chat IRC network news

Half-Shot offered:

Howdy folks! I'm sure many of you read the news about the new libera.chat IRC network starting up, and many of you also reached out (via pretty much every channel available) to ask about a potential bridge. libera.chat are doing a remarkably good job of getting spun up but are hyper busy with all the inbound users and need a bit more time, so in the meantime I would ask that everyone subscribe to https://github.com/matrix-org/matrix-appservice-irc/issues/1324 to listen for changes as they happen.

The matrix.org bridge team are on the case! Expect news in the near future :)

Dept of Clients 📱

Element Client Updates

Submitted by the teams

Delight

  • Spaces are now live! 🚀 Test them on Element Web, Desktop & Android (iOS is coming soon!)
  • In short, Spaces are a new way to group rooms and people together, and are slated to replace legacy groups/communities
  • We’d love your feedback! Either submitted in app or in #spaces-feedback:matrix.org
  • Read the full blog post

Web

  • 1.7.28 released
    • New spaces Beta (new way of grouping rooms and people)
    • Added support for slash commands working in edits
  • 1.7.29-rc.1 on staging
    • Improved startup performance by focusing decryption on recent rooms
    • Fixed reaction duplication
  • Continuing to pursue application performance generally
  • Improving day to day developer experience with more TypeScript conversion

iOS

  • 1.3.9 has been published on the app store
  • Some performance improvements have been merged on develop:
    • Reduce the number of decryptions. A decryption takes about 5ms on iPhone X. On an account with 500 rooms this allows us to skip thousands of decryptions on an initial sync
    • Those decryptions do not happen anymore on the main thread

Android

  • Lots of dependency upgrade following the release with Space (1.1.7).
  • Next release candidate, 1.1.8 will also contain improvements on Spaces.
  • We have set up towncrier flow to better handle changelog generation.
  • Also Element Android project is now using GitHub actions, but it cannot run the integration tests for the moment.

Fractal

Alexandre Franke offered:

As announced in the general Matrix GSoC post, we are lucky to get two interns this year again. Alejandro (whose previous work includes switching to matrix-rust-sdk for syncs) will implement multi-account support, while Kai (also a regular contributor by now) will help bring our application rewrite to the same functionality level as our current nightly and stable versions. Both projects will build on top of Fractal Next.

Julian came back from his vacation and immediately got quite busy reviewing and merging contributions from others. Kevin (also known as zecakeh) and him made good progress on several fronts:

  • Room handling was improved. We now keep track of whether the user joined them, left them, or has been invited to them, as well as their categories (favourites, low priority…).

  • The sidebar uses these categories and now uses a single list with GtkFilterListModels instead of one list per category. The greatly simplifies code for things like moving a room from one category to another.

  • History style has been tweaked, state events and timestamps have been added.

  • Markdown can be enabled from the newly implemented popover and the message composer offers syntax highlighting, although a bug currently makes it so that sent messages are still not sent with a formatted_body.

  • A persistent state store is used to load rooms on startup while sync is in progress.

Last but not least, new contributor Raatty implemented room name and topic display in the header bar.

2021-05-21-zHc3a-image.png

Hydrogen

A minimal Matrix chat client, focused on performance, offline functionality, and broad browser support. https://github.com/vector-im/hydrogen-web/

Bruno announced:

Released 0.1.53 with support for linking to room this week, which should allow to add Hydrogen to matrix.to soon. Also started working on redactions, which is useful in itself and also lays the foundations for reactions and edits coming next.

Nheko reviewed

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE and intends to be full featured and nice to look at

Check out this flattering portrait of Nheko on the Brodie Robertson "Linux Tips & Tricks" channel.

https://odysee.com/@BrodieRobertson:5/nheko-reborn-lightweight-native-matrix:8

Dept of SDKs and Frameworks 🧰

Ruma

Ruma is a set of Rust library crates around Matrix

jplatte offered:

We've been quiet in the past weeks, but certainly not due to lack of activity! So many awesome things have happened, I don't even know where to start. I guess I'll go chronologically:

We published so many new crate releases. Most of our crates didn't see non-alpha releases for almost a year and now we've finally reset that counter! Now you can depend on ruma 0.1 and get bug fixes and new functionality through cargo update without having to worry about breaking changes. Huge thanks to @zecakeh for automating our release process, without that this would have taken so much longer.

We got initial spaces support! I'm super excited that we're now enabling client authors to take spaces into account, even if "taking into account" will initially just mean filtering out space rooms from their room lists. Code-wise, this was actually a relatively small change, with ruma-client-api receiving support for room types and ruma-events receiving support for the event types m.space.child and m.space.parent.

We're swapping out ruma-signatures' crypto library. Since ring, which is what we've been using so far, doesn't currently support cross-compilation to WASM, there's long been some interest to exchange it for something else for webbrowser homeserver experiments. A viable alternative library was identified a while ago and now @ShadowJonathan has taken on the task of implementing the switch.

In addition to unblocking the WASM usecase, this work revealed a bug in ring, which generated invalid PKCS#8 documents. We are pretty confident that once the switch away from ring (including a small compatibility shim to convert the invalid documents), a certain class of signature verification failures that Conduit has been getting will be fixed.

We're taking part in GSoC again. As you might have seen in the earlier blog post, two students are working on Ruma as part of GSoC this year: @Frinksy (for the first time) and @DevinR528 (for the second time).

Apart from that,

Dept of Ops 🛠

matrix-docker-ansible-deploy

This Ansible playbook is meant to easily let you run your own Matrix homeserver.

Slavi told us:

Thanks to Aaron Raimist, matrix-docker-ansible-deploy now supports Hydrogen - a new lightweight matrix client with legacy and mobile browser support.

By default, we still install Element, as Hydrogen is still not fully-featured. Still, people who'd like to try Hydrogen out can now install it via the playbook.

Additional details are available in Setting up Hydrogen.

Also...

Thanks to Toni Spets (hifi), matrix-docker-ansible-deploy now supports bridging to IRC using yet another bridge (besides matrix-appservice-irc), called Heisenbridge.

To get started, see our Setting up Heisenbridge bouncer-style IRC bridging documentation.

Dept of Services 🚀

etke.cc updated

Aine reported:

etke.cc updates

etke.cc is "spantaleev/matrix-docker-ansible-deploy as a service" and we got some updates:

  • New services: miniflux, wireguard, languagetool, email service for you domain (based on awesome Migadu) and consultations

  • Website redesign - made with ❤ ourselves instead of old generic template

  • announcements room migrated to public room without encryption, but with invites and previews

Dept of Bots 🤖

Community -> Space Bot

TravisR said:

If you're trying out all those cool Spaces (Element Blog) and have some old Communities/Groups hanging around, I have the bot for you.

spacebot makes quick work of the conversion by translating as much as possible to the Space structure. Simply DM the bot and say !convert +group:example.org and it'll go off and make your Space.

The bot doesn't invite everyone from your Community to your Space, giving you a chance to configure the Space further before advertising it within your rooms.

The source can be found on GitHub if you feel like running your own or seeing how simple it is under the hood. #spacebot:t2bot.io is a great place to get help if you're having problems getting it going, and #help:t2bot.io would be glad to assist you if the t2bot.io deployment doesn't do the right thing.

P.S.: Spaces are currently considered Beta in Element, so they might not be perfect just yet. #spaces:riot.ovh is the room to join if you have questions about Spaces.

Hemppa

Hemppa the Bot is a multipurpose bot for writing modules super easily in Python.

Cos offered:

Hemppa the bot is a general purpose Matrix bot written in Python. This week it gained two useful admin tools: Kick by wildcard (for cleaning up zombies after bridge decomission) and making tombstones to point room to a new one. https://github.com/vranki/hemppa

Dept of Interesting Projects 🛰️

raspberry-noaa-v2 matrix support

Cadair said:

A little bit different, but matrix related, this week I added Matrix push support to the raspberry-noaa-v2 project. This is a project which runs on a raspberry pi to automate receiving, decoding and post processing of images over radio from weather satellites. It's easy to build a cheap ground station for this with little more than a USB SDR dongle and a metal coat hanger. If you want to see the pictures I am decoding you can join #weather:cadair.com.

Cadair, living in the north of England, will only see this symbol unfortunately 🌧️

Server_Stats Voyager Project

MTRNord announced:

The Project now has a proper webpage at https://serverstats.nordgedanken.dev/ !

Newly added Features are:

  • A List of all the rooms that are found

  • A list to find the links (either outgoing or incoming) for a room. So a 1 level deep view into the graph as a table.

  • An FAQ with some information about the project, known data issues and more

  • A websocket at wss://serverstats.nordgedanken.dev/ws that allows you to get the updates directly pushed as soon as a room lands in the db. Effectively the fastest way to get data updates.

Planned features for the webpage

  • AR and VR Graphs

  • A Space Finder that allows you to find the discovered spaces

Be aware that this page is very new and therefor might have bugs. It also isn't yet mobile optimized.

For questions, suggestions or fast updates check the #server_stats:nordgedanken.dev Room or for questions regarding issues with the bot in a specific room feel free to write a DM to MTRNord :)

Possible Bug that needs manual fixing

Due to a bug with my homeserver or synapse it happens for some rooms that synapse generates a lot of join events (Lots of "server_stats bot made no change" messages). If you see this please write a message to MTRNord so I can manually prevent my bot from trying to join the room over and over again as I cannot easily detect this kind of issue before joining.

The issue can be followed at https://github.com/matrix-org/synapse/issues/10021

midnight from cvwright

cvwright offered:

This might be of interest for TWIM. It's a little web app that supports token-based registration in the Matrix UIAA. Sort of like matrix-registration, but aiming for compliance with the UIAA spec

https://github.com/KombuchaPrivacy/midnight

Dept of Built on Matrix 🏗️

Circles, new social network on top of Matrix

cvwright offered:

Circles is a new project to build an E2E encrypted social network on top of Matrix. https://www.kombuchaprivacy.com/circles/ https://www.kickstarter.com/projects/cvwright/circles-a-secure-social-app-for-friends-and-family

It's really early days for this project, but please check it out!

Final Thoughts 💭

farribeiro reported:

The fedora project is discussing which domain to take in https://discussion.fedoraproject.org/t/so-what-domains-should-we-use-for-our-matrix-server/29842

Un-burying the lede: Fedora are making the jump to Matrix!

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
1the-apothecary.club463.5
2fosil.eu539
3helderferreira.io545.5
4trolla.us579
5zheng.fi639
6alra.uk702
7feline.support759.5
8thomcat.rocks770
9jae.fi777.5
10roeckx.be1033

#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
1lankolol.de392.5
2zemos.net2251

That's all I know 🏁

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