This Week in Matrix 2020-05-01

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

Matrix Live 🎙

Dept of Status of Matrix 🌡

Cross-Signing is close, please test https://riot.im/staging

Next week, Cross-Signing is planned for release!

Please test https://riot.im/staging this weekend, and report any issues you may find!

t2bot.io passes 3 Million bridged users

TravisR said:

Over 3 million people from Telegram and Discord have now been brought into the Matrix universe through t2bot.io. Of those people, around 230 thousand are active each month and 15 thousand are dedicated users of the bridges daily.

While this is a huge milestone for t2bot.io,it underlines the importance of self-hosting: having a couple giant bridges is great for accessibility, though where possible it’s heavily encouraged that people self-host. Hosting the bridges yourself on your own homeserver gives you better control of what passes through your server, reduces your dependence on third parties like t2bot.io, and gives you better performance.

During peak periods, t2bot.io sees about 10 messages per second passing through it. Half of those messages are generated by the Telegram bridge alone. The other half is dealing with federation and the various other bridges and bots on t2bot.io. In terms of media, a new image is uploaded every 2 seconds, leading to 5.8 TB of media being stored. The database is 3 TB and holds 236 Million events - roughly 131 Million of which are sent by t2bot.io.

Thank you to everyone who has used t2bot.io in the past 3 years - it’s been more successful than ever imagined. Here’s to another year and a bunch of self-hosting. :)

Dept of Spec 📜

anoa said:

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:

  • No MSCs were merged this week

MSCs in Final Comment Period:

  • No MSCs are currently in FCP.

New MSCs:

Spec Core Team

In terms of Spec Core Team MSC focus for this week, MSC2454 has entered FCP, and as such we've decided to instead focus on MSC2399. So the new list of MSCs for next week is: MSC2366 (verification flows), MSC2399 (UISI messaging), and MSC2472 (Symmetric SSSS).

Dept of Servers 🏢

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander announced:

  • Room version 5 support added - Dendrite now supports all current room versions!

  • Room version 5 will now be used by default when creating new rooms.

  • Backfill over federation has been implemented and it honours history_visibility correctly.

  • Strict key validity checking has been fully implemented in gomatrixserverlib in support of room version 5. Some key expiry bugs have also been fixed.

  • Back-pagination tokens are now generated correctly for events that have the same depth.

  • It's now possible to limit the number of Postgres connections - thanks tomasji!

  • Some progress towards working invites has been made.

  • Federated room joins are now performed by the federation sender as a part of an on-going remodelling.

  • Some bugs with URL query vs. path escaping have been fixed in gomatrixserverlib.

  • A number of internal APIs have been merged together.

  • Some new tests have been added to the sync API.

v5 rooms! this is a sign of huge progress in Dendrite!

Synapse

Neil offered:

We’ve spent time this week working with the Riot teams to tweak matrix.org performance for cross signing. We’ve also fixed a few performance regressions ahead of next week's 1.13.0 release (which will be a big one, more details when it lands).

With any luck we’ll have Redis in production on matrix.org next week, we don’t think this will give us a huge performance win, but there is certainly overhead in having so many workers using the previous replication streaming method.

Our sharding project continues, and Erik has been trying to move the event stream entirely away from the master process which in itself could be significant for overall perf once ready for production.

Aside from that we continue to improve SSO support and we have a really great community PR from sandhose that implements OpenID Connect support. We are really looking forward to getting that merged. The admin API is also getting plenty of community love with awesome-manual and dklimpel leading the charge.

Next week, look out for 1.13.0 and hopefully some more good news on sharding.

P2P Matrix

kegan told us:

Version 0.0.6 has been released on https://p2p.riot.im which has the following changes:

  • Room version 5 is supported by default.

  • Backfill is much more reliable.

  • Backfill now does all PDU checks required of it

You might get kicked out a few times whilst the service worker shifts around, you can force things by going to chrome:serviceworker-internals or about:debugging#/runtime/this-firefox to unregister the worker manually. Logs will state version 0.0.6 on update.

All the benefits from Dendrite (above) will feed into this.

