This Week in Matrix 2020-05-29

2020-05-29 — This Week in Matrix — Ben Parsons

Matrix Live 🎙 Demos!

This week we have demos from our core team remote sync!

Dept of Spec 📜

anoa announced:

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

Merged MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

New MSCs:

Spec Core Team

In terms of Spec Core Team MSC focus for this week, we've still got MSC2366 (verification flows) and MSC2399 (UISI messaging), however they are now joined by a third, secret MSC that we'll be working on internally for now :)

2020-05-29-s6ujI-plot.png

Spec releases: Room Version 6, Client-Server r0.6.1, and Federation r0.1.4

Says TravisR:

It's been a little while since we've done a round of spec releases, so we have a bunch of spec releases to share. If you're implementing something from the spec, please have a look at the news: https://matrix.org/blog/2020/05/27/room-version-6-client-server-r-0-6-1-and-federation-r-0-1-4-spec-releases/

As always, any questions about the spec itself can be answered in #matrix-spec:matrix.org, #matrix-dev:matrix.org, or in the various area-specific rooms floating around the federation.

Dept of Servers 🏢

Conduit

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

timo said:

Hello again! This week I worked on access control, which means that private rooms are private and invite-only rooms are invite-only. The public room directory only shows rooms marked as such now.

I also made a milestone to track progress on Conduit 1.0. This release marks the point where Conduit is fully usable as a non-federating homeserver. All features of the client server specification should be implemented, unless they can be seen as optional extensions (e.g. alternative registrations methods like email). Conduit should also be free of all known bugs with those features.

Adding federation on top of the 1.0 release will very likely require breaking changes. This means that the release which brings federation will be 2.0 or later and will require a partial or full database deletion.

@TravisR wrote a fix for Riot Web, so you should be able to create accounts on Conduit from <https://riot.im/app> soon.

Thanks to my supporters on Liberapay.

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander said:

Updates:

  • The monolith now has a "hybrid" mode that uses the full HTTP APIs instead of short-circuiting

  • A number of the internal HTTP APIs are now tested fully and have been fixed as a result, which will also improve running a full polylith component deployment

  • Server keys are now managed by a separate server key API component

  • Batched sends in the federation sender are now working properly, improving send performance significantly

  • Error handling in the federation /send endpoint has been tweaked

  • /get_missing_events now returns events that don't fail signature checks

  • Federated room joins by room alias now attempt the server specified in the alias much more reliably

  • The correct room ID is now returned from the PerformJoin API

  • Much of the room server storage code has been deduplicated

  • Fixed some bugs in the device database storage code

  • Sync streams are now managed per-user-per-device, rather than just per-user

  • We no longer incorrectly default to federated joins in response to local invites

Spec compliance:

  • Client-Server APIs: 34% (228/672 tests)

  • Federation APIs: 34% (35/103 tests)

Synapse

Says Neil:

The main news this week is that we switched event persistence away from the matrix.org master process which has made a big difference to overall performance. The impact is best demonstrated by graphing message send times.

synapse perf

We also shipped 1.14.0 which includes OpenId Connect support and improved cache control granularity. It also contains rooms v6.

Next week will be having a think about what to do next for matrix.org performance. Watch this space.

TARDIS (Time Agnostic Room DAG Inspection Service)

Matthew offered:

I made a TARDIS (Time Agnostic Room DAG Inspection Service) - a simple time-travelling debugger for Room DAGs which plugs into Dendrite's internal APIs to visualise room DAGs. The intention is to provide it as a widget which Riot can use to visualise DAGs for debugging, particularly for P2P Matrix. The time-travel bit is simply that it could let you filter out the newer events to show how the DAG has evolved over time, although that isn't hooked up yet. https://github.com/matrix-org/tardis

2020-05-29-vjRQ5-technicolor-yawn.jpg

Synapse Deployment 📥

Kubernetes

Ananace said:

