This Week in Matrix 2021-04-30

2021-04-30 — This Week in Matrix — Ben Parsons

Matrix Live 🎙

Matthew presents the MSC process! Get slides here.

Dept of Status of Matrix 🌡️

Oda Nobunaga said:

The German IT platform Heise has conducted an interview with the university of Innsbruck which chose Matrix/Element over Microsoft Teams. Reasons: it's free, decentralized/federated, expandable and secure.

https://www.heise.de/news/Zusammenarbeit-MS-Teams-als-Lockangebot-in-eine-geschlossene-Microsoft-Umgebung-6030514.html

"free, decentralized/federated, expandable and secure" sounds like a great set of reasons!

Heise article, naturally, is in German. Element have some content in English discussing the deployment, and how well-suited Matrix is for univerities. Finally, the best kind of feedback: an Innsbruck professor cheers the utility of federation:

Famedly Fellows on Linux Lounge

Nico offered:

Btw if anyone wanted to hear Krille and me live, we are live at the linux lounge now. It's in GERMAN! https://theradio.cc/blog/category/shownotes/linuxlounge/

Exciting! Possibly. For the lucky few who can understand it anyway!

Lazalatin added:

If anyone did miss the opportunity to listen to the live stream: Here you can find the recording, with show notes, as well: https://rec.theradio.cc/item/ll244/
We were happy to have Krille and Nico with us. 🥳
(website in german as well as the stream recording)

:D

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

MSC Status

New MSCs:

  • There were no new MSCs created this week.

MSCs with proposed Final Comment Period:

  • No MSCs entered proposed FCP state this week.

MSCs in Final Comment Period:

Merged MSCs:

Abandoned MSCs:

Spec Updates

We've opened up a new room for MSC authors to come and ask about the MSC process, as well as for review and feedback on their MSC ideas over at #sct-office:matrix.org. If you're unsure what the next steps for your MSC are, or aren't sure whether an idea would make sense for inclusion in the Matrix Specification, then this room is the perfect place to ask about it. Come on by!

In terms of MSC work, Spaces remains one of the most active topics in the spec this week, with MSC1772 finally reaching Final Comment Period! A lot of work went into writing and reviewing the MSC, as well as crafting the implementation - so congratulations to everyone involved! Of course, any concerns can still be raised over the next 5 days by anyone before the proposal is ultimately merged to the spec.

There are a number of changes being merged to the spec as we move swiftly towards the next major Spec release. Those that have merged this week are:

Otherwise there's been a smattering of discussion and updates on various MSCs, such as MSC2730 (verifiable forwarded events), MSC2249 (requiring a user to be able to see an event to report it) and MSC2516 (voice messages).

Thanks for reading!

Also - knocking is now published to the unstable spec, check it out at: https://spec.matrix.org/unstable/client-server-api/#knocking-on-rooms

2021-04-30-iLQCH-stacked_area_chart.png

Dept of P2P 👥

P2P Matrix

Neil Alexander announced:

We've just released the first public P2P Matrix demo using the experimental Pinecone protocol. There are builds available for Android right now and iOS is following shortly via Testflight as soon as it passes Apple's beta review:

If you enable the static peer in the peer-to-peer settings, you can join us in the #beachparty:3bf0258d23c60952639cc4c69c71d1508a7d43a0475d9000ff900a1848411ec7 room!

The demo will attempt to connect to other devices using Bluetooth Low Energy, even if internet connectivity isn't available. Local connectivity over Wi-Fi is also supported. It's still very rough around the edges and there are lots of bugs, but feel free to give it a go!

Join #p2p:matrix.org for more chat and to provide feedback!

Dept of Servers 🏢

Conduit

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

timokoesters said:

  • Feature: Implement /devices

  • Feature: Send invites over federation

  • Improvement: Verify signatures for incoming requests

  • Improvement: Room directory now loads a lot faster

  • Fix: Retrying transactions works correctly now

We managed to work on a few features the last two weeks, but there are some very annoying issues with major Matrix clients:

Synapse

Synapse is a popular homeserver written in Python.

callahad said:

We expect to release 1.33 on Tuesday; more on that next week. But generally speaking, much of our development focus has been on profiling the memory usage of small homeservers joining large, highly-federated rooms for the first time. For example, we see a graph like this when joining Matrix HQ:

2021-04-30-akzM5-Screenshotfrom2021-04-2918-33-43.png

At a first pass, we're aiming to significantly reduce the initial spikiness of that graph, and we think #9910 will help with the subsequent slow ramp up in memory.

We've also been discussing how to balance our relatively rapid release cadence with managing low severity security issues. If you have any thoughts, preferences, or relevant experiences to share, please comment here!

Dept of Bridges 🌉

Heisenbridge announced

hifi said:

Announcing a new bouncer style Matrix IRC bridge to bridge the gap between IRC and Matrix in a way that's easy to configure and manage by homeserver administrators for small scale deployment.

Meet Heisenbridge https://github.com/hifi/heisenbridge 🥳 (it's a Breaking Bad reference 🤦)

