This Week in Matrix 2020-07-03

2020-07-03 — This Week in Matrix — Ben Parsons

Matrix Live 🎙

Dept of Status of Matrix 🌡️

Open Tech Will Save Us 4

The next Open Tech Will Save Us event will take place on Wednesday, that's 2020-07-08! Line-up is confirmed as:

Dept of 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

Finished Final Comment Period:

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, as last week we are sticking with "implementation" for now. We'll be back soon :)

Dept of GSoC 🎓️

This week was the first evaluations, we'll have results to share next week.

matrix-ircd (GSOC)

karlik offered:

for matrix-ircd:

  • Removed futures 0.1 dependency & move all modules to futures 0.3

  • Update all tests to use async / await

  • Begin merging updated futures to async_await branch

go-neb

From nikofil:

  • e2ee merged and some bugs fixed (pr #324)! You should be able to use neb normally in an encrypted room now, if that's not the case please let us know!
  • Added integration tests for both encrypted and unencrypted rooms to neb in order to catch things that might break some core functionality in a subtle way (issue #326)
  • Similarly, created a PR for mautrix-go for testing the Olm and Megolm session establishment and message encryption / decryption (pr #12)
  • Next up, working on a service for neb for testing the crypto functionality of other clients: neb will send messages to a room, rotate keys etc. and your client is supposed to respond!

Dept of Servers 🏢

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander said:

This week has seen some new architectural changes and a number of bugs fixed:

  • A new Current State Server component has been added, which tracks room state

  • The Public Rooms API has been deprecated in favour of the Current State Server

  • Event size limits are now honoured with the correct return code

  • Invites have seen some refactoring and retiring invites should work better now

  • The federation sender now persists unsent PDUs to the database and will automatically retry when Dendrite is restarted, making resend behaviour much more reliable (particularly in the P2P demos)

  • Some room checks in /state and /state_ids have been fixed

  • Some additional restrictions have been added to /send and we now return the correct error codes

  • A bug where current state was incorrectly used when getting missing/backfill events has been fixed

  • A bug where you couldn't rejoin a room that you created after wiping your database has been fixed

Spec compliance:

  • Client-Server APIs: 45%

  • Server-Server APIs: 50%

Conduit

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

timo reported:

This week I didn't have much time to work on Conduit, but together with @the0 we could implement both password changing and account deactivation!

With last week's key backup and cross-signing PR landing in master, here's a list of all major features still missing from Conduit:

  • All of Federation

  • Appservices

  • Push Notifications

  • Notification settings

  • Message Search

  • Presence

  • Room Tagging

Thanks to everyone who supports me on Liberapay or Bitcoin!

Synapse

richvdh reported:

Synapse 1.15.2 shipped this week with some important security fixes - if you haven't already upgraded, please do asap! Meanwhile, we're also preparing a 1.16 release with the normal round of bugfixes and incremental improvements.

The big focus in the Synapse team continues to be on performance for larger Synapse instances, which is reflected in the support in 1.16 for running multiple media worker processes. We're working on giving other worker processes the same treatment, so expect more of the same in the weeks to come!

Synapse Deployment 📥️

Kubernetes

Ananace announced:

Just pushed the 1.15.2 tags for the K8s-optimized Synapse image.

Docker matrix

Mathijs offered:

The avhost image including coturn, jemalloc, and mjolnir for synapse 1.15.2 was released at avhost/docker-matrix:v1.15.2, while the RCs images were released on my personal repo; mvgorcum/docker-matrix:v1.16.0rc1 and mvgorcum/docker-matrix:v1.16.0rc2

Dept of Bridges 🌉

Twilio & Maubot based SMS bridge

Jeff Casavant offered:

I wrote a very simple Twilio & Maubot based SMS bridge recently which I've been running for long enough with no delivery errors that I'd consider it stable. It's oriented towards bridging many individuals to single rooms via SMS. You'll need to have a Maubot instance in order to run it.

https://github.com/jeffcasavant/MaubotTwilio

Dept of Clients 📱

Syphon - new client announcement

usbfingers offered:

Hey TWIM ,

Tuesday, I did a soft announcement of open alpha for Syphon - a privacy centric matrix client

Source: https://github.com/syphon-org/syphon

Website: https://syphon.org

Features:

  • no analytics.

  • no proprietary third party services

    • iOS will have APNS opt-in, but will be made clear to the user
  • all data is AES-256 encrypted at rest

  • E2EE for direct chats using Olm/Megolm

    • group chats will be supported in the coming weeks
  • all indicators of presence are opt-in only (typing indicators, read receipts, etc)

  • customize themes and colors throughout the app

Please note there's still a lot of work to do and a lot of features missing that other clients have. It's not ready for everyday use.

Please let me know if you have any questions or would like to contribute!

Riot Web

Ryan told us:

This week we released 1.6.8, and the highlights include:

  • Upgraded to Electron 9 for desktop builds, which should fix various Linux tray icon issues

  • Jump to first unread message improved to handle reactions and other non-message events

  • Desktop now shows a file saved message when downloading a file

  • Cross-signing setup flows reworked to simplify choosing a security phrase or key

Fractal

Alexandre Franke announced:

The previous Fractal update was quite a while ago but we’ve kept busy.

There has been a lot of under the hood work that users won’t notice and which we won’t delve into. In addition to them, we have a few nice things:

  • Matrix API tokens are redacted in logs for better privacy when submitting bug reports.

  • A send button was added next the message entry. This is especially relevant for touch screens.

  • We are less noisy with typing notifications that we send out.

  • We support SOCKS proxies.

  • Notifications for non text messages have been tweaked.

  • We gained support for edited message display. They are replaced with the newer content and a little icon is shown next to them. Editing messages is not supported yet though.

2020-07-03-ZFc9l-Captured’écrande2020-07-0317-26-53.png

NovaChat July 3 update:

eric told us:

  • Added icons for each chat network to room list

  • Got Twitter DM bridge working again

  • Improved search bar UI

  • On-boarded 30 new users!

  • Launched (accidentally) on Hacker News

  • Fixed a ton of reliability bugs in the 7 bridges we support (changelog)

  • We are hiring (full-time or part-time) remote React developers to work on our (source available, still TBD on final license) Riot fork Send me a DM if interested.

2020-07-03-LUhRG-image.png

NovaChat has been getting good coverage lately, on Twitter and Hacker News.

RiotX published in the beta channel of the Riot-Android app

benoit announced:

RiotX is now published in the beta channel of the Riot-Android app: https://play.google.com/store/apps/details?id=im.vector.app. You can get the last beta version by becoming a tester if you want to. There will be no more update of RiotX on the PlayStore. Current RiotX users should signout from RiotX and signin again on Riot-Android. Riot-Android users do not have to do that. The changelog can be read here https://github.com/vector-im/riotX-android/releases/tag/v0.91.3-beta. And this week we are working on implementing what's remain on our list, and we are fixing as many bugs as we can before the great release.

Riot-iOS

steve offered:

This week, we made some improvements for the cross-signing UX.

We started to work on the rebranding. And we also made some small improvements in the display of some events in the timeline.

Dept of Ops 🛠

ma1sd release 2.4.0

ma1uta offered:

ma1sd release 2.4.0.

Changes:

  • Enabled v2 API by default.

  • Added experimental support of the database connection pooling for postgresql

  • Added option to bind ma1sd to specified address.

  • Added error logging for LDAP authorization.

  • Added full request and response logs for debug.

  • Avoid including bridged user in directory lookups (https://github.com/ma1uta/ma1sd/pull/45)

  • Add experimental multi-platform buillds for amd64 and arm64 platforms.

  • remove warning about matrix-synapse-ldap3 (https://github.com/ma1uta/ma1sd/pull/50)

Bugfixes:

Downloads:

matrix-docker-ansible-deploy

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

Slavi said:

it appears to be puppet week in matrix-docker-ansible-deploy-land!

Thanks to various contributors (Johanna Dorothea Reichmann, Tulir Asokan and Hugues Morisset), the playbook has gained support for 4 new bridges: mx-puppet-instagram (see our docs), mx-puppet-twitter (see our docs), mx-puppet-discord (see our docs) and mx-puppet-steam (see our docs).

This brings the total number of bridges supported by the playbook to 15!

Dept of Bots 🤖

matrix-reminder-bot v0.1.0

anoa offered:

The release, v0.1.0, of matrix-reminder-bot is out! 🎉

I've eliminated most of the bad bugs that were present, so will be doing some feature development for a bit. As of now, the features of the bot are:

  • Setting reminders

  • Have a reminder ping yourself or the whole room

  • Alarms which continue ringing until silenced

  • Support for end-to-end encrypted rooms

  • Postgres and SQLite support

  • Docker support

Find it here: https://github.com/anoadragon453/matrix-reminder-bot/ and join the discussion at #matrix-reminder-bot:matrix.org!

Enjoy! ❤️

IPFS Bot

MTRNord offered:

Did you ever have the issue that a media event sent from someone is too large for your HS and you don't want to fiddle with the link?

IPFS Bot might be a solution. Invite @ipfs:nordgedanken.dev or Check out https://github.com/MTRNord/matrix-ipfs-bot/ to use the bot.

If you reply to any media event with !ipfs the bot will send you a link to the media stored on ipfs.

Known issues are:

  • E2EE not yet working (It joins but can't yet decrypt the related event)

  • Error handling is basically not existent. Therefore crashes might happen until I sort this out.

  • It currently does very verbose logging. This will be removed when the bot is more stable

  • Images sent from RiotX sometimes seem to not play nice with ruma

(Demo for the IPFS Bot): https://ipfs.nordgedanken.dev/ipfs/QmSfde3V4QL1Lv96Ar62qgnhaEtyi9jzPkKRCBMh4Wqm6F?filename=2020-06-27_16-41-09.mp4

We could include this video here, but it seems me appropriate to link to an actual IPFS location.

cody, REPL for your Matrix chat rooms

carl offered:

Hello, I am announcing my first matrix bot - cody - that will evaluate code snippets in your Matrix rooms and return the result. Here is an example interaction:


user> !py "Hello world!"
cody> 'Hello world!'

user> !py list(range(10))
cody> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

You can chat with him @cody:bordum.dk and view the source code at https://gitlab.com/carlbordum/matrix-cody

This initial release only supports Python, but the plan is to add support for more languages in the next few weeks. The repo might also be of interest to some of you as it has CI, CD to DockerHub, complete dev environment with cody, pantalaimon, synapse and riot using docker-compose, simple metrics and Grafana-dashboards-as-code.

Dept of Interesting Projects 🛰️

Matrix Notepad Version v0.2.2

KB1RD told us:

A real-time collaboratie text editor using the Matrix protocol.

matrix-notepad.kb1rd.net

Nope, it's not dead.

  • New version of logootish-js with a completely new algorithm

    • In particular, I should note that this new algorithm is tested extensively, so I think the bugs should be out
  • Corresponding updates to internal event structure

  • Fixed UI & CSS bugs

  • Improved UX for room title editor

  • Currently, conflicting text will be displayed, but conflicts will not be indicated in any way

  • I almost forgot to mention: The room list is now filtered using the typed rooms MSC (event ID org.matrix.msc1840). #test-document0:kb1rd.net is a room with that state event set.

I also made a flame graph of the internal algorithm and I'm surprised by some of the results. The good thing is that I think there's quite a few ways to speed up the algorithm. Here it is:

https://logootish-js.matrix-notepad.kb1rd.net/flamegraph/test/listmodel-nc.perf.js/flamegraph.html#{%22merged%22:false,%22nodeId%22:null,%22excludeTypes%22:[%22cpp%22,%22regexp%22,%22v8%22,%22native%22,%22init%22,%22core%22]}

2020-07-03-SmuSp-image.png

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.space385
2talk.go7box.xyz502.5
3gottliebtfreitag.de524
4phys.ethz.ch552
5eisfunke.com997
6c.mau.dev1422
7halogen.city1613
8nzbr.de1722
9asra.gr1774
10utzutzutz.net1875

That's all I know 🏁

See you first thing tomorrow morning, and be sure to stop by #twim:matrix.org with your updates!