This is a long read, but a detailed argument. Also please note that this is was produced for the purpose of an MSc course of study, it was not commissioned for any other purpose, as the preamble makes clear.
Next, a high billing for Beeper this week, who have been working hard and getting product out!
It’s been a month since our last update. A lot of the work since then has been on making everything more reliable, but we’ve also added new features to our clients and started making some new bridges.
Desktop
Added thread UI for Slack-bridged rooms. Internally they’re just replies like before, but the client will intelligently collapse replies in Slack rooms into threads.
Merged upstream Element additions like voice messages.
Also merged some features that aren’t in Element yet, like Giphy integration.
iOS
Released Beeper iOS to Testflight.
Android
Added grouping rooms by chat network based on the m.bridge state event. The UI is similar to spaces, but they’re not actual Matrix spaces (yet).
Added support for Android 11’s “conversation” notifications.
Bridges
Android Messages is turning out difficult to reverse-engineer to a sufficiently reliable level, so we’re building a new SMS bridge into our Android app. It’ll also be available as a standalone open-source app, which already exists at https://gitlab.com/beeper/android-sms (but doesn’t have any setup instructions yet).
We’ve funded development of a LinkedIn bridge. sumner will post a more detailed update about that.
Bruno has been working on aggregations as part of his work for Hydrogen. He reported:
I’ve been cleaning up the relations MSCs, finding a balance between documenting the current state and not losing track of community concerns. I’ve started with MSC 2674 which is the very basic format of relations, and will move on to annotations/reactions (MSC 2677) next week.
Dept of Servers 🏢
Synapse
Synapse is a popular homeserver written in Python.
We’re pleased to announce the release of Synapse 1.37.1 this week, which includes mitigations for the recent distributed spam attack across the public Matrix network. We advise upgrading as soon as possible.
Got another week of Helm Chart updates, with the Synapse chart getting a bunch of worker improvements and additional configurability, as well as being updated to first 1.37.0 and then 1.37.1
I’m excited to announce that I started working on a new bridge for bringing LinkedIn messages to Matrix! It’s currently in the early stages of development and not production-ready. The current feature set includes: backfill from LinkedIn, user name and profile picture sync, message sending from Matrix -> LinkedIn, and real-time message puppetting from LinkedIn -> Matrix. There’s much more to come, and you can join #linkedin-matrix:nevarro.space for updates. Development is being funded by Beeper, and is being designed with integration into Beeper as it’s primary goal. However, the bridge is open source (Apache 2.0) and will be available to self-host. The source code is here: https://github.com/sumnerevans/linkedin-matrix.
Great work from Sumner! Glad to see people have the option to bridge their LinkedIn messages!
matrix-puppeteer-line: A bridge for LINE Messenger based on running LINE’s Chrome extension in Puppeteer.
Better LINE->Matrix read receipt bridging is now supported in the testing branch! The bridge now checks all LINE chats (not just the most recently-used one) to see if messages you sent have been read (in LINE). This works by cycling through all LINE chats where the final message is posted by you and doesn’t have a “Read” marker on it yet (or for multi-user chats, if your last message hasn’t been read by everyone in the room).
With that, I’ll consider the bridge to be in Early Beta! 🎉 I’m now testing the bridge for myself to iron out a few kinks, and am preparing a PR to the matrix.org webpage to have this listed on https://matrix.org/bridges/.
This addon for the WebThings gateway lets you send Matrix messages when your IoT fridge is empty – or whatever you have connected to your gateway.
The update fixes predefined messages getting sent to the default room and is the first to be tested against gateway version 1.0.0.
https://gitlab.com/webthings/matrix-adapter or in the addon list of your WebThings gateway
This week, NeoChat gained support for a Global Menu on Plasma and macOS. Aside from that, we fixed a few crashes.
But the biggest news of the week is that we will get funding from NLNet to implement E2EE support in Quotient and NeoChat as part of their grants to improve the internet. We will report on our progress on that front here!
This is terrific news, big thanks to NLNet for making this choice!
FluffyChat
FluffyChat is the cutest cross-platform matrix client. It is available for Android, iOS, Web and Desktop.
We merged the Spaces branch, which means Nheko master can now show some spaces. Peeking unjoined rooms, nesting spaces and creating them should be coming soon. We are also looking into how to fit knocking into the UI (we already rendered incoming knocks in the timeline for a while).
You can also now edit still pending messages, which should help if your server is slow and you notice a typo. The edit will then get queued and be sent as soon as the server acknowledges they received the original message. Apart from that there have been some improvements to the readability of the room list and some other UI elements.
Last but not least, we switched out our entire http backend from Boost to Curl. For that I wrote a simple wrapper around Curl. This fixes about 10 issues around connection shutdown, brings proxy support, http/2 and http/3 support and in general makes Nheko crash less and reduces latency a LOT! This will obviously cause some pain for packagers, but I hope it isn’t too bad. Some of the issues this fixes only had 2 digits in our bugtracker and one was even filed by benpa!
Chris tweaked the UI in various places. It’s a lot of small details that together make for a smoother experience. I encourage you to read the details in the description of !782. This is the only MR that landed since last week, but our people have been hard at work nonetheless. Kai blogged about his journey working on the search bar of doom and Alejandro shared his own struggle. In the meantime, Julian’s work has mostly happened upstream in matrix-rust-sdk.
Element Clients
Updates sent by the teams
Delight team
Spaces:
Research: We’ve been reaching out to people to walk us through how they use Spaces now and what they’d like to see different to help us learn and iterate;
Restricted room access: Some good progress towards shipping improved team spaces
Some major progress on conversion to TypeScript, finding some bugs along the way. The main source of the element-desktop project is now fully converted to TypeScript!
A styled player component for the audio messages feature, available in the labs section.
v0.5.19 of the matrix-bot-sdk is out now with fixed power level checking (with an added utility function), improved default error logging, and a typo fix in reply creation. Check it out, and visit #matrix-bot-sdk:t2bot.io for help & support.
Exciting new update, we can now wireguard an on-premises server from just about anywhere and make it work with the AWX system. This is useful when your server doesn’t have a static or public IP address, or when some other networking issue prevents you from running a Matrix service on it.
Mjolnir is a moderation bot for communities on Matrix. It helps with a lot of the actions covered by the moderation guide, including capabilities to apply bans from other trusted communities. It’s still a bit terse in its documentation, but if you’re looking for a featureful moderation bot then it’s worth a go.
In related news, Mjolnir v0.1.18 is out with a couple quality of life fixes - if you’ve been bothered by the log spam, it’s now fixed :)
I started a tiny repo to collect various limits and related factoids about the Matrix specification and implementations. I hope that distilling and summarising such things at glance will make it easier to see what is and is not possible.
If you know of more that should be listed, please contribute! 🙂
Self hosting your own Matrix server on a Raspberry Pi
@ed:selfhostingblog.com of theselfhostingblog.com has written a guide on getting started with Synapse on a Raspberry Pi using Docker Compose. You can read it here.
Together with J. Ryan Stinnett, I created the 🔖 #matrix-science-reading-group:dsn.tm.kit.edu for exchange of and on scientific papers, books and related resources on all things Matrix: Topics ranging from peer-to-peer broadcast overlay networks over conflict-free replicated data types to end-to-end encryption. Investigating security, performance, deployability, or whatever else is interesting, by methods from observation over simulation to formal verification. 🎓️ Please join if you want to read about papers that might not be Matrix-related enough to make it into TWIM, or want to engage in the discussion. 😊 The resulting papers are collected at: https://github.com/jryans/awesome-matrix#research
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.
“A public space for Free/Open Source Software maintainers to swap notes and discuss their craft. Inspired by https://github.com/github/maintainerweek, all maintainers welcome!”
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank
Hostname
Median MS
1
dendrite.nordgedanken.dev
246
2
dendrite.neilalexander.dev
578
3
dendrite01.fiksel.info
1459
4
jloa.ovh
1586
That’s all I know 🏁
See you next week, and be sure to stop by #twim:matrix.org with your updates!
The Foundation needs you
The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.
It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.