It's written in Python and started off as an experiment if it's possible to create a somewhat well performing stateless IRC bridge that's practically almost zero configuration. It quickly found a use case of being able to join !channels on IRCnet that hasn't been possible in the past.

Intended target audience are people who run their own homeserver and would like to transition from a combination like ssh+irssi to pure Matrix (with weechat-matrix, of course!) but still keep IRC close without losing the "fine details" of the protocol that happens when plumbing a room properly.

As the bridge is written by someone who doesn't really know Python help is much appreciated in the form of filing issues, sending pull requests or just discussing about it on Matrix to tell how you would like to use it!

Development and support in #heisenbridge:vi.fi

Thanks!

matrix-puppeteer-line updated

Fair offered:

matrix-puppeteer-line: A bridge for LINE Messenger based on running LINE's Chrome extension in Puppeteer.

Updates:

  • Inbound read receipts! But with a view caveats:

    • Receipts are only fetched for the "most recently active" room.

      • Example: if you send a message in room A, then room B, receipts will only be fetched for room B and not room A, until you (or someone else, from LINE) posts in room A.

      • This will be fixed in the next update. I have an idea for some Puppeteer trickery to get it working.

    • Read receipts in group chats are bridged as annotations (reactions) instead of "real" read receipts, until all members of the chat have read a message.

      • This is because LINE's read receipts for group chats don't tell show who read a message, but only how many people a message was read by.
      • To capture this in Matrix, instead of sending read receipts for a group chat message, the bridge puts a reaction of "Read by #" on it, with "#" matching how many people read the message so far. Once everyone in the chat has read a message, the reaction is removed and a "real" receipt is sent for all users.
  • Internal changes to message syncing that should hopefully make inbound messages more reliable, or the very least improve code maintenance.

Discussion:

#matrix-puppeteer-line:miscworks.net

Dept of Clients 📱

Nheko

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

Nico (@deepbluev7:neko.dev) offered:

Hey there, it is your friendly neighborhood cat client! Pardon, chat client!

Jedi18 implemented forwarding of messages. Just select a message and press Alt-F or use the context menu to send a message to the room you select in the popup! This encrypts and decrypts messages and media appropriately, but be aware that sending an encrypted file to an unencrypted room uploads the file unencrypted. (In all other cases the media is not uploaded again.)

Furthermore matrix.to links are now rewritten to matrix:-URIs internally. This means joining rooms and such should now work the same across both of them. It also makes navigation to events work now and even has a shiny highlight effect now! You can also create links to events now from the context menu. These are generated as matrix.to links, since currently the onboarding experience should still be better. Once the next version of the matrix.to website gets deployed, you can even just click there to open the event in Nheko! (Instead of having to copy a /join command).

Since "Copy link to event" was confusing to people and AppAraat opened his present box, only to realize it did not contain "Copy link location", we implemented that too as well as a copy action, to copy the event body for good measure. I hope everyone who got confused will forgive me!

Apart from that we also updated our screenshots on https://nheko-reborn.github.io/ (and all AppStream based store pages) to be higher resolution and reflect the current design. Furthermore we fixed the login on conduit homeservers and that no rooms were shown, if the server didn't support the groups API.

That's all, and keep on c(h)atting! <3

2021-04-30-zKbR8-nheko-message-fwd.png

NeoChat

Carl Schwan told us:

We rewrote the room managing code moving it from QML to C++ and unify how we manage rooms in NeoChat. This allowed us to support the matrix-URIs scheme, making it possible to open rooms and show user information when clicking on a matrix: link in your browser. Sverin Saji improved the look of the typing indicator and Jan Blackquill improved the keyboard navigation.

2021-04-30-JcL3Q-image.png

Watch The Matrix

2021-04-30-boDeS-Icon.png

Doug offered:

This week I published the first public build on TestFlight:

https://testflight.apple.com/join/a06n3gN4

There are a few reports of issues when signing in which I'm looking into. A few other changes include:

  • Round complications show [ ] instead of an empty icon (some have been disabled for now).

  • When signing in, the homeserver can be detected from the username.

  • Various performance and bug fixes for sync responses.

  • The app now has an icon and more purple accents.

As requested by benpa after my last update, here's a video of it running on a device:

/me doesn't need to buy an Apple Watch ... /me doesn't need to buy an Apple Watch

Element Clients

Updates from the teams.

Delight

  • We’ve been maturing and iterating on MSC1772 in anticipating of wider testing of Spaces in the near future
  • On Web, we’ve been iterating on designs & implementations for a beta, including tweaking filtering to display rooms from all Spaces
  • On Android, we’ve been doing the same, and have merged the initial Spaces implementation onto develop
  • On Synapse, we’ve been implementing restricting rooms based on the Space Summary API

Web

  • 1.7.26 released on Monday
    • Added persistence of unsent messages across app restart
    • Improved room list filtering performance
    • Improved the image detail view
  • On develop
  • In progress