Just pushed the K8s-optimized images for Synapse 1.14.0 - slight changes have been done to the image to further streamline it a bit.

Docker-matrix

Mathijs said:

With the release of synapse 1.14.0 the avhost image, including jemalloc, mjolnir and coturn has been updated as well, avhost/docker-matrix:v1.14.0, as always the release candidates were uploaded at mvgorcum/docker-matrix:v1.14.0rc1 and rc2

Dept of SDKs and Frameworks 🧰

Ruma

jplatte offered:

This week,

  • iinuwa added some new endpoints to ruma-federation-api

  • devinr528 wrote lots of macro code for the next major revision of ruma-events as part of his GSoC project

  • Timo (author of the Conduit homeserver) reported lots of small issues with ruma-client-api of which some are now fixed already

Additionally, we released two new bugfix library versions:

  • ruma-events 0.21.3 fixes an event serialization issue

  • ruma-serde 0.2.2 (an internal dependency) fixed an incomplete part of querystring deserialization, so Conduit (and other future homeservers building on ruma-*-api) can properly handle querystrings in which parameters are repeated (like the server_name in /join/{roomIdOrAlias})

buildbot-matrix v0.0.5

Thanks haywo for this update:

buildbot-matrix v0.0.5 has been released:

  • Option to only get notifications on finished builds was added.

buildbot-matrix is a small plugin for the Buildbot CI framework which sends notifications to matrix rooms. It's available an GitHub and PyPi, take a look at https://github.com/HayWo/buildbot-matrix for more informations.

Dept of Bridges 🌉

Let's start with the big news of the week

Half-Shot announced:

I, Half-Shot, changed the status of the IRC Bridge on https://matrix.org/docs/projects/bridge/matrix-org-irc-bridge from "Early beta" to "Stable". This does not mean it's feature complete, or even all the way there, but it sure doesn't crash nearly as often as it did when I started, so that's good enough for me.

matrix-appservice-slack 1.4.0-rc1

Half-Shot offered:

Hey folks, we've released the first RC for 1.4.0 of the slack bridge. This change includes a number of bug fixes around puppeting, but includes a few nice to haves like a /ready endpoint for kube/docker deployments and setting profile information on startup. Please test, and feedback in #matrix_appservice_slack:cadair.com :)

Mau-bridge multi-update

Tulir told us:

I've been working on improving the reliability of my bridges, primarily by making sure that the user knows if something went wrong. All my bridges now support delivery receipts (implemented as bridge bot read receipts) and can send delivery error messages if there was an error bridging a message. The Facebook and Hangouts bridges also now send connection status messages to a bridge notice room like WhatsApp already did before.

Minetrix

Certainly not from this week, but we haven't featured it before: Minetrix allows you to bridge a Minecraft server with a Matrix room.

I read recently that Minecraft still has 126 million MAU!

Dept of Clients 📱

Daydream

mtrnord told us:

A Matrix webclient written in (mostly) Rust using the official Matrix-Rust-SDK and Rusts WASM Support.

Daydream is the Idea of a Rust Matrix Client. It is still in a very early state and at the time of writing this supports basic displaying of text, image and bot messages as well as sending plain text and markdown.

Try it at https://daydream.nordgedanken.dev/ or check out the Source Code at https://github.com/MTRNord/Daydream

Feel free to join the Matrix Room: #daydream:nordgedanken.dev

2020-05-29-ATL-f-grafik.png

RumaTui

Thanks devinr528 for sharing this WIP Command line Matrix client using matrix-rust-sdk:

  • Display read receipts for the last few messages
  • Display membership status when updated
  • Join a room you have been invited to
  • Client sends read receipts to server
  • Display when messages have been read
  • Leave a room by pressing Delete key (this should probably be a Ctrl-some key deal...)
  • Specify homeserver to join on start up (before the login screen)
  • Displays errors, albeit not very helpful or specific
  • Receive and display messages
    • formatted messages display as rendered markdown
  • Send messages
    • local echo is removed
    • Send textbox grows as more lines of text are added
  • Selectable rooms list
    • change rooms using the arrow keys, making this clickable may be difficult
  • Login widget is click/arrow key navigable
    • hides password

