This Week in Matrix 2020-11-20

2020-11-20 — This Week in Matrix — Ben Parsons

Matrix Live 🎙

Something different this week as we welcomed the community to submit their own demos!

  1. Oleg presents his Matrix home-automation setup, which uses Opsdroid, home-assistant and the reminder maubot.
  2. Nico gives presents a selection of small-ish new features in Nheko
  3. Timo gives a tour of the current state of the Conduit homeserver
  4. MTRNord (Marcel) presents the time-tracking bot used by Famedly
  5. Sorunome presents bootstrapping (creating cross-signing keys and online keybackup) in Fluffychat.
  6. Bala from Noteworthy presents Deploy a Matrix home server in 2 minutes with Noteworthy (set to royalty free music!)

Dept of Status of Matrix 🌡️

Bundeswehr deployment and app goes live

Matthew reported:

The Matrix deployment for the Bundeswehr (German Armed Forces) has gone live - details (in German) at https://messenger.bwi.de/ and https://www.bwi.de/news-blog/news/artikel/open-source-matrix-ist-einheitlicher-messenger-standard-fuer-die-bundeswehr and further coverage at https://www.egovernment-computing.de/bwi-und-bundeswehr-setzen-auf-open-source-a-980033/

Oleg (same fellow from the video - wow!) added:

Heise (German news portal) also quoted the news: https://www.heise.de/news/Matrix-steht-als-Messenger-fuer-Soldaten-und-zivile-Angehoerige-zur-Verfuegung-4963211.html

David Mehren linked to Element's own coverage:

https://element.io/blog/bwmessenger-goes-live-for-bundeswehr/

Dept of Spec 📜

New spec platform

wbamberg said:

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

MSC Status

Merged MSCs:

  • No MSCs were merged this week.

MSCs in Final Comment Period:

New MSCs:

Personally I would find that last one quite helpful!

Spec Core Team

In terms of Spec Core Team MSC focus for this week, we're sticking with the same three MSCs: MSC2844 (global versioning), MSC1544 (QR code verification) and MSC2790 (modal widgets). MSC2844 in particular I personally found quite interesting.

2020-11-20-M8ArJ-stacked_area_chart.png

Dept of Servers 🏢

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander said:

We started out this week by releasing Dendrite 0.3.0 and then ended the week with a bug-fix Dendrite 0.3.1 release.

I'd like to say thank you especially to our community contributors who have been adding new features and filling gaps!

Changes this week include:

  • Memory optimisation by reference passing, significantly reducing the number of allocations and duplications in memory

  • A concurrency bug has been fixed in the federation API that could cause Dendrite to crash

  • A hook API has been added for experimental MSCs, with an early implementation of MSC2836

  • Forgetting rooms is now supported (thanks to S7evinK)

  • The last seen timestamp and IP address are now updated automatically when calling /sync

  • The last seen timestamp and IP address are now reported in /_matrix/client/r0/devices (thanks to alexkursell)

  • An optional configuration option sync_api.real_ip_header has been added for specifying which HTTP header contains the real client IP address (for if Dendrite is running behind a reverse HTTP proxy)

  • Partial implementation of /_matrix/client/r0/admin/whois (thanks to DavidSpenler)

  • The error when registering a username with invalid characters has been corrected (thanks to bodqhrohro)

  • The -version command line flag has been added (thanks to S7evinK)

  • Backfilling should now work properly on rooms with world-readable history visibility (thanks to MayeulC)

  • Some more client event fields have been marked as omit-when-empty (thanks to S7evinK)

  • The build.sh script has been updated to work properly on all POSIX platforms (thanks to felix)

Spec compliance is unchanged, although some Synapse-specific tests have been removed and some new tests have been added:

  • Client-server APIs: 58%, same as last week

  • Server-server APIs: 83%, same as last week

As always, feel free to join us in #dendrite:matrix.org for general Dendrite chat or #dendrite-dev:matrix.org for development discussion.

Synapse

callahad offered:

We released Synapse 1.23.0 on Wednesday! Read all about it on the Matrix Blog. Otherwise, we'd like to highlight a few developments over the past week:

  • We're discussing a policy for ending support for old versions of Python and PostgreSQL. If you have opinions, please let us know on GitHub.

  • Our initial implementation of MSC2403: Add "knock" feature is undergoing review, and will likely land soon.

  • We've been looking at ways to improve the efficiency of state resolution, and Erik has managed to devise some algorithmic improvements that yield an order of magnitude speedup for a handful of pathologic cases. We hope to have a better idea of how this might work for real world workloads soon.

