Element raises $30M to boost Matrix

2021-07-27 — General, News — Matthew Hodgson

Hi folks,

Big news today: Element, the startup founded by the team who created Matrix, just raised $30M of Series B funding in order to further accelerate Matrix development and improve Element, the flagship Matrix app. The round is led by our friends at Protocol Labs and Metaplanet, the fund established by Jaan Tallinn (co-founder of Skype and Kazaa). Both Protocol Labs and Metaplanet are spectacularly on board our decentralised communication quest, and you couldn't really ask for a better source of funding to help take Matrix to the next level. Thank you for believing in Matrix and leading Element's latest funding!

You can read all about it from the Element perspective over at the Element Blog, but suffice it to say that this is enormous news for the Matrix ecosystem as a whole. In addition to transforming the Element app, on the Matrix side this means that there is now concrete funding secured to:

Obviously this is in addition to all the normal business-as-usual work going on in terms of:

  • getting Spaces out of beta
  • adding Threading to Element (yes, it's finally happening!)
  • speeding up room joins over federation
  • creating 'sync v3' to lazy-load all content and make the API super-snappy
  • lots of little long-overdue fun bits and pieces (yes, custom emoji, we're looking at you).

If you're wondering whether Protocol Labs' investment means that we'll be seeing more overlap between IPFS and Matrix, then yes - where it makes tech sense to do so, we're hoping to work more closely together; for instance collaborating with the libp2p team on our P2P work (we still need to experiment properly with gossipsub!), or perhaps giving MSC2706 some attention. However, there are no plans to use cryptocurrency incentives in Matrix or Element any time soon.

So, exciting times ahead! We'd like to inordinately thank everyone who has supported Matrix over the years - especially our Patreon supporters, whose donations pay for all the matrix.org infrastructure while inspiring others to open their cheque books; the existing investors at Element (especially Notion and Automattic, who have come in again on this round); all the large scale Matrix deployments out there which are effectively turning Matrix into an industry (hello gematik!) - and everyone who has ever run a Matrix server, contributed code, used the spec to make their own Matrix-powered creation, or simply chatted on Matrix.

Needless to say, Matrix wouldn't exist without you: the protocol and network would have fizzled out long ago were it not for all the people supporting it (the matrix.org server can now see over 35.5M addressible users on the network!) - and meanwhile the ever-increasing energy of the community and the core team combines to keep the protocol advancing forwards faster than ever.

We will do everything we possibly can to succeed in creating the long-awaited secure communication layer of the open Web, and we look forward to large amounts of Element's new funding being directed directly into core Matrix development :)

thanks for flying Matrix,

Matthew, Amandine & the whole Matrix core team.

Dendrite 0.4.1 Released

2021-07-26 — Releases — Matthew Hodgson

It's only been two weeks since Dendrite 0.4 landed, but there's already a significant new release with Dendrite 0.4.1 (it's amazing how much work we can do on Dendrite when not off chasing low-bandwidth and P2P Matrix!)

This release further improves memory performance and radically improves state resolution performance (rumour has it that it's a 10x speed-up). Meanwhile, SS API sytest coverage is up to 91%(!!) and CS API is now at 63%.

We're going to try to keep the pressure up over the coming weeks - and once sytest is at 100% coverage (and we're not missing any big features which sytest doesn't cover yet) we'll be declaring a 1.0 :)

If you're running Dendrite, please upgrade. If not, perhaps this would be a good version to give it a try? You can get it, as always from, https://github.com/matrix-org/dendrite/releases/tag/v0.4.1. The changelog follows:

Features

  • Support for room version 7 has been added
  • Key notary support is now more complete, allowing Dendrite to be used as a notary server for looking up signing keys
  • State resolution v2 performance has been optimised further by caching the create event, power levels and join rules in memory instead of parsing them repeatedly
  • The media API now handles cases where the maximum file size is configured to be less than 0 for unlimited size
  • The initial_state in a /createRoom request is now respected when creating a room
  • Code paths for checking if servers are joined to rooms have been optimised significantly

Fixes

  • A bug resulting in cannot xref null state block with snapshot during the new state storage migration has been fixed
  • Invites are now retired correctly when rejecting an invite from a remote server which is no longer reachable
  • The DNS cache cache_lifetime option is now handled correctly (contributed by S7evinK)
  • Invalid events in a room join response are now dropped correctly, rather than failing the entire join
  • The prev_state of an event will no longer be populated incorrectly to the state of the current event
  • Receiving an invite to an unsupported room version will now correctly return the M_UNSUPPORTED_ROOM_VERSION error code instead of M_BAD_JSON (contributed by meenal06)

-- Team Dendrite

This Week in Matrix 2021-07-23

2021-07-23 — This Week in Matrix — Ben Parsons

Matrix Live 🎙

This week gematik announced they will use Matrix for their interoperable instant messaging standard.

Loads of coverage is available, take a look!

English

Dutch

German

Dept of Spec 📜

Spec

anoa offered:

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:

Spec Core Team

In terms of Spec Core Team MSC focus for this week,

Spec Updates

Room Version 8 has been proposed as part of MSC3289! This intends to include the new "restricted" room version from MSC3083, which allows access to a room based on one's membership in another room, as is most useful for features related to Spaces.

2021-07-23-kziJ3-stacked_area_chart.png

sorunome has been working on MSC2545:

Sorus Image Packs MSC2545 is taking shape more and more! While barely anything happened on the actual MSC itself, nheko recently implemented a sticker picker based on it, and there is a PR for fluffychat for a sticker picker, too, finally making stickers interoperable between clients of different vendors!

Here's a video of fluffychats sticker picker in action: https://gitlab.com/famedly/fluffychat/uploads/26382317e2424d7566eb18e102ddd6cb/fluffy-sticker-picker.webm

Dept of Servers 🏢

Synapse

callahad told us:

🚨 Yesterday we published Synapse 1.38.1 which mitigates a client bug trigged by changes to /sync responses in 1.38.0. Specifically, new Element Android sessions were unable to decrypt messages in end-to-end encrypted conversations.

⚙️ Otherwise, we've been doing quite a lot of internal / infrastructure work. Notably, we've completed the move from three separate CI systems to just one: GitHub Actions. We're also, for the first time, publishing Debian packages for our Release Candidates. We hope these changes move us towards a more reliable and seamless release process.

We'll have a lot to talk about re: Synapse 1.39 next week, but until then, enjoy the weekend! 🏖

Homeserver Deployment 📥️

Kubernetes

Ananace announced:

And this week too has brought updates to my Helm Charts, with element-web being updated to 1.7.33 and matrix-synapse to 1.38.1

Dept of Bridges 🌉

matrix-puppeteer-line

Fair told us:

A bridge for LINE Messenger based on running LINE's Chrome extension in Puppeteer.


This week brings plenty of usability improvements:

  • There is now the list-contacts bot command to--you guessed it!--list the Matrix puppets of all of your contacts.

  • It's now possible to sync a chat with a LINE user by inviting their Matrix puppet to a DM, instead of having to wait for someone to send you a message in LINE for the bridge to auto-sync it. This is especially useful with list-contacts.

  • LINE group chats that haven't been used recently are now included in the set of chats that get bridged on a sync operation.

  • The number of chats to sync at startup time & on-demand is now configurable, as a bridge config setting & a parameter to the sync command, respectively.

These changes make it possible to sync LINE chats/groups that previously may not have gotten synced, due to the intricacies of how LINE on Chrome handles chat history (especially on first use of the bridge).


Discussion: #matrix-puppeteer-line:miscworks.net

Issue page: https://src.miscworks.net/fair/matrix-puppeteer-line/issues

Dept of Clients 📱

Nheko

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

Nico (@deepbluev7:neko.dev) told us:

LorenDB has rewritten the invite dialog as well as the memberlist in Qml. This means they work now much more reliably and show the users in appropriate colors and a few other small improvements.

Apart from that, Nheko now has support for sending stickers! This is based on Sorunome's awesome MSC2545, so no integration manager is needed and it is trivially easy to share your sticker packs (just invite someone into the same room!). You can use stickers from your account data or upload stickers into a room so every room member can use it. If you found a sticker pack you like, you can enable a pack from a room globally by going into Nheko's room settings. You can check my current preferred set of stickers here: matrix:r/nico's-stickers:neko.dev

Currently you can't edit a sticker pack yet from Nheko. Support for that will come in the near future. Until then you can use either FluffyChat, Element's DevTools or my hack to import Telegram sticker packs into a room. Note that Nheko's sticker pack support is incompatible with integration server based sticker packs like the one Element uses. On the other hand, you don't need an integration manager to use them! Custom emote support based in the image packs MSC is coming in the future to Nheko too.

Furthermore we fixed some bugs to move E2EE in Nheko out of Beta. We are close now and we have a plan!

That's all, don't get your hands too sticky!

2021-07-23-gg3Eo-clipboard.png

2021-07-23-xHW8i-clipboard.png

Fractal

Alexandre Franke announced:

It’s been three weeks already since our last update and we have a fair amount of new things to report.

As I write this, our interns Alejandro and Kai are at GUADEC, the annual GNOME conference, presenting during the interns lightning talk. The former has submitted a couple of merge requests (!793 and !794) that were necessary for the UI to accomodate his upcoming multi-account work. The latter has provided a view for when no room is selected. As for their mentor, Julian, he changed member loading so it only happens once a room is opened, to improve performances. He also changed Matrix event handling to use SyncRoomEvent, which paves the way for display of various message types in the timeline of a room.

Giuseppe offered two nice additions to the login view:

And to conclude this summary, we welcome 🎉 newcomer Veli Tasalı who fixed a papercut I reported: when typing long messages, buttons next to the message entry were expanding along with the entry and now they keep nicely aligned.

Element Clients

Delight team

  • We’ve been shepherding MSC3083 into FCP to improve private spaces
  • We’ve also been working on restricted room support in Synapse and Element Web & Android
  • We’ve been improving onboarding experiences for Spaces, improving 3pid invites on Android, improving email invites and making matrix.to aware of spaces
  • On iOS, we’ve finished the first implementation of Space navigation which we can share soon!
  • We’re also figuring out what’s missing to mature Spaces enough to exit beta

VoIP

  • Call event tiles for 1:1 calls merged, for better summaries of call history.
  • 1:1 screen sharing ready to merge!
  • Looking at bug where jitsi calls stay always-on-screen even when hung up.

Web

  • Released v1.7.33
  • Message bubbles PR merged!
  • Updated desktop to electron 13, complete with new n-api build of seshat (thanks, Poljar!)
  • More work on changelog tooling

iOS

  • We cancelled the release of 1.4.6 because of the discovery of high profile bugs or crashes . We will release 1.4.7 on the App Store on Monday. Those releases contain mainly bug fixes and papercuts
  • Voice messages are almost there. They are on develop under a LABS settings. They should be part of the next release candidate next Wednesday.
  • There are several papercuts in progress: URL preview, decryption of notifications content by default, removal of local contacts from the DM room list tab, removal of the room directory from the group room list, etc to list the major ones.

Android

  • Release 1.1.14 which fixes an important issue regarding message decryption is live on the PlayStore, on the beta channel, and will be in production quite soon. A patch has been applied to matrix.org to fix the problem.
  • Beside that, we are still polishing the spaces and voice messages

Šimon Brandner shared some images of the new VoIP UX:

2021-07-23-m-Auj-125999362-eff54798-f9f7-421a-8e2b-6ed87a4f582c.png

2021-07-23-XEixh-120305328-e7a0e700-c2d0-11eb-9bc0-a93f4366b848.png

Naturally the screen sharing feature will allow you to share your own screen, rather than Šimon's!

Beeper update

Tulir said:

Desktop

  • New keyboard shortcuts:

    • Navigating room list with arrow keys when there's no room open (and esc to close the current room)
    • Global shortcut to open Beeper
  • Rooms are opened where you left off (like Telegram, WhatsApp, etc) instead of at the bottom

  • Updated unread room indicators: a colored circle around the room avatar (screenshot here)

Bridges

LinkedIn

We've integrated the LinkedIn bridge into Beeper. The bridge is in beta and is generally ready for use. Since the last update, we moved it to GitLab, added a Docker image, and implemented reaction and redaction handling in both directions! We also fixed a bunch of bugs across the board to improve reliability.

Android SMS

The Android SMS bridge mentioned in the last update is progressing. It should be ready for self-hosted use in a few weeks, so our next update will probably include that.

Related to the SMS bridge, I've made mautrix-syncproxy, which is a microservice to do the /syncing required for end-to-bridge encryption (to-device events and such) in the cloud and forwarding the data to the normal appservice transaction endpoint. When combined with mautrix-wsproxy, it allows the SMS bridge to only have a websocket connection, which uses significantly less battery than a HTTP request every 30 seconds. The sync proxy partially implements MSC3202 and the to-device part of MSC2409 (partially because it only does individual users rather than all appservice-owned users).

We're hiring React, iOS, Android and SRE/Devops engineers. If you're interested, check out https://jobs.ashbyhq.com/beeper or DM Eric Migicovsky.

2021-07-23-Nbx_w-image.png

Dept of SDKs and Frameworks 🧰

Ruby

Ananace told us:

Just tagged and pushed version 2.4.0 of the Ruby SDK, along with an updated image for the example bot. This version adds support for the Matrix URIs as well as some basic spaces functionality, it also fixes some errors due to the removed empty /sync fields in Synapse 1.38.0

Feel free to drop by #ruby-matrix-sdk:kittenface.studio for any questions or comments.

Dept of Bots 🤖

Hebbot (This Week in X bot)

Felix told us:

Several GNOME contributors and I have been following TWIM and really enjoyed the concept. Since open source is about stealing sharing ideas, we wanted to deploy something similar for GNOME.

I gave this room's beloved twim-o-matic a try and fiddled a bit with the code. But I soon found that it is too specialised for matrix.org. That's when I decided to write a project agnostic TWIx bot based on matrix-rust-sdk called Hebbot!

Here is how it looks in practice with a companion website for GNOME. If you’re interested in how it looks behind the scenes, have a look at this blog post which explains how it works.

I released a first version on July 17, but I’m already working on making it smarter for a next release. In the meantime you can already use it for your project!

Love it, though I wish twim-o-matic had more of my attention! Maybe we can retire it and use Hebbot..?

Dept of Interesting Projects 🛰️

Matrix Plugin for OctoPrint

Cadair offered:

This week I have developed a new plugin for OctoPrint which is a tool for controlling and monitoring 3D printers, which sends notifications about your prints and status of your 3D printer to matrix. The existing OctoSlack plugin also has Matrix support but fell foul of the /sync response changes in Synapse 1.38, and also sent the images from the camera to Matrix as inline images rather than m.image events, so they didn't render on some clients.

My new plugin can send messages on most events supported by OctoPrint, but the core events which are configurable through the OctoPrint web UI are print started, paused, completed and failed as well as print progress notifications. If you want Matrix notifications for your 3D prints, you can install the plugin through the official OctoPrint plugin repository or by installing from the GitHub repository. If you have any feature requests or pull requests, contributions to the plugin are very welcome.

Here is a preview of a print progress notification from something I was printing last night:

2021-07-23-opi2f-IMG_20210723_124408.jpg

2021-07-23-fZf-n-matrix_logo_print_status.png

Matrix in the News 📰

Matrix & IRC | Size & Stability

Gwmngilfen said:

Following on from my post about how I'd like to convince Ansible to move to Matrix, I looked into the relative sizes of the networks, took a look at the active users in our channels, and even took a shot quantifying bridge restarts and netsplits to assess relative stability. Check it out here

New Public Rooms 🏟️

Beyond Chat

Ryan reported:

A new Beyond Chat room (#beyond-chat:matrix.org) has been created! This room is meant for discussing various projects that build on Matrix for use cases beyond chat, such as collaborative documents, blogs, generic key-value databases, tools for thought, etc. Please join if these topics interest you. 😄

The Beyond Chat chat room is where Ryan chats about uses of Matrix beyond chat

Dept of Welcomes 👐

VoIP

Robert Long announced:

Hey everyone, my name's Robert Long. I've just joined Element last week and I'm coming in to work on the VoIP team. This week I started working on full mesh video conferencing and I'm super excited to share more as the work progresses!

Welcome Robert! Can't wait to see progress here. We'll even bring back the Dept of VoIP :D

Final Thoughts 💭

Room of the week

timokoesters offered:

Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?

This is why I want to share rooms (or spaces) I find interesting.


This week's room is: #godot:feneas.org

"A very helpful and friendly place for general discussion or questions pertaining to the FOSS Godot game engine and using it to make games, whether one is just beginning to learn or wish to discuss more advanced aspects of game (or Godot) development."


If you want to suggest a room for this section, tell me in #roomoftheweek:fachschaften.org

Royal Navy using 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
1envs.net358
2maunium.net432
3sorunome.de461.5
4kapsi.fi547
5boba.best566.5
6trolla.us767.5
7heitkoetter.net952.5
8aria-net.org1035
9konqi.work1186
10roeckx.be1696

#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
1conduit.supercable.onl173
2dendrite.nordgedanken.dev184
3matrix.org322
4dendrite.neilalexander.dev398.5
5conduit.rs1451.5

That's all I know 🏁

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

Germany’s national healthcare system adopts Matrix!

2021-07-21 — General, News — Matthew Hodgson

Hi folks,

We’re incredibly excited to officially announce that the national agency for the digitalisation of the healthcare system in Germany (gematik) has selected Matrix as the open standard on which to base all its interoperable instant messaging standard - the TI-Messenger.

gematik has released a concept paper that explains the initiative in full.

TL;DR

With the TI-Messenger, gematik is creating a nationwide decentralised private communication network - based on Matrix - to support potentially more than 150,000 healthcare organisations within Germany’s national healthcare system. It will provide end-to-end encrypted VoIP/Video and messaging for the whole healthcare system, as well as the ability to share healthcare based data, images and files.

Initially every healthcare provider (HCP) with an HBA (HPC ID card) will be able to choose their own TI-Messenger provider. The homesever for HCP accounts will be hosted by the provider’s datacentre. The homeserver for institutions can be hosted by TI-Messenger providers, or on-premise.

Each organisation and individual will therefore retain complete ownership and control of their communication data - while being able to share it securely within the healthcare system with end-to-end encryption by default. All servers in the Matrix-based private federation will be hosted within Germany.

Needless to say, security is key when underpinning the entire nation’s healthcare infrastructure and safeguarding sensitive patient data. As such, the entire implementation will be accredited by BSI (Federal Office for Information Security) and BfDI (Federal Commissioner for Data Protection and Freedom of Information).

The full context...

Germany’s digital care modernisation law (“Digitale Versorgung und Pflege Modernisierungs Gesetz” or DVPMG), which came into force in June 2021, spells out the need for an instant messaging solution.

The urgency has increased by a significant rise in the use of instant messaging and video conferencing within the healthcare system - for instance, the amount of medical practices using messenger services doubled in 2020 compared to 2018 (much of this using insecure messaging solutions).

gematik, majority-owned by Germany’s Federal Ministry of Health, is responsible for the standardised digital transformation of Germany’s healthcare sector. It focuses on improving efficiency and introducing new ways of working by setting, testing and certifying healthcare technology including electronic health cards, electronic patient records and e-prescriptions.

TI-Messenger is gematik’s technical specification for an interoperable secure instant messaging standard. The healthcare industry will be able to build a wide range of apps based on TI-Messenger specifications knowing that, being built on Matrix, all those apps will interoperate.

More than 150,000 organisations - ranging from local doctors to clinics, hospitals, and insurance companies - can potentially standardise on instant messaging thanks to gematik’s TI-Messenger initiative.

The road to interoperability

By 1 October 2021, TI-Messenger will initially specify how communication should work in practice between healthcare professionals (HCPs). Physicians will be able to find and communicate with each other via TI-Messenger approved apps - specifications include secure authentication mechanisms with electronic health professional cards (eHBAs), electronic institution cards (SMC-B) and a central FHIR directory. The first compliant apps for HCPs are expected to be licensed by Q2 2022.

Eric Grey (product manager for TI-Messenger at gematik), reckons there will initially be around 10-15 TI-Messenger compliant Matrix-based apps for HCP communications available from different vendors.

Healthcare professionals will be able to choose a TI-Messenger provider, who will be hosting their personal accounts and provide the messenger-client.

Healthcare organisations will choose a TI-Messenger provider to build the dedicated homeserver infrastructure (on prem or in a data center), provide the client and ongoing support.

What does this mean for the Matrix community?

Matrix is already integral to huge parts of the public sector; from the French government’s Tchap platform, to Bundeswehr’s use of BwMessenger and adoption by universities and schools across Europe.

Germany’s healthcare system standardising on Matrix takes this to entirely the next level - and we can’t wait to see the rest of Europe (and the world!) converge on Matrix for healthcare!

We'll have more info about TI-Messenger on this week's Matrix Live, out on Friday - stay tuned!

This Week in Matrix 2021-07-16

2021-07-16 — This Week in Matrix — Ben Parsons

Matrix Live 🎙

Dept of Spec 📜

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

MSC Status

New MSCs:

MSCs with proposed Final Comment Period:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Closed MSCs:

Spec Updates

Several members of the Spec Core Team reviewed MSC2674 (Event relationships) this week in order to help push along the efforts to finally ship aggregations in the spec. Otherwise MSC3245 (voice messages via extensible events) is moving along with final comment period proposed this week. The implementation in Element Web in reportedly working well, helping to prove the spec in practice. And finally, MSC3277 (scheduled messages) which appeared over the weekend to try and allow for scheduling events to send later in Matrix (and all the fun edge cases that come with it).

Thanks to everyone who submitted, read and reviewed MSCs this week. It takes people to move this stuff forward!

2021-07-16-9h_yU-stacked_area_chart.png

Dept of GSoC 🎓️

Google Summer of Code 2021: first evaluations complete!

We heard from Callum last week, and will have more reports in future, but for now just know that all seven GSoC projects are progressing well. To remind yourself ot this year's projects, see the list provided by Google or our welcome blog post.

Alexandre Franke added:

I reckon you can count the two Fractal interns as well. :)

Reckon you're right pardner! We'll look forward to a roundup of the work done for Fractal too.

Dept of Servers 🏢

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander told us:

In case you missed it, we released Dendrite 0.4.0 on Monday and wrote a blog post about it! It's taken us a little while to get to this release, but it includes a number of quality-of-life improvements and changes that will significantly reduce the amount of resources needed to run a Dendrite server. The full changelog is available on GitHub and many juicy details in the aforementioned blog post, but at a high level this release includes:

  • All-new state storage, designed to reduce the amount of disk space that the roomserver takes up to store room state by aggressively deduplicating state blocks and snapshots

  • Improved appservice support, with a number of bridges now working with Dendrite

  • Shared secret registration (using the same API shape as Synapse)

  • Optimisations in the federation API /send and /get_missing_events endpoints to reduce memory usage

  • Improved state resolution v2 performance when dealing with power level events

  • Per-room queuing to reduce head-of-line blocking on the roomserver input API

  • Lots of bug fixes around invites, registration, sync and media, and 5 panics fixed

Since the release, we've been working on:

  • Completing key notary support

  • Fixing state_default for power levels in gomatrixserverlib

  • Resolving some issues around rejecting invites, particularly when the remote server is not available

  • Reducing the cost of checking if the local server is in a given room

Since our last update, our Sytest compliance numbers have been on the rise again, taking us ever closer to our goals:

  • Client-server APIs: 61%, up from 60% last time

  • Server-server APIs: 92%, up from 80% last time

  • Appservice APIs: 52%

As always, please feel free to join us in #dendrite:matrix.org for general Dendrite chat, and #dendrite-dev:matrix.org if you are interested in contributing!

Synapse

callahad told us:

The big news of the week is the release of Synapse 1.38, which converts several integer columns to bigint, allowing Synapse to process more than 2 billion (231) events. Which, incidentally, matrix.org did last week 📈:

2021-07-16-N2mUM-synapse-event-bigint.png

But that's not the only thing new in Synapse 1.38. We also landed the ability to set an expiry time on cache entries, allowing you to reclaim memory from infrequently accessed caches. Configuring this to "1h" on matrix.org has already yielded a noticeable reduction in overall memory use 📉:

2021-07-16-3j8uF-synapse-1.38-cache-expiry.png

We'd encourage you to read the full announcement for more — See you next week 👋!

Registration management for Token Authenticated Registration

callum told us:

Another short update about my GSoC project, this time about the Synapse admin API for managing tokens. https://calcuode.com/matrix-gsoc/2021-07-16_admin-api.html

See also Matrix Live with Callum last week.

Homeserver Deployment 📥️

Kubernetes

Ananace said:

This week too brings updates to my Helm Charts, with Synapse having been updated to 1.38.0.

Dept of Bridges 🌉

matrix-puppeteer-line

Fair said:

A bridge for LINE Messenger based on running LINE's Chrome extension in Puppeteer.

Docker is now supported, via Dockerfiles that actually work now! But for the time being, Docker images must be built manually, as I am yet to deploy a Docker registry for prebuilt images.

Also, sample systemd service unit configuration files are now available, courtesy of @lecris:lecris.me 🙂

For more info on all of this, see SETUP.md.

What I'm working on next is a bot command to list all of your LINE contacts & groups (similar to mautrix-whatsapp's list <contacts|groups>), and the ability to sync a LINE DM by inviting a contact to a Matrix DM. This will allow messaging LINE contacts that the bridge didn't yet create a portal for.

And please, feel free to try out this bridge! It should be serviceable for day-to-day usage now. I still won't be able to host a public instance of it for a while, though (as it is fairly hefty due to having to run Chrome), so you'll have to self-host if you want to try it.

Discussion: #matrix-puppeteer-line:miscworks.net

Issue page: https://src.miscworks.net/fair/matrix-puppeteer-line/issues

Dept of Clients 📱

Nheko

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

Nico (@deepbluev7:neko.dev) told us:

This week we fixed bugs. Switching room should now be quite a bit faster again and once Qt 6.3 is released with some important bugfixes, scrolling in Nheko should be super smooth. (We can't enable that flag yet, because of 3 bugs in the item pooling code in Qt.)

Other bugfixes:

  • Inline images sometimes wouldn't show, but now inline emotes and images should render once they are loaded! (This took me a year to figure out)

  • You can now send edits in encryted rooms again, if they are a reply to an event.

  • No more reply fallback in the room list.

  • At some point timed out verification requests started showing up on startup. That regression is fixed now.

  • Fix rooms not showing up after login because we were off by one.

  • Fix some cases where the loading spinner wouldn't stop animating and as such consistently use CPU, when a room is open.

  • Cache db transactions to reduce allocations and memory zeroing when loading a room or scrolling.

  • Fix some edge cases in the blurhash decoding, that could lead to brownish image previews.

  • Fix accepting an invite not placing you in the joined room.

Element Clients

With updates supplied by the teams

Delight team

  • We’ve been shepherding through MSCs to improve private spaces, namely MSC3083 (Restricting room membership based on space membership)
  • Meanwhile, we’re also implementing outstanding polish, planning steps for Spaces to exit beta

Web

  • v1.7.33-rc.1 now up for testing on https://staging.element.io/ with support for blurhash, draggable picture-in-picture view for calls
  • Contributing to element web? There are new labels and magic keywords for pull requests to show better information in the changelogs. See the contributor guide for more detail.
  • Do you use the master branch of element web or any of the web projects? Please let us know - it may go away soon.

Android

  • Still polishing the voice message feature: add support for Android 5, improve timeline rendering, improve animation in the composer, support for RTL language
  • Work on the account notification settings

Hydrogen

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

Bruno said:

Still working on getting a big update out today with rendering of formatted messages and a brand new member list in the right panel!

Dept of SDKs and Frameworks 🧰

PyQuotient

Aksem told us:

First news about Python bindings for libQuotient, C++ Qt-based Matrix SDK

After a month of hard work, we(I as GSoC student and kitsune as mentor) have bindings with tests for almost all core classes and also initial version of the demo client, in which you can log in with a password or SSO, the server you enter is resolved automatically and also after successful login data is being synchronized. There is also a possibility to log out. So this part is on the same level as in Quotient.

Also, a small video with the client in action.

Dept of Events and Talks 🗣️

Hack'n'Sun, the partially-Matrix-based summer tinkering camp

Nik offered:

Over the first weeks of July, Teckids e.V. held their annual summer camp for kids between 9 and 15 years. This year, after we started introducing Matrix and Element as a chat platform from September 2020 onwards, the camp was heavily relying on the platform for various parts.

Before the camp started, we invited all 90 participants to a chat room to get together, share a bit about what they expect, already did with coding and technical stuff, talk about what food they'd like to have for the barbecue, and stuff like that. Many of them engaged in the discussion, and started exploring Element (before you ask, yes, we hat a lot of snow and party poppers 😛!). Some got really excited that they could even change or add features to Element, or ask for such changes – we had to promise to hold a session where we find out how to add one new animation to Element. Unfortunately, Element is developed on GitHub, so the potential young contributors are locked out by the exclusive Terms of Use there. We are trying to reach out to Element HQ to find a solution.

During the camp, verifying crypto sessions using emojis again made for a good party game to get to know each other (like, find the kid a nickname belongs to on the camp site, start verificaiton, and compare emojis – a lot of fun that we, again, did not even have to start, because someone always finds out about it and asks what it is about).

Now that everyone got to know Matrix for chatting, in one of our workshops, the participants discovered that not only people, but also devices can send messages, and react to replies – in that workshop, the kids built a chat-ops IoT door beel (for their tent on site, or room at home). They soldered a circuit board to fit an ESP (MicroPython) micro controller on, and coded a small program (using templates with differing complexity levels), defining what the door bell should send when a button is pressed, on what messages to react, and the like. We produced a fun video about the project (German audio, English subtitles): https://eduvid.org/videos/watch/20a50c25-ecb4-48c0-9b13-de2548f290d4?subtitle=en . The (minimal and somewhat buggy) MicroPython client library is published as µtrix.

Now, sadly, the event is over, and we slowly see (as expected, only a part of the) participants moving over to our long-term project chatrooms; we will start clearing the virtual camp site chatroom during the weekend to make room for a new group.

Asked about the regularity of these events, Nik replied:

We are still experimenting with our new camp formats. As bad as it all is, COVID caused a lot of innovation here because we were forced to leave the known roads we normally travelled, and now we are starting to integrate all that new stuff (like really embracing Matrix) into outdoor and presence events. I think we are on a really good way with it, and surely I will keep posting updates that might be of interest for the greater community.

Dept of Interesting Projects 🛰️

Cactus Comments 🌵

carl announced:

Cactus Comments is a federated comment system for the open web built on Matrix.

This week, I'm reporting the changes to our backend service since it last appeared on

  • Feature: Restrict which users can interact with cactusbot (contributed by Karmanyaah Malhotra in MR !3).

  • Feature: Include comment section id in room name.

  • Bugfix: Malformed events no longer cause a crash loop.

  • Bugfix: Users can no longer register a site without a name.

  • Hotfix: Mitigated timeouts under heavy load with a temporary LRU cache.

  • Internal: Pin sub-dependencies.

  • Internal: Heavy linting in CI.

All these changes are available from version 0.5.0.

Demo: https://cactus.chat/demo

Matrix room: #cactus:cactus.chat

Introductory blog post: https://cactus.chat/blog/hello-cactus-comments/

Source code: https://gitlab.com/cactus-comments

Dept of Guides 🧭

New business-oriented guide to using Matrix and Element

The Reidel Law Firm from Galveston, Texas have produced an excellent business-oriented guide to using Matrix and Element. As they announced in a blog post last month:

Reidel Law Firm remains committed to providing top notch legal services in Franchise Law, International Trade Law, and Business Law while maintaining accessibility, (one of our Firm’s core values) to our clients, colleagues, and friends of the firm. Utilizing our own secured chat platform allows us to be in communication with our clients around the world while maintaining the utmost in data security and client privacy.

Schuyler "Rocky" Reidel added:

I believe in Matrix+Element and encourage my clients and law firms to get ahead of the curve or get left behind and become irrelevant. Email has to die, its just the worst. Also, I forgot to note earlier that the guide is copyright free. I hope other business owners will use and revise it for their own uses.

Strong words! You can find the guide from Reidel on their website.

Final Thoughts 💭

Room of the week

timokoesters told us:

Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?

This is why I want to share rooms (or spaces) I find interesting.


This week's room is: #formula1:matrix.org

"The pinnacle of motorsport! We're in an exciting time in Formula 1 with a close championship and exciting battles. Come hang out and chat about the upcoming race in Silverstone on July 18th!"


If you want to suggest a room for this section, tell me in #roomoftheweek:fachschaften.org

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
1envs.net517
2kif.rocks552
3maunium.net652
4synapse.clippyco.com677.5
5maescool.be697
6utzutzutz.net788
7kapsi.fi789
8liberta.casa831.5
9trolla.us855
10nordgedanken.dev1106

#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
1dendrite.nordgedanken.dev89
2construct.supercable.onl197
3pc.koesters.xyz:6167217.5
4conduit.rs566
5dendrite.neilalexander.dev729
6dendrite.s3cr3t.me856
7dendrite01.fiksel.info872.5

That's all I know 🏁

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

Synapse 1.38.0 released

2021-07-13 — Releases — Dan Callahan

Synapse 1.38.0 is out now!

NOTE: We released Synapse 1.38.1 on Thursday, July 22nd. It mitigates a client bug with Synapse 1.38.0's smaller sync responses which prevented new Element Android sessions from successfully participating in encrypted conversations. Server administrators are strongly encouraged to upgrade.

(Big) Integers

Synapse's database schema used integer columns in a few places where values could potentially overflow a maximum value of 231. One such column is events.stream_ordering, which surpassed 231 on matrix.org last week.

To prevent overflows, Synapse 1.38 will automatically convert several integer columns to bigint as a background update. While homeservers will function normally during this task, it could result in increased disk I/O for several hours or days. Note that homeservers may need several gigabytes of free space to successfully rebuild associated database indexes and complete the upgrade.

See the upgrade notes for more details.

Expiring Caches

Synapse has a new configuration option, caches.expiry_time, which can be set to enable evicting items from caches if they go too long without being accessed. This helps servers reclaim memory used by large yet infrequently used caches.

Smaller Sync Responses

The response to /sync now omits optional keys when they would otherwise be empty. This can significantly reduce the size of incremental syncs, as demonstrated in #6579. Thanks to deepbluev7 for initially submitting this in #9919, which made it into this release via #10214.

Everything Else

A few other items worth calling out:

  • This release includes an experimental implementation of MSC2918: Refresh tokens, which adds initial support for complementary access / refresh tokens in line with OAuth best practices (#9450).
  • Synapse now ships a script to review recently registered accounts, which can be useful in cleaning up servers in the wake of malicious, automated registrations like we witnessed during last month's spam attack.
  • We've also fixed a few rough edges (#10263, #10303, #10336) in the spam mitigations from 1.37.1, and would encourage you to update.
  • The Admin API for querying user information now includes information about a user's SSO identities in its response.

These are just the highlights; please see the Upgrade Notes and Release Notes for a complete list of changes in this release.

Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including deepbluev7, dklimpel, fkr, and sideshowbarker

NextPage 2