This Week in Matrix 2023-02-03
2023-02-04 โ This Week in Matrix โ Hubert Chathi๐Matrix Live
No Matrix Live today, but there will be a lot of Matrix content this weekend at FOSDEM in the Matrix devroom, and Matthew's main-track talk.
No Matrix Live today, but there will be a lot of Matrix content this weekend at FOSDEM in the Matrix devroom, and Matthew's main-track talk.
Greetings Matrix fans! We've published Synapse version 1.76 as the new stable release this week. Synapse admins are encouraged to upgrade to it at their convenience. Please take a look at the upgrade notes for any important information about upgrading.
Thib reports
The Matrix Foundation is a candidate this year again to the GSoC programme. If you intend to mentor a student around your Matrix project, please ping me (@thib:ergaster.org) in the #gsoc:matrix.org room. Your project doesn't have to be set in stone yet: we need to have a good estimate of the number of mentors and projects applying before FOSDEM (by the end of next week).
Unfortunately no Matrix Live this week!
Andrew Morgan (anoa) says
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.
๐MSC Status
New MSCs:
- There were no new MSCs this week.
MSCs in Final Comment Period:
Merged MSCs:
- No MSCs were merged this week.
๐Spec Updates
This week and the week afterwards, the Spec Core Team are mostly focused on improvements to Matrix that we'd like to show off at FOSDEM 2023 this year! That consists of MSCs related to Faster Room Joins (MSC3943 among others) and Extensible Events (MSC1767).
๐Random MSC of the Week
The random MSC of the week is... MSC3230: Spaces top level order!
This defines an algorithm and a data structure that can be used to order one's top-level list of Spaces and have that order sync across all of their clients. Rooms and spaces within a Space continue to have their order defined by an
orderkey (and failing that, theorigin_server_tsfield) in the correspondingm.space.childevent of their parent's Space's state.I won't get into the details of the algorithm here (or its criticisms), but feel free to jump into the MSC and take a look!
We published Synapse version 1.75 as the new stable release this week. Synapse admins are encouraged to upgrade to it at their convenience. It seems like the blog post for version 1.74 was eaten by Santa's reindeer, so this post will also cover changes from it.
Dandellion announces
Back in July I started a discussion on wikidata for adding a matrix space property, after much discussion in the wikidata community (lead mostly by tgr) we instead landed on a Matrix room property. This now enables slightly more accurate semantics when describing matrix rooms belonging to organizations, projects, and people on wikidata.
Wikidata is a knowledge base available under a free license and using standard machine-parsable data to add information to what is known as the "semantic web", this allows querying for information like for example: Organizations with matrix rooms
As the rest of wikimedia's projects it's open for contributions!
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://matrix.org/docs/spec/proposals.
๐MSC Status
New MSCs:
- [WIP] MSC3956: Extensible Events - Encrypted Events
- MSC3955: Extensible Events - Automated event mixin (notices)
- MSC3954: Extensible Events - Text Emotes
- MSC3953: Server capability DAG
- MSC3952: Intentional Mentions
MSCs in Final Comment Period:
- No MSCs are in FCP.
Merged MSCs:
Closed MSCs:
- MSC3852: Expose user agent information on
Device- MSC3517: "Mention" Pushrule
- Deprecated in favour of MSC3952: Intentional Mentions.
๐Spec Updates
As you can tell from the above MSC list, Extensible Events continues to charge forwards, with Travis working busily away at replicating all of the existing event functionality (plus new functionality - image albums anyone?) in a world containing Extensible Events. As always, take a look at the core MSC (MSC1767) for a background on what Extensible Events is, and why it's so exciting.
This week has also seen room version 10 become the default recommended room version in the spec! As a reminder, v10 brings the ability to have a room that's both knockable and restricted at once, as well as more strictly enforces the types of power level values.
Otherwise we've seen lots of movement in other areas of the spec. Expect to see some work done around push rules (which have historically been rather complicated and fiddly...) and notifications in the days to come.
๐Random MSC of the Week
The random MSC of the week is... MSC3779: "Owned" State Events!
I remember this MSC fondly. It was originally born out of MSC3489's need to allow any user in the room to send
m.beacon_infostate events. This can easily be achieved today by lowering the required power level ofm.beacon_infoto the default user level. However, you then run into the issue of any user being able to edit any other user'sm.beacon_infoevent!Thus this MSC attempts to modify the state events permission model so that users can "own" certain state events that they send. We already somewhat have this functionality - if you put your Matrix ID as the state ID for any state event, only you or users with a power level higher than you can edit it.
Sadly this little trick (which we use for
m.room.memberevents) doesn't work in the case of live location sharing, as the feature demands the ability to share location from multiple devices at once. Hence, trying to send twom.beacon_infoevents with the same state key would overwrite each other.This MSC attempts to expand the functionality by modifying the definition so that a user "owns" a state event if the state key starts with their Matrix ID. Problem solved... for the most part!
Do check out the MSC if you have some use cases in mind that would benefit from something like this.
Nico says
Since the last few official Matrix holiday updates didn't mention as many of the cool community projects as I would have liked, I tried to work with the community to publish a community side review of 2022 as well as possibly some small teasers of what 2023 will bring. There are a lot of very varied updates, since everyone seems to have tackled the challenge differently, but I hope you you enjoy the result as much as I did: https://blog.neko.dev/posts/matrix-year-in-review-2022.html
A few days later we also published the same blog post on matrix.org, with a few typo fixes and cleanups: https://matrix.org/blog/2023/01/03/matrix-community-year-in-review-2022
This was a bit shot notice, so I would like to extend my gratitude to everyone who contributed and took some time in probably one of the busiest periods in a year! For the same reason, I hope you can excuse if one of your favourite projects is missing. If you have anything that is sorely missing, feel free to reach out in #year-in-2022:neko.dev and maybe I can amend the blog post.
Have a great 2023 everyone!
Andrew Morgan (anoa) says
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.
๐MSC Status
New MSCs:
MSCs in Final Comment Period:
- MSC3904: Room version 10 as the default room version (merge)
- MSC3783: Fixed base64 for SAS verification (merge)
Accepted MSCs:
- MSC3938: Remove keyId from
/keysendpoints (and merged below!)Merged MSCs:
- MSC3938: Remove keyId from
/keysendpoints- MSC3706: Extensions to /_matrix/federation/v2/send_join/{roomId}/{eventId} for partial state
๐Spec Updates
After a lull from the holiday period, work has continued on different parts of the spec. MSC3706 has merged, which furthers the spec side of the work to make joining rooms faster in Matrix (see MSC3902 for the overview).
MSC3938 has also been merged to the spec. The proposal removes a deprecated
keyIdfield and cleans up the endpoint by disallowing trailing slashes.๐Random MSC of the Week
The random MSC of the week is... MSC3885: Sliding Sync Extension: To-Device messages!
Sliding Sync (MSC3575) is the next generation of sync - how Matrix clients receive new data from their homeserver. The spec side of the feature has been designed to be modular, with different extensions of spec provided different functionality. MSC3885 is one of those extensions, and defines how To-Device Messages (how different user devices talk directly to each other) would be requested by a Matrix client from the homeserver.
This proposal doesn't appear to have had too much review from the community yet - so feel free to check it out if faster Matrix clients appeal to you!
Note: This was originally posted on https://blog.neko.dev/posts/matrix-year-in-review-2022.html , which also includes some small info boxes about each projects, which got lost in the translation.
As we send off 2022 with a bang, it makes sense to look back on what we did this year and where we want to go next year. In its holiday special post, the Matrix Foundation has been focusing on the core team's work. This post is focusing on the achievements of the community outside of the Matrix Foundation.
I tried to reach out to as many people I have seen do "stuff" on Matrix and have them write something they would see fitting for a year in review. Now, most people have better things to do between christmas and new years, so I hope you can excuse if some projects are missing. Also I probably forgot like half of the interesting people... HOWEVER! I hope you still enjoy what everyone wrote up. And don't forget to check out the official Matrix Holiday Update 2022 and of course read you weekly TWIM to keep up to date with any cool projects you find.
Hi all,
2022 has been a rollercoaster of a year for Matrix.
On one hand, the network has doubled in size (44.1M to 80.3M visible matrix IDs). The wider world is having a grand awakening to the importance of decentralisation thanks to the situation at Twitter. Weโve seen an amazing number of major new players entering the Matrix ecosystem: Reddit appears to be building out new Chat functionality using Matrix; TeamSpeak announced Matrix-based chat in TS5; Discourse is working on adding Matrix support; Thunderbird launched Matrix support; Governments from Luxembourg to Ukraine have launched their own Matrix-powered chat infrastructure; and hundreds of other organisations ranging from startups to massive private & public sector entities are betting on the protocol. The European Parliament has used Matrix as a proof-point for the viability for communication interoperability between gatekeepers in the Digital Markets Act. FOSDEM 2022 ran smoothly via Matrix with over 23,000 attendees, making it the world's largest open source conference (with 70% of attendees using their own servers!). Sweden has published case studies on the benefits of Matrix for messaging interoperability. Meanwhile existing players like Germanyโs BWI have expanded their scope to providing Matrix messaging to the whole German State; Automattic is busy building Matrix plugins for Wordpress; Rocket.Chat launched federation via Matrix, Gematik has been busy progressing their TI Messenger initiative for interoperable messaging within Germanyโs healthcare industry, and Tchap in France is continuing to expand.
On the other hand, only a handful of these initiatives have resulted in funding reaching the core Matrix team. This is directly putting core Matrix development at risk. We are witnessing a classic tragedy of the commons. Weโve released all the foundational code of Matrix as permissively-licensed open source and got it to the point that anyone can successfully run it at scale themselves. The network is expanding exponentially. But in return, it transpires that the vast majority of these commercial deployments fail to contribute financially to the Matrix Foundation - whether by donating directly or supporting indirectly by working with Element, who fund the vast majority of core Matrix development today.
In short: folks love the amazing decentralised encrypted comms utopia of Matrix. But organisations also love that they can use it without having to pay anyone to develop or maintain it. This is completely unsustainable, and Element is now literally unable to fund the entirety of the Matrix Foundation on behalf of everyone else - and has had to lay off some of the folks working on the core team as a result.
Matrix Live will be back in the new year.
uhoreg says
๐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.
๐MSC Status
Merged MSCs:
MSCs in Final Comment Period:
New MSCs:
- There were no new MSCs this week.
Closed MSCs:
๐Spec Core Team
Some of the spec core team have been on holidays this week, but we still finished FCP on one MSC, and merged another to the spec. As mentioned in last week's update, progress will be slower over the holiday season, but we'll be back in the new year, working to make Matrix better.
๐Random MSC of the Week
The random MSC of the week is... MSC2783: Homeserver Migration Data Format! If you're running a homeserver using one implementation, it's currently impossible to switch to a different implementation without losing data. This MSC proposes a file format for exporting data from one implementation and importing it into another.
Conduit is a simple, fast and reliable chat server powered by Matrix
๐Conduit
If all you wanted for Christmas is a new Conduit release, then I have great news for you:
Conduit v0.5.0 just released and it contains almost everything you wanted:
- Feature: Restricted room joining !398
- Feature: Call sd-notify after init and before exit !426
- Improvement: V9 as default room version !400
- Improvement: More efficient E2EE key claiming !389
- Fix: All E2EE problems !393
- Fix: Infinite room loading !388
- Fix: Wrong notification rules !405
- Fix: Wrong notification counts !408
- Fix: Can't rejoin rooms !399
- Fix: Fluffychat login works again !391
- Fix: Starting DMs with Synapse users !390
- Fix: is_guest for appservices !401
- Fix: Invites from Dendrite !416
- Fix: Send unrecognized error for unknown endpoints !397
- Refactor: Service layer !365
Conduit is getting a lot more usable with this release, the main missing feature is backfill over federation (loading room messages from before your server joined a room). To update conduit, simply stop it, replace the binary and start it again. Also feel free to join #conduit:fachschaften.org and ask questions there
Desktop client for Matrix using Qt and C++17.
Nico announces
๐Nheko
This week we sped up search in rooms with a lot of history. We now also don't block the UI during the search of local messages anymore.
A client for matrix, the decentralized communication protocol
Tobias Fella reports
Ho ho ho Matrix fans!
It's that time of year again, and we have a special gift for all of you just in time for the holidays: Neochat now supports end-to-end encryption! This is made possible thanks to the release of libQuotient 0.7.
While this feature is still somewhat experimental, it's a big step forward in ensuring the privacy and security of your conversations. Just keep in mind that if your only logged-in client is Neochat and something goes wrong, you might lose your messages.
If you're feeling adventurous and want to try out the new end-to-end encryption feature, you can already get it from Flathub and some distros. We're also working on supporting it in our Windows, Android, and macOS builds, so stay tuned for updates.
And in the spirit of the season, here's a Christmas joke: Why was the JavaScript developer's house cold? Because he left his closure open!
Merry Christmas and happy chatting, everyone!
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
Danielle reports
๐Element Web/Desktop
Happy Holidays from us at Element! This is our last update for 2022, and itโs a good โun.
- Weโre still working on Notifications, reviewing how they work across platforms for new users, and planning the improvements weโre looking to make in the new year. While we look at this user experience holistically, weโre making some subtle changes to the product including removing the bold dot and ordering rooms by activity by default for new users.
- Weโre also continuing to improve the password reset flow so that userโs who canโt remember their passwords have a smoother experience regaining access to their account.
- And, thanks to a contribution we now have the ability to multi-select members when changing usersโ permissions in a room! Head to Room Settings > Roles & Permissions.
In labs (you can enable labs features in settings on develop.element.io or on Nightly):
- Rich text editor improvements are still coming so be sure to check them out, including updates to emoji handling and inline code formatting.
- Threads! Threads notifications and performance improvements are landing thick and fast. Weโre nearly ready to enable the feature by default and weโll be excited to do that in the new year.
- Be sure to check that youโre still in the threads beta for this release as in fixing some bugs your setting may have been changed.
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
Danielle says
๐Element iOS
For our last iOS update of 2022โฆ
Element 1.9.14 has been released to the App Store. It enables threads by default for all users and adds a notifications badge to your spaces button.
- As always, thereโs some bug squashing in this release too.
ElementX has also seen a lot of improvements this week:
- We now have support for timeline day separators and read markers
- Thereโs an improved and simpler UI for playing videos
- Connectivity indicators have been added, to show up when the network is offline
- Along with many othersโฆ
In labs:
- Voice broadcast and the rich text editor are seeing some improvements, be sure to test them out and keep us posted on your feedback.
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
Danielle announces
๐Element Android
Happy Holidays! Hereโs whatโs happened this week:
- Thereโs been some bugs and crashes keeping us hard at work this week. Along with some exciting improvements to both Element and Element X. On Element:
- There are updates to voice broadcast features and users can sign out of other sessions.
- The colours for pills have been updated and work better in both light and dark mode.
- Threads improvements have been made and weโre looking forward to enabling this feature by default for all users in the new year.
- On ElementX weโre moving ahead fast and this week focused our efforts on the Settings pages and the bug reporting functionality (including rageshake detection and screenshot management)
A Qt5 library to write cross-platform clients for Matrix
kitsune reports
๐libQuotient 0.7
It took us (yes, us - there's more than one person actively working on the project!) a very long time but libQuotient 0.7.0 is out, with a huge wall of release notes. Big, big, BIG thanks to Carl Schwan and Tobias Fella for their contributions and early adoption of this release in NeoChat (NeoChat maintained compatibility with libQuotient's development branch, along with the stable branch, for quite some time by now). A short summary of most significant things:
- Requirements: C++20, Qt 5.15 or 6.x
- E2EE code is now in beta quality, features:
- sending/receiving new messages
- getting historical messages where Megolm keys are already loaded
- encrypting/decrypting attachments
- device verification (to-device flow only, no in-room verification yet)
- Individual APIs for
m.fully_readandm.readmarkers- Client-Server API backend uses Matrix 1.5 API definitions
- A complete rewrite of the event types framework to make it truly extensible; you can now add both base classes and specific event types on the client side without touching the library code (the library still provides standard ones)
- Account registry for multi-account usage; account access tokens and pickling keys are stored with Qt Keychain
- Sticker events support
- Pinned messages support
- First-class support in Network Access Manager for
mxc:URLs, to enable showing inline images in messages- A lot of code tightening, bug fixing, performance improvements
Merry Christmas and Happy New Year to those who observe those - and hopefully I'll get to my senses and release 0.8 sooner than in another year ๐
MTRNord reports
๐Matrix Spam ML
As part of the efforts for working on detecting spam using ML I started to write a moderation bot.
This bot is written from scratch with some design decisions that hopefully will improve usability for both newcomers and seasoned admins.
These decisions are:
- If an action can be done using a reaction, then it will be done using a reaction.
- There is a private admin room and a public room for warnings, where admins issue actions. This is meant to serve as a human-readable ban list if admins want to provide this to their users.
- The bot will at a later point be able to issue reports to server admins via email and matrix easily by allowing admins to just react after doing a ban. The bot will initially ask how to contact a server if it didn't issue a report to the server before. The bot will remember the setting supplied last time for a server and allows updating the settings if they change. These reports will contain a warning that it was issued from the bot and that replies are necessary for it to be properly relayed back to the admins for further questions. These replies will end up as threads in the admin room. Also, as part of the report, the event JSON for the report will be sent with the report to allow server admins to review the case themselves. (This is still WIP)
The warnings also contain a "false positive" action. This is meant to be used to feed back into the used model for further training and improving it.
All in all, I hope to simplify the process of moderation based on what I experienced as an admin. Feel free to chime in at #matrix-spam-ml:midnightthoughts.space to suggest ideas for the bot. At the time of writing, it is still very much a prototype/demo.
The code can be found at https://github.com/MTRNord/matrix-spam-ml/tree/main/bot
Documentation can be found at: https://mtrnord.github.io/matrix-spam-ml/bot
Dept of Ping will be back next week.
There will be no TWIM next week, but we'll be back in the new year. Be sure to stop by #twim:matrix.org with your updates!