Conduit

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

timo said:

There was a lot of progress this week!

  • First server-server communication by requesting a remote public room list

  • Paginated message loading

  • Message notifications

  • RiotX support

  • Changing the nickname works properly now

  • Forget rooms

Thanks to my supporters on Liberapay.

Dept of Bridges 🌉

matrix-appservice-irc

Half-Shot announced:

Hey all, the IRC bridge has reached another milestone, 0.17.0. This is a medium sized release, containing a few nice to have features like predicting nickname conflicts and some work around user deactivation. Importantly, this release authenticates the provisioning endpoint so if you run an integration manager or script that makes use of it, ensure that it handles requests appropriately. You can see the changelog in https://github.com/matrix-org/matrix-appservice-irc/releases/tag/0.17.0

mx-puppet-bridge

mx-puppet-bridge is a general bridging library that supports (double)bridging and relays. The goal is to make it as easy as possible for others to bridge new third-party protocols to matrix. Support room Donate

sorunome told us:

  • event syncing/storage is now properly handled on a per-room basis, rather than a global one

  • automatically renew double-puppeting if shared secret auth is enabled

  • Enhance reply support matrix->remote: The remote protocol gets in the callback now proper information on the event replied to

  • Add remote->matrix reply fallback

mx-puppet-skype

  • Implement skype quotes / matrix replies

  • various stability fixes

Dept of Clients 📱

Pattle: version 0.15.0

Pattle is a client written for Flutter using Dart

Wilko told us:

A new version has been made available and will become available on Google Play and TestFlight!

Because of corona this might take longer than usual.

Changes

  • A lot has changed internally, expect to have a smoother experience!

    (See also the Matrix Dart SDK release)

  • A new logo is here!

    Designed by bo_rad!

  • Logging in has completely been revamped

  • For the initial sync (after login) a splash screen is shown

  • Chats in the overview are now separated by two tabs: Chats and channels

  • There's now a navigation drawer, which will be filled with useful actions in the future. For now it's just a place to go to Settings

  • Message times are now shown on the same line, if possible

  • Replies have been redesigned

  • Buttons or list tiles that didn't do anything have been removed to avoid confusion

  • Image sending has been improved, the image is now shown immediately in the timeline

  • Push notifications don't popup when the respectful chat is opened

  • Push notifications are now grouped by chat

  • Push notifications are hidden when opening the respective chat

  • Messages are immediately marked as read, previously was after 2 seconds of having it opened

  • Some colors in the dark theme have been altered

  • Ability to create a chat has temporarily been removed, it wasn't functioning well and will be completely redone

Get Pattle

Issues or suggestions

If you stumble upon any issues or would like to suggest features, please do so here!

You can login via GitHub and Gitlab.com!

Follow development

Follow development in #app:pattle.im!

2020-05-01-pPDBS-0.15.0.png

gomuks

gomuks is a terminal based Matrix client written in Go. Source on GitHub

Tulir announced:

gomuks now has experimental support for end-to-end encryption on the e2ee branch. It supports both text messages and media downloads. The majority of the work happened in mautrix-go (also on the e2ee branch). This also means that mautrix-whatsapp will get support for end-to-bridge encryption in the near future.

What megolm implementation are you using?

My own based on matrix-nio, the e2ee implementation guide and the spec. libolm bindings stolen from https://github.com/Dhole/go-olm

Nio

Nio is a client written with SwiftUI

kilian told us:

Nio received some cool new features this week.

  • New Dutch and Chinese (simplified) translations (besides English & German)!

  • Edited messages are now displayed correctly.

  • An edit action has been added to the event context menu, long press a sent message to go into edit mode (looks cool as well!).

  • When entering a full MXID into the username field on logging in, Nio will automagically prefill the homeserver URL (if a well-known config is present server-side).

  • Rich text markdown message display including clickable links detection is now in the works!

Best part about all of these changes: They were contributed by others, I did nothing but merge the PRs! Open-Source ❤️ Shout out to @stefan:stefanhofman.nl, @thomas:mustelo.de, @captain-yukinoshita-hachiaman:matrix.org and @regexident:matrix.org.