iOS

  • 1.3.5 has been published to the App Store on Monday.
  • We have been polishing the new VoIP design this week. It should be merged into develop early next week and released in the App Store the week after.
  • We want to focus on code quality. We set up GitHub actions in our 3 repos. They run both unit tests and integration tests. We need to fix some of our 600+ tests in the SDK but we now have a CI able to complain about test failures.

Android

  • The Spaces have landed on Element Android, on the develop branch. We are working to stabilize the feature before the release in beta next week.
  • In parallel, we are working to stabilize the whole application, and provide a better support on Android 11.
  • Also it will be possible in the next release to compress video before sending, which is a very expected feature.

Hydrogen

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

Bruno said:

Invites and other goodies have landed in 0.1.46 & 0.1.47!

2021-04-30-dyAS7-Screenshot_20210428-143543.png

If you spend any amount of time with Bruno, eventually the topic of sourdough will arise - now it's even sneaking into his updates!

Dept of VoIP 🤙

matrix-pstn-bridge

KB1RD told us:

I announced this project last week. It's exactly what it sounds like: A puppetting bridge to puppet a telephone number from Matrix. It's currently pre-alpha and not ready for use on public-facing HSes.

Not too much has happened in the last week as I've been a bit busy. The main thing is that there's now a dev branch where outbound voice calls work. Other than the 2014 SIP experiment, I think this is the first bridge to make voice calls work?

I hope having a reference VoIP bridge can help pave the way for more VoIP bridging. I'm already looking into how code can be generalized for other bridges. For example, I've opened an issue in matrix-bot-sdk to add helper classes and stuff for VoIP support. I'd be curious to see how other bridge builders think this could be accomplished. 👀

If you're interested in PSTN bridging specifically, there's a room for that.

If you're interested in VoIP bridging in general, there's a room for that, too

Dept of Services 🚀

etke.cc - like Element Matrix Services, but on your servers, under your control and without restrictions

Aine reported:

Some context: I like how simple EMS allows you to setup the Matrix homeserver, but it lacks any internal tuning or customization ability. Do you want more? OK, setup it yourself and try to stay normal while trying to configure coturn to properly run in docker cluster. Because of that, I did a service where you can order initial setup and configuration of homeserver (yes, with coturn in docker cluster!) and with full control of customization and fine-tuning of manual configuration (website even has step-by-step guide how the process works).

It's based on the amazing spantaleev/matrix-docker-ansible-deploy with additional stuff like system security hardening and maintenance

Announcements: #announcements:etke.cc

Source: https://gitlab.com/rakshazi/matrix-ansible/ It contains basic security stuff like ufw and fail2ban, system maintenance like updating packages, cleanup of old logs and docker images, configuration of swap, some additions like absurdly simply healthcheck page and website deployment to base domain. Documentation may be found in readme files for each role

GoMatrixHosting v0.4.5 is here!

Michael said:

GoMatrixHosting v0.4.5 is here!

https://gitlab.com/GoMatrixHosting

The FLOSS Matrix hosting system built on AWX, it enables you to manage multiple Matrix servers for many clients in both a commercial or non-commercial context. We are currently doing a free giveaway of on-premises server plans, if you're an experienced user or Matrix admin you can recieve a free on-premises subscription and hopefully provide us with some feedback.

For more updates on this project visit our Matrix room: #general:gomatrixhosting.com

GoMatrixHosting was previously Oasis Hosting - looks like they're making great progress improving their product, may be time to have another look.

Dept of Interesting Projects 🛰️

Matrix_Stats Discoverer (bot) ( @server_stats:nordgedanken.dev )

MTRNord reported:

Some of you might already have seen that bot show up in rooms. To clear up some confusion around it I will briefly explain what it does and what it is supposed to do:

What does it do?

The Bot is simply existing to do the same task as Matrix Traveler (bot) already did for years now. It joins rooms, listens for an alias, tries to join it.

The main difference between these 2 bots is that my bot also searches for aliases in old messages.

What does it save?

It only saves the relations between rooms. This means it knows which room was posted where. It doesn't know who posted it, when it was posted, why it was posted or any other content of messages.

However due to matrix' nature it does need to get the data once onto a synapse to read trough it. This means it has the data on my synapse. (Running in helsinki at hetzner).

What can I do if I do not want it?

The easiest way is to just ban it. It will fully forget that room.

Kicking works too but it might again join if it gets found again.

Where is the source?

The source code is available at https://git.nordgedanken.dev/MTRNord/server_stats/-/blob/main/src/bot/mod.rs

For further questions feel free to join #server_stats:nordgedanken.dev

Also note this bot is still very early in development which is why it does not respond to you yet on any commands. This will be added in the near future as well as a readme in the repository

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
1maunium.net670.5
2matrix.org739.5
3matrix.vgorcum.com1068
4helsinki-systems.de1072
5kif.rocks1085
6dendrite.foxomy.com1092
7kittenface.studio1549
8thomcat.rocks1674
9mailstation.de2011
10chatcloud.net2311

#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.thomcat.rocks415
2dendrite.foxomy.com557
3dendrite.neilalexander.dev576
4dendrite01.fiksel.info1086

That's all I know 🏁

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