Lastly, we'd like to take this opportunity to remind you to please regularly upgrade your Synapse. Especially if you're not yet on 1.20.0, as we'll be disclosing a denial of service issue which affects older versions on Monday.

maunium/synapse

Tulir said:

mewmew wanted to use my fork of Synapse, so I made the changes there configurable (instead of hardcoding to my user ID) and even added a readme to list the features. It might also be useful for other people who want custom room IDs and other fun stuff.

The fork is available at https://mau.dev/maunium/synapse

Homeserver Deployment 📥️

Kubernetes

Ananace offered:

And just to be on time, I just pushed an updated tag and new version of my K8s container image and chart for Synapse 1.23.0

Dendrite

Dendrite is a next-generation homeserver written in Go

TR_SLimey offered:

I've updated the Dendrite ARM docker images to v0.3.0. They can be found at https://hub.docker.com/r/trslimey/dendrite-monolith & https://hub.docker.com/r/trslimey/dendrite-polylith

and later

I have once again updated the Docker ARM Dendrite images for version 0.3.1.

Dept of Bridges 🌉

mx-puppet-bridge

mx-puppet-discord is a (double)puppeting and relay bridge for discord, based on mx-puppet-bridge

sorunome told us:

Support for receiving EDUs from matrix (typing, read indicators and presence) has been added. Protocol implementations can start using the new events, if they want to. Version 0.1.0 has been released along with this. You have to enable the de.sorunome.msc2409.push_ephemeral flag in your registration file

mx-puppet-discord

Added support for bridging typing and presence matrix->discord

Gitter

Eric Eastwood offered:

The native Gitter <-> Matrix bridge is in production! 🚀🚀 We're only testing it out in a single room but feel free to come by and send a message 😀

https://gitter.im/gitter/testing-matrix-bridge <-> #5faa0809d73408ce4ff3ad8e:gitter.im

We also have edits from the Gitter side flowing to Matrix and soon to support edits from Matrix. You can track our full progress from the GitLab epic for the native Gitter <-> Matrix bridge.

2020-11-20-YVtF0-editingmessages.gif

mx-puppet-vk

Coma Grayce told us:

Hey, our team of colorful ponies proud to introduce you a new Matrix bridge to VK.com chats. It's powered by mx-puppet-bridge and so far supports almost all of core features people want to see, like replies, message edits and file attachments.

Project home: https://github.com/innereq/mx-puppet-vk

Video introduction: https://www.youtube.com/watch?v=nBRBUA9beXs

Dept of Clients 📱

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:

  • Profiles should now open again on older versions of Qt.

  • I've been slowly rewriting the message are to be qml, to make it easier to do fancy styling. As a result emojis in the emoji-completer are now colorful and the avatars in the username completer now match the avatars used in the timeline. It also open up a few other improvements, like finally sending mentions as links instead of plain text.

  • We have now CI running on our self hosted gitlab instance. We will probably switch of the travis CI, once this is more battle tested. Repositories are now also automatically mirrored between gitlab and github.

  • Fixed a bug, where we tried to read the internal world group on your server instead of keeping that to ourself.

Konheko

Nico (@deepbluev7:neko.dev) offered:

I released 0.0.3 a few days ago bundling a few smaller improvements like redactions, copying messages and the ability to click on more links as well as some visual cleanups. Nothing radical, but also nothing breaking (I hope).

2020-11-20-2M9RA-Bildschirmfoto_20201120_001.png

Element

Neil said:

Delight (Rich vdH, Michael (t3chguy), Valere, Steve, Nique, Nad)

  • Improving usability

    • Last week

      • Observed user tests of people trying to use Element for the first time for personal and professional use cases
    • This week:

      • Began work on fixing several of the issues observed, like:

        • adding an invite people button to new rooms, so users can more easily add people;
        • changing copy to help people understand what DMs are
  • Spaces

    • Communities are coming back with a bang! Last week we said we renamed them to Spaces, and this week, we’ve started designing what MSC1772 would look like for users on Element, to start user testing next week.
  • Social login

    • To make authentication easier, we’ve started initial implementations of SSO in Element, exploring how homeservers & Matrix clients can support multiple SSO providers. Most of the work so far is captured in MSC2858.

VoIP (Dave, Brendan, Ismail, Francois, Simon, Nad)

  • Web

    • PR up for new look in-call UI, now looking at line 1 / 2 support
  • Mobile

    • Work ongoing to update both platforms to v1 VoIP
  • Design

    • Some tweaks as implementation is ongoing