Nio well known

RiotX

benoit announced:

RiotX will finally be an update of Riot-Android on the PlayStore and RiotX beta will then be removed from the PlayStore. We will implement everything to let users upgrade their application without being forced to log in again.

While we are finalizing cross-signing, quadS, bootstrap, etc. on RiotX, we have started studying and implementing the main missing features: identity server and related functionality (terms of service consent, invite by email, search in contact list, bind emails and phone numbers, etc.), integration manager (terms of service consent,widgets, send stickers), WebRTC audio and video calls, Jitsi conference integration, and other important missing features like UI and UX to invite people to a room, etc. We are also fighting an annoying bug related to the navigation inside a timeline.

It's also now possible to deactivate your account using RiotX.

It's worth noting that people can contribute to translate RiotX by using new dedicated Weblate projects. Thanks!

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) announced:

  • fernie contributed a smoother scroll behaviour and a loading indicator for individual rooms

  • We fixed some readability and styling issues

  • We fixed a major bug in 0.7.1, where you couldn't accept invites

  • We fixed a bug, where nheko would pin a core to 100% CPU on highdpi screens, because it tried to resize avatars all the time...

  • We also reduced CPU usage by a lot. Nheko now only uses 0.7% CPU on my system again and that's just the presence updates I get every 100ms or so...

There will probably be a release in the near future to get those fixes to people not running master.

The reduced CPU usage is mostly not resorting the whole room list all the time, but keeping the partially sorted room list around and not storing pending read receipts in the database but just applying them all the time without checking, if we are waiting on a receipt :D

Riot Web

A glossy Matrix collaboration client for the web. https://riot.im

Ryan told us:

Several more RCs this week have brought us ever closer to the release of cross-signing! A variety of verification, login, and toast issues related to cross-signing have been fixed in the RCs this week. Please do test https://riot.im/staging over the weekend, as we're planning to release early next week if no issues are found.

Luxury Dark Theme for Riot

Dylan said:

2020-05-01-gJYz1-image.png

OCRCC embeddable Matrix chatbox

Brendan told us:

Nomadic Labs have built an open-source embeddable chatbox using Matrix for the OCRCC (Ontario Coalition of Rape Crisis Centres) to allow survivors of sexual violence to communicate and seek help safely with OCRCC facilitators. This chatbox lives at https://github.com/nomadic-labs/ocrcc-chatbox - and it has a pretty nice feature set, including end-to-end encryption support.

They've also built a E2EE-capable bot to connect people with facilitators, which can be found here: https://github.com/nomadic-labs/ocrcc-bot

This is a really exciting project! Very stylish design and great to see people using Matrix for something so practical and positive. 👍

Dept of SDKs and Frameworks 🧰

Matrix Dart SDK: version 0.30.0

Wilko told us:

The whole SDK has been refactored!

  • All data objects such as MyUser, Room, etc. are now immutable

  • Add MoorStore, which uses moor (thanks to MatMaul for the idea and initial implementation!)

  • The SqfliteStore (was in a seperate package) is now deprecated

  • LocalUser has been renamed to MyUser

And a lot of other changes!

How it works

The user has a stream of Updates, user.updates. An Update contains the latest 'snapshot' of data associated with the user. It also contains a delta MyUser, where all properties are null, except those that are changed. For example, if a user started typing in a certain room, and we're syncing, there will be an Update in user.updates, where delta has 1 Room in delta.rooms, with only the room where the user started typing, reflected in room.typingUserIds. All other properties of the Room will be null. This is all assuming that this is the only change in the sync. If more happened, it will be reflected in delta.

For more info, see the README

Some features previously present may not have been added yet again.

They will be added in the future!

Get it on pub!

Join #sdk:pattle.im to learn more!

🧙 Polyjuice Client

Polyjuice Client is a Matrix library for Elixir

uhoreg announced:

To better serve the wizarding community's transformation needs, I have released v0.2.2 of Polyjuice Client, a Matrix library for Elixir. This release adds support for some more Matrix endpoints, and allows paginating through room history using Elixir's streams.

