19 KiB
+++ date = "2024-01-05" title = "This Week in Matrix 2024-01-05" path = "/blog/2024/01/05/this-week-in-matrix-2024-01-05"
[taxonomies] author = ["Thib"] category = ["This Week in Matrix"]
[extra] image = "https://matrix.org/blog/img/ETVZoJSgRuvaWwaKkdmRtBpA.png" +++
Dept of Status of Matrix 🌡️
Josh Simmons reports
We’re excited to announce the timeline for our first ever elections as we take the next big step in open governance for Matrix. We’re also introducing two new membership tiers to increase community representation by including open source projects and foundations on the Governing Board.
Read about this and more in our latest blog post.
Dept of Spec 📜
Matthew says
I dusted off MSC4016 (Streaming and resumable E2EE file transfers) over the holidays and turned it from a WIP into a full MSC, complete with draft proof-of-concept clientside implementations for the streaming attachment fileformat (hypothetical 'v3 attachments') at https://github.com/matrix-org/matrix-encrypt-attachment/pull/26 and https://github.com/matrix-org/streaming-files-test. Some of the benefits this would bring include:
- zero-latency file transfer (receiver can start decrypting & playing the download as soon as the upload begins)
- halving file-transfer duration (as you don't need to wait for the upload to finish before you start to download it)
- resumble uploads via tus
- unlimited file transfer size, given it's streamed - no longer limited to ~1GB to fit inside v8's 1.4GB heap on Web.
- O(1) memory usage for sending files, given it's streamed (great for share extensions)
It works by switching from AES-CTR to splitting the file into blocks, and encrypting each one as AES-GCM, muxing into a very simple file format which provides basic headers to allow framing for incremental decryption and random access. Given this changes the security model of attachments significantly, and given the fileformat is homemade, this MSC is now blocked on needing some serious cryptographic review before it proceeds any further :)
Matthew says
I just came across https://benstokman.me/blog/my-thoughts-on-msc-4080/ and https://benstokman.me/blog/my-new-thoughts-on-msc-4080 - an interesting discussion on the design of CryptoIDs (Client-Owned Identities - MSC4080); the cornerstone of mainstream account portability in Matrix. (Account Portability work is currently paused for a bit, but it shall return...)
Andrew Morgan (anoa) announces
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/proposals.
MSC Status
New MSCs:
- There were no new MSCs this week.
MSCs in Final Comment Period:
- No MSCs are in FCP.
Accepted MSCs:
- No MSCs were accepted this week.
Closed MSCs:
- No MSCs were closed/rejected this week.
Spec Updates
It's been a quite week from the perspective of the MSC Status list, but there has definitely been activity across various MSCs (at least according to my inbox). MSC3981 has seen discussion, as has MSC4041 and MSC2448 (we're considering switching the proposal to Thumbhashes).
More to come next week I suspect!
Dept of Servers 🏢
Synapse (website)
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
Andrew Morgan (anoa) reports
Happy New Year!
Following on from the release of v1.98.0 (the final release of 2023), as well as seasonal holidays, we expect to return to our usual 2-week release schedule. Starting with a release candidate on Tuesday, January 9th.
As a reminder, Element is switching its development on Synapse to be AGPLv3 at https://github.com/element-hq/synapse, and development from Element's side now continues there (see the blog post if you haven't already). We have done our best to migrate issues from the now-archived matrix-org/synapse repo over, as well as preserving issue and PR numbers. PRs were not migrated, and their PR number has been reserved by a stub issue instead. Huge thanks to Erik and WillL for figuring out the plan there and implementing it (and working with GitHub's heavy rate limits on issue creation!). As well as fixing up CI, packaging, etc. etc.
As things have been a bit topsy-turvy with the migration (and of course the holidays), there's not a huge list of changes to report from the development side. But we did have a few excellent community contributions.
Thanks to @dklimpel, @loelkes, @lanker, @FadhlanR, and @adamjedrzejewski for their PRs!
Expect an increased pace of developer pick right back up from next week, as folks return from holidays.
Dept of Bridges 🌉
matrix-hookshot (website)
A multi purpose multi platform bridge, formerly known as matrix-github
Half-Shot says
matrix-hookshot 5.1.1!
Hello wonderful people. I hope you all are having/had a good break. Over in bridge towers we've been working on a few holiday treats in the shape of hookshot improvements. Let me lay them down for you:
- dark mode 🌗 is now a thing! We've moved the majority of the components used in the widget to use Compound, which means a more coherent style and light/dark support. It's still early days so please log bugs as you find them. Also, the dark mode is triggered by whatever the browser believes is your operating systems preference, so currently we don't match any overrides your Matrix client might be setting.
- Lots of bug fixes around bits of widget interface not updating properly, particularly around feeds.
- Node 18 support has been dropped, as it's not long for this world and we would like to focus on Node 20/21 support.
- We have added a
list
andremove
command for webhooks.- We now tell you if your bot doesn't have enough PL to speak, meaning you don't need me to confirm it for you :)
- The GoNEB migrator has been removed, though you can still migrate in a prior release and upgrade.
You can grab the release from here
Dept of Clients 📱
Moment (website)
A Matrix client; forked from Mirage.
Maze announces
Moment release 0.7.4
I bet no one was expecting this! After 2 years, finally another release of Moment (fork of the old client Mirage)!
Not much has changed. Mostly we're just keeping up to date with dependencies. But you will notice a couple differences:
- 👍 Emoji reactions to messages are now displayed (previously not visible)
- 🖉 Edited messages are displayed properly (previously only fallback text)
- 🚀 Almost all UI animations were removed, to fit the "snappy powerclient" idea
Fractal (website)
Matrix messaging app for GNOME written in Rust.
Kévin Commaille announces
It is a new year 🎆️, and what better way to celebrate this than to release Fractal 6.rc? It has been only 2 weeks since our latest beta release, but we have been hard at work during the holidays.
Here is an excerpt:
- Matrix URIs can be opened with Fractal, it is even registered as a handler for the
matrix
scheme- Our Join Room dialog now shows some room details as a preview upon entering an identifier or URI
- The verification flow was rewritten to rely more on the Matrix Rust SDK, hopefully solving most issues that occurred before
- Room members now have a profile page that allows, among other things, to kick, ban or ignore them
- Speaking of ignoring users, the list can be managed from the account settings
- The dialog to view an event’s source was reworked to show more details about the event
… and a lot of other improvements, fixes and new translations thanks to all our contributors, and our upstream projects.
It is available to install via Flathub Beta, see the instructions in our README.
As the version implies, it should be mostly stable and we expect to only include minor improvements until the release of Fractal 6.
If one of your New Year’s resolutions is to contribute to an open source project, take your pick amongst our issues. Any help is very welcome!
Element X Android (website)
Android Matrix messenger application using the Matrix Rust Sdk and Jetpack Compose
benoit announces
Version 0.4.0 of Element X Android is live on the PlayStore. It includes new features like Read Receipt, Chat backup and Mentions, and lots of other features and bugfixes. Full details here: https://github.com/element-hq/element-x-android/releases/tag/v0.4.0. We are now focusing on performance, testing and stabilizing the application, in particular around the Rich Text Editor.
Lots of new features are planned for 2024, stay tuned!
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
Florian Heese says
Video rooms Jitsi backend deprecation
Hello from the VoIP team,
In the past months we've had a lot of progress on Element Call our scalable video and voice conferencing solution with calling built natively on Matrix and so benefitting from Matrix’s end-to-end encryption. Now is the time to slowly convert the existing video solutions to default to Element Call. We are starting with video rooms, which will be using the Element Call stack by default in the near future. If you (still) have a Jitsi video room, you will need to re-create it to make use of Element Call.
Stay tuned
Dept of SDKs and Frameworks 🧰
Rory&::LibMatrix (.NET 8 matrix bot/client library)
Emma [it/its] ⚡️ reports
Happy 2024! It's been a while since I last posted a TWIM update... Any help I can get is super appreciated!
Changes
- Lots and lots of code cleanup
- Sync deserialisation uses a compiled model now (still slow, but turns out this only affects debug builds)
- Floating point numbers are now sent as strings (since matrix doesnt like floats)
- Some internal fields were renamed to be more clear
- Join rules are now mapped
- Added utility function to get a room's avatar url as a resolved URI
- Added support for setting identity assertion on client instances (for appservices)
- Added overload to get member list as a list instead of an async enumerable
- Added GetAsObject and GetAsJson to MatrixException, to allow serialization
- Hot paths no longer use typed event content, due to the overhead of deserializing it
- Rewrote initialization of a client instance to be cleaner
And, as always:
- The code is available at cgit.rory.gay
- All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
- Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
elm-matrix-sdk
Bram says
This week, beta version 2.1.0 of the Elm SDK has been published!
The minor update is similar to version 2.0.0, where it introduces a new module
Matrix.Event
but offers no major functionality at the time. The API interactions are planned to come after implementing an exposedMatrix.Room
module for interactions with Matrix rooms.This week, I would love it if you take a look at the
Matrix.Event
module, and let me know if the documentation is sufficient and meets your requirements. I'd love to hear your feedback in the Matrix room #elm-sdk:matrix.org.
Dept of Events and Talks 🗣️
The Matrix Community met at the 37th Chaos Communication Congress
The 37th Chaos Communication Congress, sort of a school reunion of hackers, recently ended. From the 27th to the 30th of December 2023, a bunch of nerdy people met up in Hamburg (northern Germany) to discuss all the cool stuff they had been up to. Topics ranged as wide as technology, society, politics and even food hacking as well as a whole lot of other interesting things (talks can by the way be found at https://media.ccc.de/ and most are already uploaded, wow!). We had a Matrix Community Assembly there. An assembly is basically an area for like-minded people to meet up and talk about their topics, in this case Matrix.
We answered questions, sold merch, talked about Matrix-related projects, had workshops about topics like setting up Hookshot, took group photos, tapped beer via Matrix, handed out a bunch of cool new Matrix Community stickers and even fixed some Matrix servers. And Nico bridged the whole Eventphone network to his Matrix account while tinkering and got very confused.
If you have said hello at the event, then also say hello at #chaosevents:matrix.org!
Dept of Interesting Projects 🛰️
matrix-site
urp announces
An example minimal website, dynamically sourcing its content from a public matrix room that anyone can read and publish to.
It uses a custom event
io.gitlab.ugrp.post
(with two keys,title
andtext
) and provide an interface for guest and registered users to create a newpost
(cannot edit yet, tbd).The site is built in vanilla HTML, CSS and Javascript, using the @sctlib/mwc library of web-components (the new version
v0.2.1
allows to register aformTemplate
anddisplayTemplate
to be able to display and create and custom event in a room).This is all prototypes (and examples), experimenting using public matrix data outside of traditional chat clients (see also matrix-static). The objectives are to allow users to manage and display their data in environments they control, and subscribe to event feeds from sources they chose.
Dept of Guides 🧭
Josh Simmons says
New year, new homeserver! I completed a migration from managed Matrix with EMS to self-hosting using the matrix-docker-ansible-deploy project. It was a bit tricky as someone new to self-hosting Matrix, but a lot of folks helped along the way and the matrix-docker-ansible-deploy project greatly simplified the process.
I wrote up my notes in the Foundation blog in hopes that they'll be helpful, especially for other folks like me who were on small EMS plans that are being discontinued.
Matrix Federation Stats
Aine announces
collected by MatrixRooms.info - an MRS instance by etke.cc
As of today,
8389
Matrix federateable servers have been discovered by matrixrooms.info,2269
(27.0%
) of them are publishing their rooms directory over federation. The published directories contain168449
rooms.
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.
#ping:maunium.net
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank | Hostname | Median MS |
---|---|---|
1 | rom4nik.pl | 263 |
2 | utzutzutz.net | 265.5 |
3 | nerdhouse.io | 297 |
4 | maunium.net | 299 |
5 | fostered.uk | 373 |
6 | matrix.org | 454.5 |
7 | matrix.its-tps.fr | 503 |
8 | mailstation.de | 957 |
9 | mtrx.fail | 1544.5 |
10 | littlevortex.net | 2006 |
#ping-no-synapse:maunium.net
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank | Hostname | Median MS |
---|---|---|
1 | inu.is | 144 |
2 | nerdhouse.io | 158 |
3 | matrix.its-tps.fr | 160 |
4 | spqr2gang.com | 163 |
5 | frei.chat | 170 |
6 | matrix.org | 316 |
7 | matrix.maymundere.org | 897 |
8 | littlevortex.net | 1479.5 |
9 | shiftsystems.net | 24439.5 |
10 | chat.eutampieri.eu | 88738 |
That's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!