Matrix Live 🎙
Matthew and Amandine discuss the week, including E2EE by default!
Dept of Status of Matrix 🌡
What a week!!
Lots happening this week! Cross-signing landed - this is a massive achievement for the team, and will go a long way to helping the user experience for new users especially. Read more in the major Riot blog post here. Time to start getting less-technical friends on Matrix!
Google announced their Summer of Code programme acceptees: Matrix have six students this year, our most ever! We'll make a new blog post next week welcoming the students!
Meetup 2 will feature:
- Mike Hoye from Mozilla talking about "Verbs in the fediverse"
- Eugen (@[email protected]) will talk about "how we keep mastodon.social running at scale" as a Q&A
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.
MSCs in Final Comment Period:
- MSC2529: Proposal to use existing events as captions for images (sounds great! - bp)
- MSC2526: Add ability to delete key backups
- MSC2530: Body field as media caption
Spec Core Team
In terms of Spec Core Team MSC focus for this week, MSC2474 has entered FCP. Keeping with the E2EE theme, we've switched focus to MSC2526. So the new list of MSCs for next week is: MSC2366 (verification flows), MSC2399 (UISI messaging), and MSC2526 (deleting key backups).
Dept of Servers 🏢
Dendrite / gomatrixserverlib
Dendrite is a next-generation homeserver written in Go
Neil Alexander said:
Some of the work for
/get_missing_eventshas been done now for filling gaps in the room DAG
Federation sender performance and parallelisation have been dramatically improved, which helps a lot in big rooms
Retries, backoff and blacklisting have also been implemented in the federation sender to handle cases where remote homeservers are unavailable much more gracefully
Retrieving missing state when receiving incoming events over federation is a bit more robust now
Creating direct chats now works
Invites are mostly working now overall, both locally and over federation
RespStateJoinhave been fixed in gomatrixserverlib
Room joins and leaves are now handled by new code across the roomserver and federation server perform APIs, which reduces complexity significantly
Redis live in production for m.org! We did not expect this to translate into a significant improvement in performance directly, but it means that we can add new workers without any extra overhead on the master process which has been very useful in supporting cross signing.
Fixing bugs leading to messages getting stuck at the bottom of the timeline as well as messages not making it to sync at all.
Lots of improvements to deal with the extra load generated by cross signing.
All of these changes will be available in v1.13.0 which should have a release candidate ready rsn.
Next week, we continue to work on sharding changes, further SSO support and ensuring that cross signing adoption is as smooth as possible.
Architect is a homeserver project written in Common Lisp. We intend to create a high performance homeserver using the meta-programming features of Common Lisp to reduce the amount of redundant and timely code that needs to be written and maintained.
I created a json-schema library, to generate class definitions directly from the Matrix specification. These classes also have information attached to them to allow for serialisation, using a metaclass from json-clos.
This is done entirely dynamically without writing to source files. The invocation of json-schema that creates classes for the
application-serviceprotocols is only about 20 lines.
I definitely approve of separating out the event library and generating it from the spec - Ruma also has this approach.
Conduit is a Matrix homeserver written in Rust https://conduit.rs
timo told us:
This week I refactored most of the data handling code to make it both more efficient and easier to read. I started by splitting a file called "data.rs" into multiple smaller files that handle just one part of the database, like "users.rs", "rooms.rs" or "edus.rs". I continued improving the code by making methods return iterators instead of vectors and propagating errors instead of crashing directly. Lastly, I added a few comments here and there and made sure everything works.
Meanwhile, @Valkum experimented with CI and @MTRNord is working on FluffyChat Flutter support.
Finally, I want to thank my supporters on Liberapay.
Dept of Bridges 🌉
witchent told us:
After a few weeks of work the matrix-signal bridge is now functional again. In the process I also added the possibility to send audio and video files among other things.
If you want to try it out go to https://github.com/witchent/matrix-puppet-signal.
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
mx-puppet-bridge now supports emote synchronising using revolution's custom emotes! The discord protocol implementation (mx-puppet-discord) already utilizes this
Easybridge is a multi-user bridge for small Matrix servers
Easybridge is a multi-user bridge for small Matrix servers, with the idea of making it easy for non-technical users to bridge their external accounts into Matrix. Once configured next to a server, users can just go to a dedicated web page and add their accounts with a simple form. Currently supported protocols include IRC (buggy), XMPP (basic feature only), Mattermost (quite in good shape) and Facebook Messenger (has issues with disconnections). Available at the following link: https://git.deuxfleurs.fr/lx/easybridge
Hello one and all. Today we're releasing the 1.2.0 of the slack bridge. No notable changes from the last RC this time, but another release should follow this one soon to make changes to the provisioning system :)
Dept of Clients 📱
gomuks's e2ee support is now on the master branch. The basic olm/megolm things like key distribution work fine, but no advanced stuff like key import/export or device verification yet.
I'll probably add e2be to mautrix-whatsapp next and then add some of the advanced e2ee stuff to gomuks. I'll also make a v0.1.0 release in gomuks after I figure out some bugs in message history loading.
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) reported:
Apart from some further speedups, we've been working on reactions. Nheko can now display them and sending them should be done soon too. We also fixed a few bugs, when people reported them and you can now select, who you want to reply to by using a keyboard shortcut (Alt+Arrow keys for now). We will probably release a new version once reactions are done.
We have released RiotX v0.19.0 on the PlayStore on Tuesday! This is a pretty huge release, including all the work on cross-signing, but also other features like changing account password, deactivating account, saving media to Gallery, etc., without forgetting a lot of bug fixes. More detailed change log can be found here: https://github.com/vector-im/riotX-android/releases/tag/v0.19.0.
We are now working to implement the main missing features compare to Riot-Android, with the target to upgrade Riot-Android with RiotX codebase in a few weeks.
This week has mostly been another cross-signing week to improve it and to fix bugs. We released 0.11.2 on Monday. We are going to release 0.11.3 with the work we made this week. It should be available in the App Store tomorrow.
We also released MatrixSDK 0.16.4 with the last version of AFNetworking. That means apps using the MatrixSDK should be able to publish to the App Store again. There is no more usage of
Your favorite way of electron-free searching through encrypted rooms in Riot Web was just updated to v0.1beta11, featuring:
Packages for Ubuntu/Debian (.deb), MacOS (.pkg) and Windows (.exe) to make installation a whole lot easier
Updated to latest seshat (1.3.3)
Get it here: https://github.com/stoically/radical-native
New translation projects for RiotX and Nio
Take a look at https://translate.riot.im/projects/riot-android/ and see if you can help with translation there.
Nio (client) translations are also now available on Weblate - go forth, translate and help Kilian out. Or, "aushelfen" him, as he might say.
Revolution is a riot-web fork that has things like custom emotes. Have you heard of it before? Well, it's been around for about two years already!
git clone <https://gitlab.com/ponies-im/matrix-js-sdk.git> cd matrix-js-sdk yarn install yarn build yarn link cd .. git clone <https://gitlab.com/ponies-im/matrix-react-sdk.git> cd matrix-react-sdk yarn link matrix-js-sdk yarn install yarn build yarn link cd .. git clone <https://gitlab.com/ponies-im/riot-web.git> cd riot-web yarn link matrix-js-sdk yarn link matrix-react-sdk yarn install yarn build yarn electron # this also launches the app
Dept of SDKs and Frameworks 🧰
Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.
Things are progressing at a fast pace, and after a few weeks of mostly pre-releases, we've now got
With this release, it is now easier than ever to work with malformed and / or custom events. Some big changes are already being planned for the next release.
We basically just deleted lots of code that is no longer needed with ruma-events 0.21.0. We also got rid of the dependency on the
urlcrate, which really didn't have a very good reasont o be there.
With this release, ruma-client-api is basically up-to-date with r0.6.0 of the matrix specification. Special thanks to @iinuwa for updating a bunch of those endpoints, and for adding support for the user-interactive authentication API!
Dept of Bots 🤖
Opsdroid home-assistant bot
After seeing the fabulous matrix live opsdroid party I decided to release my home-assistant bot.
I use this bot for triggering home-assistant automations via matrix. All commands and actions can be configured using just a config file.
Talk about it: #home-assistant-bot:fiksel.info
P.S: Thanks for Opsdroid! ❤︎
Awesome example of life imitating art! After we recorded the Matrix Live last week I resolved to get Opsdroid and Home Assistant running!
New Public Rooms 🏟
/r/AV1 discord bridged to Matrix
Anyone here is interested in AV1 (the new open video codec) and related modern codecs?
I have bridged the /r/AV1 discord to +av1:dodsorf.as
Dept of Interesting Projects 🛰
Doctor Who watchalongs
The Matrix community editions of the Doctor Who watchalongs continue! Next up on our line-up is another two-parter on Sunday (May 10th), we'll be pressing play on The Zygon Invasion at 7PM BST, then on The Zygon Inversion at 8PM BST! Joining us on Twitter will be Peter Harness (writer) & Ingrid Oliver (Petronella Osgood aka The Osgoods™︎), and maybe more 🙂
As always, to join the fun or know first-hand when the next event will happen, head over to #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!