Ruma

jplatte and iinuwa offered:

We've iterated through a few new pre-releases of our libraries to bring some usability improvements. Here are a few highlights:

  • Implemented User-Interactive Authentication API and some other endpoints to bring us very close to full r0.6.0 compatibility

  • Updated the representation of events to allow preserving original JSON alongside typed event structs

  • Tidied up some our repositories, improved CI build times

  • Began work on Server-Server API in ruma-federation-api

Dept of Ops 🛠

matrix-chart v1.1.1

Typo Kign announced:

v1.1.1 of dacruz21/matrix-chart is out and now supports the matrix.org IRC bridge! dacruz21/matrix-chart is a secure, scalable way to deploy a complete Matrix homeserver stack, complete with bridges and useful services, into Kubernetes. As always, come visit #matrix-chart:typokign.com if you have any questions or need support!

buildbot-matrix plugin available

haywo said:

buildbot-matrix v0.0.1 released:

  • A plugin for the Buildbot CI framework

  • It sends build status notifications to a specified matrix room

  • available on PyPi, install with pip install buildbot-matrix

Dept of Bots 🤖

Opsdroid

Cadair said:

Opsdroid has released v0.18 this week, which contains a load of stuff. The main matrix related changes are:

  • A generic event type for all unsupported matrix events, so you can now react to and send any custom events.

  • Implementation of the join room event in the matrix connector so you can react to users joining a matrix room.

  • A fix for mxc urls in messages, so inline images etc work.

  • A fix for the opsdroid memory to allow per-room matrix room state databases. This will hopefully be merged into core for the next release.

Picard Opsdroid Skill

Related to this release the picard skill for bridged slack/matrix community management has been updated, and now (for the first time) works with a release version of opsdroid rather than some random branch 🤣. This involved adding support for lots of different events to the slack connector in opsdroid.

See Matrix Live this week for a neat introduction to OpsDroid

New bot to share Jitsi call URLs

Cadair reported:

I wrote a bot to share Jitsi call URLs. The main objective is to allow people on the other side of bridges to get the URL for a jitsi call. When a jitsi widget is added to a room (v2 widget from riot-web) it will post a message with the plain jitsi URL. It also provides a !jitsi command which allows people to create a jitsi call with a custom URL, and if the bot has permission it will be added as a widget in the matrix room. It has a bunch of other config options you can tweak it with. The main thing you might find it useful for if you are not in a bridged room is you can use it to quickly add a jitsi widget for any conference URL. The bot can be found here: https://github.com/Cadair/skill-jitsi/ and it uses the opsdroid framework. I have also hosted a version @jitsibot:cadair.com

CovBot v0.1.5

Peter Roberts said:

  • Add regional data for Findland, Wales, Northern Ireland and Scotland with thanks to @bertieb:matrix.bertieb.org.

  • Get UK and England regions from a new source as Public Health England stopped providing their CSV data, again thanks to @bertieb:matrix.bertieb.org.

  • Send m.notice by default but use m.text in IRC bridged rooms to avoid annoying IRC users.

  • Make logging more consistent which helps with debugging.

MIT licensed on GitHub.

Dept of Interesting Projects 🛰

Doctor Who watchalongs

Brendan offered:

We're still having a great time watching Doctor Who with folks from the wider Matrix community. The next one scheduled is happening on Wednesday (May 6th) at 7PM, and we'll gather to watch The Girl in the Fireplace (series 2 episode 4) together, with tweets from Steven Moffat (writer) and Sophia Myles (Madame de Pompadour) bridged to the room 🙂

As always, if folks want to tag along and join the fun, feel free to join #doctor-who-watchalong:abolivier.bzh !

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.space333
2lo.hn567.5
3maescool.be655.5
4sibnsk.net790.5
5nct08.de817.5
6matrix.un-hack-bar.de952
7mtx.liftm.de1073.5
8federator.dev1268
9matrix.vgorcum.com1510
10shortestpath.dev1571.5

That's all I know 🏁

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