Matrix Live 🎙
This week my guest is Element's Kat who conducted various Community Testing Sessions. If you want to learn more about it, why Kat is conducting them, and how you can help, have a look at it!
Dept of Social Good 🙆
TL;DR: Europe is close to officially regulating big corporations and forcing them to open their silos via the Digital Markets Act. Element joined forces with other companies to make sure that the members of the European Commission about to vote on the regulation knew how important it is.
Matrix was created to break the silos, as an interoperable layer for all communications. We wanted to ensure people had the ability to choose where their data is stored, and had the choice of interface to access them. This was also a good way to enable better competition and innovation in the communication space, forcing the players to compete on value add. But whilst Matrix is already a 39M users open network in itself, it could be even better if the bigger silos decided to open up and participate into it.
In December last year, as part of the Digital Markets Act (DMA), the European Commission proposed to update the competition law for digital markets with rules mandating ‘gatekeeping’ platforms to open up, in order to enable innovation and data sovereignty.
This move is so aligned with Matrix and Element’s mission, that Element joined over twenty other organisations to launch the Coalition for Competitive Digital Markets on Tuesday the 26th. The coalition supports stronger rules for large online platforms in the DMA, calling for amendments to it to make sure that major services offer a public API to interact with their core services and to ban the pre-installation and default setting of core platform apps.
Matrix is a perfect example of how technology can thrive through openness and collaboration. We will bring our experiences of using federated and decentralised technologies to MEPs and Council members, in the hope for a regulatory framework which supports European innovation, competition and interoperability.
For more information and to sign our open letter, check out our website: competitivedigitalmarkets.eu
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://spec.matrix.org/unstable/proposals.
- 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:
- MSC2946: Spaces Summary (merge)
- MSC3442: move the
- MSC3288: Add room type to
- MSC3069: Allow guests to use /account/whoami
Matrix 1.1 is just around the corner! The team continues to work hard on getting the infrastructure surrounding the new release process set up, as well as reviewing MSCs, including the ones you can see above!
The current speculative release date is in about a week or two. Keep your eyes peeled!
Random Spec of the Week
The random spec of the week is... MSC3192: Batch state endpoint!
This is one of those MSCs that will likely be sorely needed at some point in time, but currently hasn't gotten a lot of attention. I can think of all sorts of usecases for this (on top of the many that the MSC puts forwards). Go ahead and give it a read!
Dept of Servers 🏢
Synapse is the reference homeserver for Matrix
Over the weekend, one of the servers backing matrix.org suffered a hardware failure, leading to around half an hour of downtime as we failed over to another system. Remediating and monitoring that has been the focus of much of the Synapse team over the past week.
We also shipped a release candidate for Synapse 1.46, due for formal release next week. Notably, we believe this solves a performance regression which was introduced in Synapse 1.44. If you've been experiencing long hangs or other periods of unresponsiveness, please try upgrading to
1.46.0rc1and let us know if it resolves your issues.
The Synapse team has also decided to aim for building a rough prototype of MSC2775: Lazy loading over federation by the end of the year, in hopes that this will pave the way to extremely fast joins of large rooms.
We're also continuing to work on static type checking in our projects: As of today, Sydent passes
mypy --strict! We hope to write about what we've learned in the near future.
Here's an addendum about Sydent. We can see the results of our efforts visually, thanks to mypy's reporting options. Two different metrics show increasing coverage since our typing efforts began in the summer. The grey strip shows the last fortnight's sprint in particular.
Homeserver Deployment 📥️
Helm Chart ↗
Matrix Kubernetes applications packaged into helm charts
And as always, this week brings with it updates to my Helm Charts - with element-web being updated to 1.9.3
Dept of Bridges 🌉
MAM support for Bifröst
One of the shortfalls facing XMPP users of the Bifröst Matrix bridge is the lack of support for Message Archive Management (MAM), which allows XMPP users to retrieve messages sent when they are offline, when they come online next time. Sunday Nkwuda and Olatunji Ajayi, with help from Pirate Praveen, are planning on writing support for MAM in XMPP.js (the XMPP library that Bifrost uses), and then adding MAM support to Bifröst. Since this requires some dedicated full-time effort, they are fundraising to support this project at https://opencollective.com/mam-plugin-for-xmppjs. Many thanks to the XMPP Standards Foundation for serving as fiscal host for the fundraising.
Heisenbridge is a bouncer-style Matrix IRC bridge.
Release v1.4.0 🥳
- Free form AUTOCMD after joining a channel, per channel
- Automatic rejoin on invite or kick (invite enabled by default)
- AVATAR network room command to set avatars for IRC users (admin only)
- WHOIS room command for PMs, PART for channels
- Add ROOM command in network room to run channel room commands safely
- Move PLUMBCFG stuff under ROOM command
A smaller release this time around which consists mostly of QoL stuff to make things a little easier. IdleRPG users can now rejoice and login to your character automatically with channel AUTOCMD when joining on reconnect as what's more important: running a bridge to engage in deep conversations or sit in a channel doing nothing?
Plumb users need to use the new generic ROOM command in network rooms to configure plumbs now that PLUMBCFG has been removed.
Dept of Clients 📱
Hydrogen is a lightweight matrix client with legacy and mobile browser support
Several bug fix releases this week, and hope to get out another release tonight with support for dehydrated devices, which should prevent you from missing any messages while you are logged out of all your devices.
Element Web/Desktop ↗
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
Our next community testing session on Web will be at 16:30 - 18:00 BST on Wednesday, 3rd November. We will be focusing on voice messages and calls. Join us in #element-community-testing:matrix.org to find out more and help out.
- Released element Web 1.9.3
- Added sourcemap support to the sentry telemetry sent with rageshakes, and added support for opt-in automatic sentry reporting when errors occur as a labs flag
- We’ve been working on making notifications and matrix.to work correctly with threads in Element Web. Our MSC continues to progress, receiving feedback from the Spec Core Team this week, and we’ve started to plan how to test the feature.
- We’re also exploring more intuitive ways to lay out and customise Spaces on the web.
Element iOS ↗
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- Fix memory management issues
- Rewrite text composer
- Depreciate MatrixKit
- Implement PostHog analytics
- Improve media sizing in the share extension
- Improve the crypto store
- We’re continuing to flesh out creating & managing Spaces on iOS.
Element Android ↗
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- Element Android 1.3.6 is on its way to the PlayStore but Google is taking looooong time to review. Release candidate 1.3.7 is scheduled to next Wednesday
- Replacing Rx by coroutines Flow is nearly there, and will be merged on develop after the release 1.3.7.
- Besides that we have started to work on Threads and on Polls.
- Some changes have been made on the SDK API to suit SDK users regarding the AuthenticationService. They will be available in SDK 1.3.7 (next Wednesday).
- And as always, we work to improve the performance of the application and of the SDK, as well as fixing bugs here and there.
- We added two (opt-in) lab options:
- Automatic bug report
- Structured login / open telemetry (offline)
- On the crypto side, we're making progress on Android Rust SDK, room shields and key backups
Last week we had a successful and productive community testing session on Android where we found many issues, including 21 defects, which are already being addressed by product, designers and developers.
Cinny is a Matrix client focused on simplicity, elegance and security
- Add support for SSO login
- Implement Profile Viewer
- Add search in People drawer
- Add option to filter People in People Drawer
- Fix make both user admin on DM create
- Fix unable to send msg in DM from IRC users
- Fixed inconsistent search in emojiboard
- Fix profile picture inconsistency
- Fix wildcard matching in emoji search
- Fix message menu placement on large screen
- Fix autofocus in msg input upon clicking emojis in emojiboard.
Find more about Cinny at https://cinny.in/ Join our channel at: #cinny:matrix.org Github: https://github.com/ajbura/cinny Twitter: https://twitter.com/@cinnyapp
Dept of SDKs and Frameworks 🧰
AIOMatrix is a simple Matrix bot library for creating bots.
Today has been released aiomatrix 0.2.0
- almost full support of client-server API r0.6.1
- handlers for any event
- sending messages
- editing messages
- support for multiple accounts
- extendable filters system
Halcyon is an easy to use matrix library inspired by discord.py
Hello again! Halcyon is a Matrix bot library created with the intention of being easy to install and use. This release brought some new non-breaking features:
- Added markdown package as a dependency, used in formatted messages
- Added support for the following message types: TEXT, EMOTE, NOTICE, IMAGE, FILE, AUDIO, VIDEO
- Added support for downloading and uploading MXCs (matrix media)
- Fixed a reported import issue when trying to use the CLI (Thanks @Josh)
- Added more documentation and a new example in usage.md
More info at on the project at https://github.com/WesR/Halcyon Chat with us over in #halcyon:blackline.xyz
Dept of Events and Talks 🗣️
Qt World Summit '21
Tobias Fella and I are going to give an introductory-level talk at Qt World Summit '21 next Wednesday (3-Nov) about data encryption in Qt applications, with me giving
my usual general bla-blahigh-level overview and then Tobias talking about really specific stuff like Base64using
std::variantand a bunch of Qt classes to make your encryption-using code less of spaghetti and more of good-looking modern C++. The talk will be at 15:30 CET/CDT (once for EMEA/APAC and once for Americas), Platform track. Advance registration is necessary. In fact, the talks are pre-recorded but both of us will be online during the session and shortly after so please come around to make sure The Qt Company gets the message and considers adding Quotient as another module to Qt (ok, that's just a dream for now but who knows...)
Heads up for those in Berlin. You're welcome to join us Tuesday, 2nd Nov at 7:00 PM chatting about Matrix development and hosting. We're going to meet in person at c-base. In compliance with the hackerspace's house rules this is a strict 2G event.
If possible, join our #matrix-berlin:matrix.org room.
Dept of Interesting Projects 🛰️
I work on Collabs, a library for making decentralized collaborative apps, and we have some demos that run on Matrix! E.g., in a widget-capable client like Element, send the message:
to add a collaborative text editor widget. (Fair warning: loading and saving is flaky, so don't type anything you can't afford to lose.)
All collaboration happens using messages sent to the Matrix room. So, you're not dependent on any external service provider, and the document is end-to-end encrypted if your room is.
We have more demos here, with instructions on how to use them in a widget. You can follow those same instructions to run your own Collabs apps (Getting Started Guide), without needing to host any servers yourself!
If you want to learn more about Collabs and see an app running on Matrix, check out my Strange Loop talk: https://www.youtube.com/watch?v=Exr0iY_D-vw&t=3s. The library is in an alpha state and not yet ready for production use, but we'll be improving it steadily over the next year.
Dept of Built on Matrix 🏗️
In FediJam feedback we were asked to explore federated gaming. So, for my third FediJam I made a dead-simple prototype of a game using Matrix not for chat, but for multiplayer.
Behold, the Federated Triangle of Doom. Game creates a chat. Any message with 'boom' posted into there spawns the Red Triangle of malice. Yes, literally just it.
Behind the scenes, it uses Godot Engine, with godot-python to make it python-capable. To connect via Matrix, it leverages matrix-nio python module.
As a server, any Matrix server without captcha/email for registration will do!
For simple local tests, I included conduit with the Linux release.
Source Code (/blog/img/MIT)
Dept of Jobs 💰️
Element is on the hunt for more VoIP and VR developers to help us build next-gen native Matrix video conferencing and VR/metaverse experiences on top of Matrix! If you believe the future of the metaverse should be free/libre, standards-based, open and equitable, come join the resistance! https://apply.workable.com/elementio/j/25BB112FBD/
Dept of Ping 🏓
Join #ping-no-synapse: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!