Web Platform (Ryan)

  • Element Web 1.7.14-rc.1 is now available at <https://staging.element.io>, including:

    • Several tweaks and improvements to the room list filter

    • Improved registration based on user feedback

    • Improved invite / create DM flow

iOS Platform (Manu, Gil)

  • Last week:

    • The release has been blocked because a bug has been found in the end to end encryption module. It has been fixed but we want to fix damages it created on one time keys before releasing the new app version.

    • The new background sync service mechanism PR has been updated

    • We started to integrate tuist to stop to be annoyed with merge conflicts on the Xcode project file

  • This week:

    • Release!
    • Merge the background sync service mechanism PR and make more people test it

Android Platform (Benoit, Onuray)

  • Last week:

    • We’ve just merged a lot of PRs, to improve room creation form and fix some bugs.
    • SDK side, Dominaezzz is converting some of the Service API methods to coroutines, for a cleaner code. See for instance <https://github.com/vector-im/element-android/pull/2414> . 9 out of about 45 services have been migrated so far. We have about a 45 services in the SDK (!)
  • This week:

    • Release including a new way to invite friends to Matrix and to Element.

Hydrogen

Bruno reported:

Released 0.1.30 with image uploads. There is also a new preference in the settings to scale sent images down.

Dept of SDKs and Frameworks 🧰

Ruma

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

jplatte said:

Since our last update four weeks ago,

  • iinuwa created issues for all of the identity service api endpoints (w/ suggested module names!) 🎉

  • I updated lots of enumerated types to allow unspecced values, for future compatibility & robustness

  • Devin R made sure a custom Content-Type in responses overwrites the default rather than creating a duplicate header. #339

  • gnieto fixed a bunch of bugs in ruma-federation-api

  • Alejandro Domínguez added support for deserializing string power levels (requires the unstable-synapse-quirks feature because these events are invalid according to the spec but Synapse used to (?) accept them)

Ruby SDK

Ananace reported:

Just released version 2.2.0 of the Matrix Ruby SDK with the help of the community, with this release support for JRuby is improved - though still not perfect, in the higher-level abstraction direct messaging rooms are now exposed for all users - as well as all that the current user has, and the lower-level abstraction sees the addition of the CS API method to get an event context.

And just to reiterate; if you're using the gem - or have questions/comments about it. please do drop into the discussion room at #ruby-matrix-sdk:kittenface.studio.

Dept of Bots 🤖

You can see demos of both bots in this section by watching Matrix Live \o/

home-assistant-bot v2.0.0 released

Oleg told us:

Opsdroid bot for triggering home-assistant automations.

Changes

  • ⚠️ Possible breaking change: change behavior how messages are matched

    • Before: messages were matched only if a message starts with !

    • In this version: the whole message is matched. This means in v2.0.0 this will work Hey, please !turnon light1

      • You can override this by using ^ in the config for. For example: regex: "^!turnon"
    • This allows one bot trigger another. See this TWIM video for details. 😉

  • Add howto for setting up wakeup-light with home-assistant

  • Update Opsdroid to v0.19.0

  • Update opsdroid-homeassistant to 0.1.8

  • Add debug config parameter to display messages in the chat, that the bot is getting but, maybe, is not processing/matching

Feedback

Famedly Timetracking bot

MTRNord announced:

As seen in the video I am working at famedly on a bot to track our work hours.

Until this happens the video gives you a sneakpeak on the functions of that bot.

Current (implemented) functions

  • Tracking of time using !in and !out commands with forced usage of a description as well as ISO 8601 timestamps.

  • Verification if a time is logical based on the known data

  • Saving the times tracked inside of postgresql

  • Tracking durations using a !record command

  • Responding to only allowed users. (Including ignoring invites if a user is not allowed to use the bot.)

  • Using !delete to remove entries from the database as needed

Planned functions

  • Handling of timezones based on users

  • !stats command which prints you the tracked durations based on a predefined or custom range of time

  • CSV Export based on a defined range

  • !break command. Puting a break in between a record or a in/out combination.

  • Better handling of multiple !in commands

  • Improved responses

  • Reminders to call !out and to take breaks

Fell free to join us at #timetracking-bot:famedly.de . As soon as the repo gets opened up to public we will announce it in TWIM. Feel free to give suggestions or wishes in our room :)

Get it at: https://gitlab.com/famedly/bots/timetracking

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
1envs.net297
2neko.dev297.5
3maescool.be346
4sorunome.de396
5apetre.sc439.5
6maunium.net503
7midov.moe520.5
8matrix.sp-codes.de603
9matrix.thedisco.zone608
10casavant.org609

That's all I know 🏁

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