rumatui-demo

A new notification bar under the message window displays notifications such as membership changes, typing, and read notices. I am hoping to have an actual release on crates.io by the end of the day. If you have any thoughts join #rumatui:matrix.org or check it out on github.

Riot-web

Bruno said:

This week on Riot-web, we've been:

  • starting work on shifting the UX for the encryption upgrade towards using recovery keys in favor of passphrases.

  • starting early work on a redesigned matrix.to website

  • starting looking to integrate riot desktop with the native password manager of your platform of choice through keytar

  • fixing some issues with the (still experimental) IRC layout

  • iterating on the (also still experimental) new room list

  • looking into some issues that arose from the cross-signing release

Riot-iOS

Says Manu:

Riot-iOS (and MatrixSDK and MatrixKit) is now fully compatible with iOS13 SDK. A TestFlight 0.12.0 will be available soon.
The work is still on its branches (xcode11). It comes with the new notification service mechanism and we want to run a lot of tests next week before going to production.

Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) offered:

  • Ikito added options to show larger emoji in the timeline and added tooltips to all settings, that provide additional explanations.

  • You can now limit the width of the timeline to make long messages more readable, if you maximise Nheko on a widescreen monitor.

  • Lorenzo added a pretty much complete italian translation!

  • Settings that apply to the qml parts in Nheko now apply immediately without a restart.

Dept of Bots 🤖

midori jabbot 0.5

Torrey Searle reported:

midori jabbot 0.5 has now been released.

Jabbot is a multi-protocol chat bot that can be taught new commands in-chat

This is the first release of jabbot with support of matrix in it. This release also includes support for DISCORD.

Additionally this release is the first release that can be installed via APT


echo "deb [trusted=yes] <https://dl.bintray.com/midoricorp/deb> unstable main" | sudo tee -a /etc/apt/sources.list
apt-get update

apt-get install jabbot-full

See https://github.com/midoricorp/jabbot/blob/master/README.md for details

or goto #midori-dev:hackerspaces.be for support/live-demo

Dept of Guides 🧭

Cross Signing explanation

This is a great resource for helping explain how cross-signing works!

JCG said:

After explaining cross signing to others multiple times in the past and seeing the question again on mastodon, I decided to write a short blog post on the topic, explaining how the keys interact with each other and how Alice's devices then end up trusting Bob's devices. You can read it over on https://jcg.re/blog/quick-overview-matrix-cross-signing/

Cross-signing implementors guide

This one isn't quite merged yet as we're going to give a thorough review, but big thank you to sorunome for taking the time to put this together:

While implementing cross-signing for fluffychat soru decided to write a guide that would help other client developers to implement that, too. So far it is still WIP and doesn't cover too much, yet, but soru might have typed up more once this TWIM goes live. The PR (and thus the markdown of the guide) can be found here: https://github.com/matrix-org/matrix.org/pull/740

Dept of Event Videos 📹

Matthew spoke at Rust London meetup earlier in the week, check out the video!

(Matrix at around 29:30)

New Public Rooms 🏟

Ludwig announced:

May I advertise #matrix-design:matrix.org to you.

It's a bunch of people who are passively learning design for their matrix projects. You might pick up a few things if you join :p

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. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1fairydust.space350.5
2jonas-schuermann.name437.5
3fachschaften.org446
4revreso.de576.5
5heitkoetter.net598
6matrix.vgorcum.com634.5
7c-base.org694
8fab.network828
9sumnerevans.com1023
10nltrix.net1032

Final Thoughts

You may have seen that Mastodon is preparing to implement Olm! Read some news in German or why not watch Gargon on Open Tech Will Save Us #2 where the idea was first discussed? It's like you're in the room where it happens... 🎶

That's all I know 🏁

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