Dept of Spec 📜
Andrew Morgan (anoa) says
MSCs in Final Comment Period:
- No MSCs are in FCP.
- MSC3943: Partial joins to nameless rooms should include heroes' memberships
- MSC3783: Fixed base64 for SAS verification
In keeping with our (roughly) quarterly release schedule of the Matrix Spec, v1.6 is due to be released on February 14th. That's only four days from now! The headline features are a new Jump-to-Date Client-Server API (MSC3030) and initial work on speeding up room joins (MSC3706), along with many other fixes and clarifications to the spec text itself.
If you haven't yet seen it, Matthew's Matrix 2.0 talk at FOSDEM walks through some of the upcoming features in the spec. Each will land in subsequent, future releases of the spec. Once all have landed, we'll call that Matrix 2.0 (in name and in actual version number).
Extensible events is one such upcoming feature. While the core proposal outlining the feature (MSC1767) will land in v1.6, the smattering of MSCs which describe how various event types will work under extensible events will span multiple upcoming spec versions. Watch this space!
Random MSC of the Week
The random MSC of the week is... MSC2974: Widgets: Capabilities re-exchange!
This MSC is relatively simple; proposing a method for widgets to ask the client for additional capabilities after it has already been initialised. Doing so allows for increased security and privacy workflows, as the widget need only ask for access to certain pieces of data at the point that it needs it (rather than all up front).
A similar transition of permission granting happened in mobile devices and apps. Initially mobile apps would ask for all permissions they would need up front - which users would blindly accept. These days, mobile OS's have shifted to a model where individual permissions are requested upon attempting to complete an action in an app. This way, users have better context on the reason for the permissions request. (Oddly, browsers have yet to reach this stage with extensions - those still ask for all permissions up front.)
Do check out the proposal and its technical details if widgets are your thing!
Dept of Status of Matrix 🌡️
You can't have missed it, it was FOSDEM! And the least we can say is that it was great! The Matrix.org Foundation made several announcements, and so did our community. For a wrap-up of our in-person devroom, head to our blogpost. Part two on the online devroom is brewing!
The UK Online Safety Bill is shaping up to be a catastrophic piece of legislation, mandating clientside scanning of end-to-end-encrypted communication to attempt to intercept CSAM (child sexual abuse material). By adding the requirement for a scanner which executes ambiguous rulesets to submit encrypted content to the authorities, it would massively undermine the security of encryption: you simply wouldn't be able to trust whether content stays encrypted, or the rules used to scan it and submit it to the authorities. We wrote about it at https://element.io/blog/the-online-safety-bill-an-attack-on-encryption/ to try to sound the alarm before it's too late.
Dept of Servers 🏢
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
It's Friday again (how did that happen??) which means another week has gone by and we here at Synapse have a new release for you. This week we released v1.77.0rc1, which features:
- Improved performance when joining or sending an event in large rooms
- Experimental support for MSC3952: intentional mentions
- Fixed a bug introduced in Synapse 1.35.0 where the module API's
send_local_online_presence_towould fail to send presence updates over federation
- Improved performance of
/syncin a few situations
Second generation Matrix homeserver
Today we've released Dendrite 0.11.1, this will be the last release to contain polylith and HTTP mode. Future releases are monolith only.
- Dendrite can now be compiled against Go 1.20
- Initial store and forward support has been added
- A landing page showing that Dendrite is running has been added (contributed by LukasLJL)
/syncis now using significantly less database round trips when using Postgres, resulting in faster initial syncs, allowing larger accounts to login again
- Many under the hood pinecone improvements
- Publishing rooms is now possible again
If you have a Dendrite homeserver, staying up-to-date is highly recommended so please upgrade when you can. Otherwise, if you want to play with Dendrite without having to set up your own infrastructure, the dendrite.matrix.org homeserver is open for registration (upon completion of a CAPTCHA, so you may need to register using Element Web).
As always, please feel free to join us in #dendrite:matrix.org for related discussion.
Dept of Clients 📱
Desktop client for Matrix using Qt and C++17.
We added a quick option on login to disable animations and other chat effects as well as restructured some of those options under a new Accessibility section in the settings. Since I have no idea about accessibility, feedback is welcome!
Hydrogen is a lightweight matrix client with legacy and mobile browser support
Released Hydrogen 0.3.7! 🎺 This release adds experimental support for audio/video calls compatible with Element Call. We released it behind a feature flag (look in the settings to enable it) because some issues remain that we'll fix in the future. Happy to hear your feedback on how it is working for you, and please submit logs if you encounter any problems!
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- We promised to make stuck notifications a priority and so we have; The first fix for unclearable notifications in DMs has landed in matrix-js-sdk. 🚀
- We also managed to fix chronic issues around out-of-order resending of queued messages and soft crashes on the space panel 🙌
- Continued progress on improving our packaging progress across macOS, Windows and Linux to simplify future releases.
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- We’re working hard to release Element X to the general public but we’re not quite there yet. Hopefully we’ll have better news by this time next week
- We have spent this week touching up on things that slipped through the cracks leading up to FOSDEM. We have:
- Added automatic sliding sync proxy discovery
- Improved blockquote rendering
- Tweaked the message composer and improved room list skeletons
- Fixed one annoying crash
- Almost fixed all our forgotten UI tests
- Refactored how we use build settings throughout the app
- Fixed link detection
- and more
- Meanwhile in Element iOS, we’re continuing to improve polls, voice messages and the rich text editor
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- Element Android 1.5.24 has been released to testers. Will be pushed to production next week.
- On Element X Android, the team is working to set up the project properly, as more and more people will work on this fresh new codebase. We have made progress to setup code coverage metrics, which we want to be as high as possible, with a target of 80%. Also we are integrating the latest Rust SDK and we aim to get further dependency upgrades as smooth as possible.
Dept of SDKs and Frameworks 🧰
Although having lost a lot of popularity in the last few years, Elm has a great performance and tiny asset size, which means great Matrix support for tiny browsers like on KaiOS or for small-size projects and games that wish to use Matrix as a simple back-end.
I hope to release a version v1.0.0 in the near future, but I wanted to share my first breakthrough as I managed to write a simple program that sends message (and state) events in versions that the homeserver supports. See the image below!
Support will mostly be from spec version v1.2 and on, but some legacy endpoints will remain available. You can find the project on GitHub for now. Hopefully I'll have more to show you in the next few weeks!
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
This week in the Rust SDK team is a bit special. We are making our farewells to Ben, as he is leaving Element. He will continue to hang around as its new gig involves Matrix, feel free to take a glance at Effektio. Once our tears have dried, we carried on with our current main focus: Sliding Sync, and Crypto. The Sliding Sync client has seen improvements in terms of documentation, along with some clean ups, and stabilisation patches (1, 2, 3, 4, 5…). The team has decided it's time to write a small testing framework to improve the safety of this code specifically. Indeed, it's quite challenging to test it, and as it's a fundamental piece of the user experience in ElementX and other Matrix clients, there is no debate to have: the quality requirements are high. The Crypto part now. The Crypto Store has been refactored a little bit (1, 2, 3, 4…). There is other patches to handle inconsistencies if they happen, and to always mark our own device as verified (1, 2). Apart from that, they have been many work on setting and exposing OpenTelemetry logs for multiple clients and platforms. It will help the teams to coordinate on bugs when they happen. Finally, a new release of the
matrix-sdk-crypto-jshas landed: v0.1.0-alpha.4. Outside Matrix itself, we have a merge window for the uniffi-async project, along with more contributions to improve errors (1 and 2). It means that the bindings to Swift and Kotlin will soon support native Rust async functions. More contributions are in the pipe to generate documentations for the foreign languages (Swift, Kotlin etc.) directly from Rust documentations. I will conclude by saying that we were also quite busy preparing the demos for FOSDEM. It was a huge success and it makes us extremely happy :-).
Dept of Ops 🛠
Matrix server setup using Ansible and Docker
Thanks to FSG-Cat, the playbook can now install and configure the Draupnir moderation tool (bot). Draupnir is a fork of Mjolnir (which the playbook has supported for a long time) maintained by Mjolnir's former lead developer.
Additional details are available in Setting up Draupnir.
Additional details are available in the Authenticate using Matrix OpenID (Auth-Type 'matrix').
Dept of Services 🚀
t2bot.io seeking donations
Since 2017, t2bot.io has provided communities on Matrix bots and bridges to use for free, and while there’s no plan to charge for access, the cost of running the service is about $12k USD/year just to exist.
Since August 2020, t2bot.io’s primary source of funding has been from the Matrix.org Foundation, though with the Foundation’s latest focus on raising funds for itself, it feels like the right thing to do is get t2bot.io independently funded.
If you are able, please donate to t2bot.io here. All donations go towards the cost of operation, with any excess (if t2bot.io is so lucky…) going towards hiring developers to work on/build bridges as well as into the Foundation to thank them for keeping t2bot.io online all these years.
Currently, t2bot.io serves 86 thousand Discord and Telegram communities, bridging 325 thousand users each month, and 11.3 million users since 2017. There’s also 962 thousand rooms with a t2bot.io user in them, leaving only about 94 thousand rooms as archived, across 25 thousand different homeservers.
Operating at this scale requires, well, $12k USD per year: if you’re able, please consider donating. There’s also a question of whether t2bot.io should even be operating at this scale in the first place: Matrix is all about decentralization and owning your own conversations, which naturally means there should be many smaller bridges for communities or even a discord.com-provided bridge for everyone to use. For the time being though, t2bot.io is offered as a convenience and aims to adapt itself as needed to keep providing value.
Questions, concerns, etc are best discussed in #help:t2bot.io on Matrix. Nearly every detail of how t2bot.io works is intended to be shared openly, which includes the financial aspect of running the service, so ask away 🙂
Dept of Bots 🤖
All of the parameters for upcoming gaming events can now be modified by the event host, using
!f events modify! In addition, there is a new
!f informationcommand, which aims to provide useful details on specific topics (often directly related to the Friendly Linux Players community).
Outside of new features, I took some initial steps to make contributing easier:
- Moved many potential future features or improvements from TODO comments/my brain to the issue tracker.
- Labelled these issues, including a good for new contributors label, in the hopes that those with less experience or confidence can get more comfortable by taking small steps.
- Created a dedicated Matrix room for discussing the bot:
Alejandro Herrera reports
A very simple bot that can join a matrix account and listen to audio messages and use OpenAI's Whisper to convert what you say into text.
Dept of Events and Talks 🗣️
Sumner Evans reports
I had a fantastic time at FOSDEM and the Matrix Community Meetup! I attended talks in the Matrix devroom as well as the Go and NixOS devrooms and I have a long list of cool projects to look into. But most importantly, I got to spend time with everyone in the amazing Matrix community. Want all the juicy details about my experience at FOSDEM? Check out my FOSDEM blog post!
While we expected the need for everyone to just meet and exchange their ideas, we still wanted to provide a framework for things to get going. After a "quick" introductory round of everyone presenting themselves and their connection to Matrix, constantly expanding the circle around the table as more people kept pouring through the pink gate, we built a timetable of topics from the introduction using the BarCamp Widget developed and slightly modified for the physical BarCamp use case by Nordeck.
Having this way to find people to discuss a topic was a great way to get started, and the discussions quickly took their own directions from there. Highlights included discussions about topics very dear to some people and finding others who are also interested, deep dives into the protocol, brainstorming, or even meeting random strangers on the (notoriously packed) tram to have technical discussions with. A lot of online friends connected, a lot of new friends were made, and even some old friends got to reconnect. It felt very familiar very quickly and leaving Ananace feeling "I've spoken to more friendly and passionate people this last week than I've done for the last six months, that's for certain." DMs were opened and master keys were cross signed thanks to IRL QR code scanning. Drinks were drunk, Pizza was eaten, and Swedish candy was appreciated to the fullest extent. The scenery only added to the real REAL hackerspace experience, having to
make a callping on Matrix to have someone open the gate to the "desolated courtyard, surrounded by crumbling buildings with broken windows" and a door literally labeled "A".
As the organisers, Yan and I (HarHarLinks) want to express our gratitude to the incredibly hospitable people from Hackerspace Brussels (HSBXL), especially Jurgen who helped a lot with prep in advance and BeachyHead who spent the whole day accommodating the sudden wave of arriving Matrix enthusiasts. Further, we would like to thank Famedly and Nordeck who's generosity enabled us to provide free-as-in-beer food 🍕 and drinks 🍻 to everyone at the event through their financial support.
We are overjoyed by the incredible response by the community. Most of the people came there for a reason, and that was Matrix. And then they used the time to have some good time together. It was nice that we could help satisfy the huge demand for a get-together in the meat-space with this event. We look forward to more physical meetups in the future (watch this space!). Personally I had the best FOSDEM ever, and not just because it was my first one! 😉
Don't miss the retro blog posts by Sumner and about the first physical Matrix Devroom on the Matrix.org blog. Also keep an eye out for upcoming further coverage about the meetup and the online devroom on matrix.org/blog!
Dept of Interesting Projects 🛰️
matrix-social is a social media client powered by Matrix.
We're looking for a better name for this project. If anyone would like to contribute to a name, logo, or other branding for matrix-social, please let us know at https://codeberg.org/imbev/matrix-social/issues/3 or https://matrix.to/#/#matrix-social:matrix.org
Dept of Ping
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
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!