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!