Matrix Live 🎙
Dept of Status of Matrix 🌡
Cross-Signing is close, please test https://riot.im/staging
Next week, Cross-Signing is planned for release!
Please test https://riot.im/staging this weekend, and report any issues you may find!
t2bot.io passes 3 Million bridged users
Over 3 million people from Telegram and Discord have now been brought into the Matrix universe through t2bot.io. Of those people, around 230 thousand are active each month and 15 thousand are dedicated users of the bridges daily.
While this is a huge milestone for t2bot.io,it underlines the importance of self-hosting: having a couple giant bridges is great for accessibility, though where possible it’s heavily encouraged that people self-host. Hosting the bridges yourself on your own homeserver gives you better control of what passes through your server, reduces your dependence on third parties like t2bot.io, and gives you better performance.
During peak periods, t2bot.io sees about 10 messages per second passing through it. Half of those messages are generated by the Telegram bridge alone. The other half is dealing with federation and the various other bridges and bots on t2bot.io. In terms of media, a new image is uploaded every 2 seconds, leading to 5.8 TB of media being stored. The database is 3 TB and holds 236 Million events - roughly 131 Million of which are sent by t2bot.io.
Thank you to everyone who has used t2bot.io in the past 3 years - it’s been more successful than ever imagined. Here’s to another year and a bunch of self-hosting. :)
Dept of Spec 📜
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:
- No MSCs are currently in FCP.
Spec Core Team
In terms of Spec Core Team MSC focus for this week, MSC2454 has entered FCP, and as such we've decided to instead focus on MSC2399. So the new list of MSCs for next week is: MSC2366 (verification flows), MSC2399 (UISI messaging), and MSC2472 (Symmetric SSSS).
Dept of Servers 🏢
Dendrite / gomatrixserverlib
Dendrite is a next-generation homeserver written in Go
Neil Alexander announced:
Room version 5 support added - Dendrite now supports all current room versions!
Room version 5 will now be used by default when creating new rooms.
Backfill over federation has been implemented and it honours
Strict key validity checking has been fully implemented in gomatrixserverlib in support of room version 5. Some key expiry bugs have also been fixed.
Back-pagination tokens are now generated correctly for events that have the same depth.
It's now possible to limit the number of Postgres connections - thanks tomasji!
Some progress towards working invites has been made.
Federated room joins are now performed by the federation sender as a part of an on-going remodelling.
Some bugs with URL query vs. path escaping have been fixed in gomatrixserverlib.
A number of internal APIs have been merged together.
Some new tests have been added to the sync API.
v5 rooms! this is a sign of huge progress in Dendrite!
We’ve spent time this week working with the Riot teams to tweak matrix.org performance for cross signing. We’ve also fixed a few performance regressions ahead of next week's 1.13.0 release (which will be a big one, more details when it lands).
With any luck we’ll have Redis in production on matrix.org next week, we don’t think this will give us a huge performance win, but there is certainly overhead in having so many workers using the previous replication streaming method.
Our sharding project continues, and Erik has been trying to move the event stream entirely away from the master process which in itself could be significant for overall perf once ready for production.
Aside from that we continue to improve SSO support and we have a really great community PR from sandhose that implements OpenID Connect support. We are really looking forward to getting that merged. The admin API is also getting plenty of community love with awesome-manual and dklimpel leading the charge.
Next week, look out for 1.13.0 and hopefully some more good news on sharding.
kegan told us:
Version 0.0.6 has been released on https://p2p.riot.im which has the following changes:
Room version 5 is supported by default.
Backfill is much more reliable.
Backfill now does all PDU checks required of it
You might get kicked out a few times whilst the service worker shifts around, you can force things by going to
about:debugging#/runtime/this-firefoxto unregister the worker manually. Logs will state version 0.0.6 on update.
All the benefits from Dendrite (above) will feed into this.
Conduit is a Matrix homeserver written in Rust https://conduit.rs
There was a lot of progress this week!
First server-server communication by requesting a remote public room list
Paginated message loading
Changing the nickname works properly now
Thanks to my supporters on Liberapay.
Dept of Bridges 🌉
Hey all, the IRC bridge has reached another milestone, 0.17.0. This is a medium sized release, containing a few nice to have features like predicting nickname conflicts and some work around user deactivation. Importantly, this release authenticates the provisioning endpoint so if you run an integration manager or script that makes use of it, ensure that it handles requests appropriately. You can see the changelog in https://github.com/matrix-org/matrix-appservice-irc/releases/tag/0.17.0
mx-puppet-bridge is a general bridging library that supports (double)bridging and relays. The goal is to make it as easy as possible for others to bridge new third-party protocols to matrix. Support room Donate
sorunome told us:
event syncing/storage is now properly handled on a per-room basis, rather than a global one
automatically renew double-puppeting if shared secret auth is enabled
Enhance reply support matrix->remote: The remote protocol gets in the callback now proper information on the event replied to
Add remote->matrix reply fallback
Implement skype quotes / matrix replies
various stability fixes
Dept of Clients 📱
Pattle: version 0.15.0
Pattle is a client written for Flutter using Dart
Wilko told us:
A new version has been made available and will become available on Google Play and TestFlight!
Because of corona this might take longer than usual.
A lot has changed internally, expect to have a smoother experience!
(See also the Matrix Dart SDK release)
A new logo is here!
Designed by bo_rad!
Logging in has completely been revamped
For the initial sync (after login) a splash screen is shown
Chats in the overview are now separated by two tabs: Chats and channels
There's now a navigation drawer, which will be filled with useful actions in the future. For now it's just a place to go to Settings
Message times are now shown on the same line, if possible
Replies have been redesigned
Buttons or list tiles that didn't do anything have been removed to avoid confusion
Image sending has been improved, the image is now shown immediately in the timeline
Push notifications don't popup when the respectful chat is opened
Push notifications are now grouped by chat
Push notifications are hidden when opening the respective chat
Messages are immediately marked as read, previously was after 2 seconds of having it opened
Some colors in the dark theme have been altered
Ability to create a chat has temporarily been removed, it wasn't functioning well and will be completely redone
Issues or suggestions
If you stumble upon any issues or would like to suggest features, please do so here!
You can login via GitHub and Gitlab.com!
Follow development in #app:pattle.im!
gomuks now has experimental support for end-to-end encryption on the
e2eebranch. It supports both text messages and media downloads. The majority of the work happened in mautrix-go (also on the
e2eebranch). This also means that mautrix-whatsapp will get support for end-to-bridge encryption in the near future.
What megolm implementation are you using?
Nio is a client written with SwiftUI
kilian told us:
Nio received some cool new features this week.
New Dutch and Chinese (simplified) translations (besides English & German)!
Edited messages are now displayed correctly.
An edit action has been added to the event context menu, long press a sent message to go into edit mode (looks cool as well!).
When entering a full MXID into the username field on logging in, Nio will automagically prefill the homeserver URL (if a well-known config is present server-side).
Rich text markdown message display including clickable links detection is now in the works!
Best part about all of these changes: They were contributed by others, I did nothing but merge the PRs! Open-Source ❤️ Shout out to @stefan:stefanhofman.nl, @thomas:mustelo.de, @captain-yukinoshita-hachiaman:matrix.org and @regexident:matrix.org.
RiotX will finally be an update of Riot-Android on the PlayStore and RiotX beta will then be removed from the PlayStore. We will implement everything to let users upgrade their application without being forced to log in again.
While we are finalizing cross-signing, quadS, bootstrap, etc. on RiotX, we have started studying and implementing the main missing features: identity server and related functionality (terms of service consent, invite by email, search in contact list, bind emails and phone numbers, etc.), integration manager (terms of service consent,widgets, send stickers), WebRTC audio and video calls, Jitsi conference integration, and other important missing features like UI and UX to invite people to a room, etc. We are also fighting an annoying bug related to the navigation inside a timeline.
It's also now possible to deactivate your account using RiotX.
It's worth noting that people can contribute to translate RiotX by using new dedicated Weblate projects. Thanks!
Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at
Nico (@deepbluev7:neko.dev) announced:
fernie contributed a smoother scroll behaviour and a loading indicator for individual rooms
We fixed some readability and styling issues
We fixed a major bug in 0.7.1, where you couldn't accept invites
We fixed a bug, where nheko would pin a core to 100% CPU on highdpi screens, because it tried to resize avatars all the time...
We also reduced CPU usage by a lot. Nheko now only uses 0.7% CPU on my system again and that's just the presence updates I get every 100ms or so...
There will probably be a release in the near future to get those fixes to people not running master.
The reduced CPU usage is mostly not resorting the whole room list all the time, but keeping the partially sorted room list around and not storing pending read receipts in the database but just applying them all the time without checking, if we are waiting on a receipt :D
A glossy Matrix collaboration client for the web. https://riot.im
Ryan told us:
Several more RCs this week have brought us ever closer to the release of cross-signing! A variety of verification, login, and toast issues related to cross-signing have been fixed in the RCs this week. Please do test https://riot.im/staging over the weekend, as we're planning to release early next week if no issues are found.
Luxury Dark Theme for Riot
OCRCC embeddable Matrix chatbox
Brendan told us:
Nomadic Labs have built an open-source embeddable chatbox using Matrix for the OCRCC (Ontario Coalition of Rape Crisis Centres) to allow survivors of sexual violence to communicate and seek help safely with OCRCC facilitators. This chatbox lives at https://github.com/nomadic-labs/ocrcc-chatbox - and it has a pretty nice feature set, including end-to-end encryption support.
They've also built a E2EE-capable bot to connect people with facilitators, which can be found here: https://github.com/nomadic-labs/ocrcc-bot
This is a really exciting project! Very stylish design and great to see people using Matrix for something so practical and positive. 👍
Dept of SDKs and Frameworks 🧰
Matrix Dart SDK: version 0.30.0
Wilko told us:
The whole SDK has been refactored!
All data objects such as
Room, etc. are now immutable
MoorStore, which uses moor (thanks to MatMaul for the idea and initial implementation!)
SqfliteStore(was in a separate package) is now deprecated
LocalUserhas been renamed to
And a lot of other changes!
How it works
The user has a stream of
Updatecontains the latest 'snapshot' of data associated with the user. It also contains a
MyUser, where all properties are
null, except those that are changed. For example, if a user started typing in a certain room, and we're syncing, there will be an
delta.rooms, with only the room where the user started typing, reflected in
room.typingUserIds. All other properties of the
Roomwill be null. This is all assuming that this is the only change in the sync. If more happened, it will be reflected in
For more info, see the README
Some features previously present may not have been added yet again.
They will be added in the future!
Get it on pub!
Join #sdk:pattle.im to learn more!
🧙 Polyjuice Client
Polyjuice Client is a Matrix library for Elixir
To better serve the wizarding community's transformation needs, I have released v0.2.2 of Polyjuice Client, a Matrix library for Elixir. This release adds support for some more Matrix endpoints, and allows paginating through room history using Elixir's streams.
We've iterated through a few new pre-releases of our libraries to bring some usability improvements. Here are a few highlights:
Implemented User-Interactive Authentication API and some other endpoints to bring us very close to full r0.6.0 compatibility
Updated the representation of events to allow preserving original JSON alongside typed event structs
Tidied up some our repositories, improved CI build times
Began work on Server-Server API in ruma-federation-api
Dept of Ops 🛠
Typo Kign announced:
v1.1.1 of dacruz21/matrix-chart is out and now supports the matrix.org IRC bridge! dacruz21/matrix-chart is a secure, scalable way to deploy a complete Matrix homeserver stack, complete with bridges and useful services, into Kubernetes. As always, come visit #matrix-chart:typokign.com if you have any questions or need support!
buildbot-matrix plugin available
buildbot-matrix v0.0.1 released:
Dept of Bots 🤖
Opsdroid has released v0.18 this week, which contains a load of stuff. The main matrix related changes are:
A generic event type for all unsupported matrix events, so you can now react to and send any custom events.
Implementation of the join room event in the matrix connector so you can react to users joining a matrix room.
A fix for mxc urls in messages, so inline images etc work.
A fix for the opsdroid memory to allow per-room matrix room state databases. This will hopefully be merged into core for the next release.
Picard Opsdroid Skill
Related to this release the picard skill for bridged slack/matrix community management has been updated, and now (for the first time) works with a release version of opsdroid rather than some random branch 🤣. This involved adding support for lots of different events to the slack connector in opsdroid.
See Matrix Live this week for a neat introduction to OpsDroid
New bot to share Jitsi call URLs
I wrote a bot to share Jitsi call URLs. The main objective is to allow people on the other side of bridges to get the URL for a jitsi call. When a jitsi widget is added to a room (v2 widget from riot-web) it will post a message with the plain jitsi URL. It also provides a !jitsi command which allows people to create a jitsi call with a custom URL, and if the bot has permission it will be added as a widget in the matrix room. It has a bunch of other config options you can tweak it with. The main thing you might find it useful for if you are not in a bridged room is you can use it to quickly add a jitsi widget for any conference URL. The bot can be found here: https://github.com/Cadair/skill-jitsi/ and it uses the opsdroid framework. I have also hosted a version @jitsibot:cadair.com
Peter Roberts said:
Add regional data for Findland, Wales, Northern Ireland and Scotland with thanks to @bertieb:matrix.bertieb.org.
Get UK and England regions from a new source as Public Health England stopped providing their CSV data, again thanks to @bertieb:matrix.bertieb.org.
m.noticeby default but use
m.textin IRC bridged rooms to avoid annoying IRC users.
Make logging more consistent which helps with debugging.
MIT licensed on GitHub.
Dept of Interesting Projects 🛰
Doctor Who watchalongs
We're still having a great time watching Doctor Who with folks from the wider Matrix community. The next one scheduled is happening on Wednesday (May 6th) at 7PM, and we'll gather to watch The Girl in the Fireplace (series 2 episode 4) together, with tweets from Steven Moffat (writer) and Sophia Myles (Madame de Pompadour) bridged to the room 🙂
As always, if folks want to tag along and join the fun, feel free to join #doctor-who-watchalong:abolivier.bzh !
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.
That's all I know 🏁
See you next week, and be sure to stop by #twim:matrix.org with your updates!