Matrix Live 🎙
Dept of Status of Matrix 🌡️
Element review by TechRadar
TechRadar have published a fairly thorough Element secure messenger review. This covers the Web, Android and iOS clients, and appears to use the matrix.org server for signup.
The review is very positive, awarding 4.5/5, and concludes:
The Element messenger platform scores highly for its approach to security and its commitment to decentralization, and it's definitely going to be of interest to businesses wanting control over their own chats – as well as plenty of individual users as well.
Dept of Spec 📜
anoa told us:
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.
- No MSCs were merged this week.
MSCs in Final Comment Period:
Spec Core Team
Dept of Servers 🏢
This week we put out two point releases to fix critical bugs. At the very least ensure that you have upgraded to 1.19.2 which is a security release but you may as well go the whole hog and upgrade to the hot off the press 1.19.3. We will release 1.20.0 early next week.
Aside from that we continue to work on performance analysis and the sharding of the event persister continues - it’s proving to be a really tough job but we are getting there. We’ve also been making progress on the room knocking implementation
This week we say goodbye to Oliver (reivilibre) as a leaving present he fixed a long standing bug that prevented servers catching up after a federating outage and as we speak is furiously trying to finish a service to test TURN configuration. Thanks Oliver!
Dendrite / gomatrixserverlib
Dendrite is a next-generation homeserver written in Go
Neil Alexander said:
Not much has happened this week, as the Dendrite team have been taking some time off. However, we still have a couple of changes to report:
Support for rejected events has been merged
Work on soft-fail has begun (although not complete yet)
A new mechanism for avoiding SQLite parameter limits was contributed (thanks HenrikSolver!)
Spec compliance is on the up:
Client-Server APIs: 56%, same as last week
Server-Server APIs: 74%, up from 71% last week
Conduit is a Matrix homeserver written in Rust https://conduit.rs
Welcome back! This week we made some groundbreaking progress - this is not a joke, we found a bug in Synapse while breaking multiple Matrix rooms, causing the Matrix team a lot of unnecessary stress. Let me explain: The good news is that Conduit is starting to federate now. This means that you should be able to join all public rooms of the Matrix network and exchange messages. Note that Conduit does not do all the checks it should be doing yet making it stop sending messages from time to time as well as that advanced features like loading the history, syncing temporary data like read receipts or accepting invites are not implemented yet.
The bad news is that, while Synapse is happy to accept Conduit's messages when it is already part of the room, joining into one of the rooms Conduit servers are part of didn't work because of an event validation bug. The Matrix team did an excellent job at fixing this bug and releasing a Synapse patch the same day, but the damage has been done making a few rooms inaccessible to old Synapse servers. Thanks to everyone who supports me on "Liberapay" (https://liberapay.com/timokoesters) or Bitcoin!
Synapse Deployment 📥️
Synapse on NetBSD
I ported Synapse + its dependencies to NetBSD and it is now in pkgsrc as
chat/matrix-synapse. This means that Synapse is now easily installable on any operating system that supports pkgsrc (which is many, e.g. NetBSD, Linux, macOS, Solaris, AIX, Haiku, …). And while at it, I also ported mautrix-hangouts + dependencies (in pkgsrc as
Pierre told us:
YunoHost is an operating system aiming for the simplest administration of a server, and therefore democratize self-hosting.
Synapse integration had been updated to 1.19.1 (1.19.2 available in branch
Element Web integration had been updated to 1.7.5 (1.7.7 available in branch
Just pushed the updates for the K8s-optimized Synapse image and chart for 1.19.3
Dept of Bridges 🌉
matrix-appservice-bridge hits 2.0.0ʳᶜ¹
But that's all changed now, the 2.0.0-rc1 release brings fresh types, new convenience methods, a total swichover from Bluebird Promises to native Promises and much much more. If you are looking to quickly get set up writing bridges, it's never been easier.
Check out the slack-starter project to get your first taste of bridge excellence and see what you think.
As this is an RC, feedback is valuable and logging bugs helps us all. Please do so if you encounter any issues 😄
Bridge Encryption Support
Hi encryption fans. This week the bridge team has been churning away at adding support for encrypted rooms in the
matrix-appservice-bridgelibrary, to enable support in
matrix-appservice-slack, and anyone else using the library. This is probably the most exciting feature the library has seen in a long time!
The feature will be a simple config toggle, so existing bridges will have to do very little work to support it.
The first phase plans to use Pantalaimon with bridge users syncing like real users, but eventually the hope is that this will be all built into the library. Come check out this issue to keep track of progress.
Dept of Clients 📱
Released 1.7.6 and 1.7.7 highlights include
Redesigned right panel where top right actions are now revealed via the i icon
Widgets can now be opened in the right panel
Widgets won't be visible in the Apps Drawer (top of timeline) by default (except Jitsi) - you need to pin them from the right panel
Widgets can now be resized
A new feature to defer e2ee set up until the user actually wishes to use an e2ee channel.
A series of config flags to remove various features from the UI thereby simplifying the experience.
0.6.3 and 0.6.4 were released this week, and I'm now working on desktop notifications support and push rules control.
Add a system tray icon.
A left click will bring up the Mirage window, middle will quit the application and right will show a menu with these
closeMimizesToTraysetting to the config file, defaults to
Controls whether closing the Mirage window will leave it running in the system tray, or fully quit the application.
Add a discrete read marker indicator to messages, shows how many people
have this event as their last seen one in the room.
A way to see who read the message and when will be added in the future.
zoomsetting, defaults to
lexicalRoomSortingsetting, to sort rooms by their name instead of
A restart is needed to apply changes to this setting.
Restrict Mirage to a single instance per config folder, trying to launch a
new window will instead focus the existing one.
MIRAGE_DATA_DIRenvironment variables can be
set to run different "profiles" in parallel.
Reduce the visible lag when opening a chat page, switching rooms should be
a lot smoother
When using the
focusNextMessagekeybinds, if no
message is focused and the timeline has been scrolled up, focus the message in the center of the view instead of returning to the
bottom of the timeline and focusing the last one.
Don't re-center the room list on clicks by default.
This prevents the list from jumping around every time a room is selected.
The previous behavior can be restored with the new
Show a better terminal error message than "Component is not ready" when the
window creation fails, giving details on what went wrong in the code
If an account's access token is invalid (e.g. our session was signed out
externally), say so with a popup and cleanly remove it from the UI, instead of spamming the user with errors.
Rename message context menu option "Debug this event" to just "Debug"
Unify up/down and (shift+)Tab navigation for the account Sessions page
Changes to the UI scale/zoom via keybinds are now persisted across restarts
uiScaleis now bound to
This change is necessary to keep the zoom keybinds working.
Element Android 1.0.7
Element Android 1.0.7 has been released (still stuck in Google pipes writing those lines), and will be quickly followed by 1.0.8 to fix a problem with cross signing verification.
We are working to implement search of messages in a room and we keep on fighting bugs and improving performance of the application.
We are also iterating on the home screen, to improve user experience, and try to satisfy users with a few rooms as well as users with several hundreds of rooms.
This week, we released 1.0.12 with several bug fixes including the one for background crashes due to PushKit
Bruno told us:
Released 0.037 on Monday with some polish for E2EE:
remove outdated devices when querying
update room summary with decrypted events, also when retrying decryption
various crash protections
keep megolm session with earliest index when receiving a room key we already know about
add new icon
fix issue where olm would be loaded twice when login failed
show decryption errors in timeline
show encryption enabled tile in timeline
The rest of the week was implementing session backup, which I hoped would be ready to release today but it needs some more polish unfortunately. In the meantime, here's a GIF teaser:
Thank you to Krille, who told us:
FluffyChat version 0.18.0 is out now in F-Droid, Testflight and soon the PlayStore:
- Added translations: Armenian, Turkish, Chinese (Simplified), Estonian
- Url-ify matrix identifiers
- Use server-side generated thumbnails in cleartext rooms
- Add option to send images in their original resolution
- Add additional confirmation for sending files & share intents
- Add option to opt-in to report issues / crashes to sentry
- Write keys to online key backup, fully implementing online key backup
- Tapping links, pills, etc. now does stuff
- Better handling of sending messages in bad network
- Better recovery of "keys not cached"
- E2EE is enabled again
- Various html rendering and url-ifying fixes
- Added support for blurhashes
- Image viewer now eventually displays the original image, not only the thumbnail
Dept of SDKs and Frameworks 🧰
Hemppa the bot is a multi-purpose Matrix bot for writing new functionality easily with Python.
Hemppa gained a small but big feature for making fediverse better: per-room Mastodon tooting support. This means that you can set up a Mastodon account in your room and anyone with moderator rights can toot to that account. This way you and your roommates can super easily send toots to the world directly from Matrix. Mastodon (unlike the big alternative) supports RSS feeds out of the box so it's very easy to subscribe to users and hashtags with stock RSS bot. Toot #hemppathebot if you like it! Another new contribution worth mentioning is welcome which can send welcome messages to users registering on the server or joining a room. https://github.com/vranki/hemppa
Another week, another Ruby SDK release. This time adding a little fix to avoid duplicate state events being passed twice to the application if identical ones arrive in both state and timeline, also adds a global state event handler and moves room event handling to not depend on room instances themselves.
Asked how much the SDK is used in production, Ananace said:
a little, we've hooked Matrix into our server orchestration / configuration management system TheForeman - which is a Rails application. Also got a colleague who's doing a bot to linkify internal ticket IDs.
iinuwa told us:
Thanks to @q-b and @jtescher we have implemented more of the federation endpoints (bringing us up to about 85% completion) and every (one) endpoint of the Push Gateway API!
We fixed a bug where federation endpoints expected access tokens instead of server signatures for authentication. In the future, we may add an API that requires signatures on requests.
Finally, we've also continued progress on the non-exhaustive type updates for backwards compatibility; we expect to finish this within the coming weeks.
Dept of Bots 🤖
Matrix Reminder Bot
v0.2.0 of matrix-reminder-bot has been released! This releases includes lots of bugfixes, updates and polishing. Find the list below:
Better support for command prefixes other than the default
!silencenow silences the currently active alarm.
The bot will now print the correct syntax of a command if the user fails to follow it.
The bot will reply to events if it cannot decrypt them, as well as offer helpful tips that both the user and bot operator can try to fix things.
Timezones. They should finally work correctly! ...no 100% guarantees though.
Alarms were a bit broken. They're fixed now.
Fix commands with formatting and newlines not being picked up by the bot.
Fix non-latin characters preventing reminders from being deleted.
Add a dev-optimised Dockerfile for quicker iteration during development.
Better wording revolving alarms. They're just reminders that alarm repeatedly when they go off.
Log why the bot is unable to start.
Don't print "Unknown help topic" in case the user is trying to ask another bot for help.
The config dict is now a singleton.
Type hints everywhere!
Additionally, the minimum Python version is now 3.6. matrix-reminder-bot is made with nio-template.
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.
Dept of Ping Extra:
Normally the ping shows how long other servers take to receive the sending-server's message. Some servers receive it quickly, some take hours. All this flows into the statistic of the sending server. I wrote a small program that's the other way around. Instead of measuring the sending-server's ping, it associates each measurement with an echo-bot (instead of the sending server), so this plot shows which maubots are the fastest to respond (it's probably not accurate at all, because most of the pings were started on conduit servers this week, but it's interesting nevertheless):
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.Support us