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.
Not a lot to say this week. The Spec Core Team is humming along with review, while we also wait for progress of various MSCs from their authors. The full list of what's in flight can be found in this week's Tuesday ping in the Office of the Spec Core Team room.
IETF and MIMI work is still continuing on in the background. Look out for a TWIM in the near future for an update to progress on that front!
This MSC defines an endpoint to send lots of state (max 50 at once) into a room in one go. This sounds useful for all sorts of tasks, and it's a wonder that it hasn't come up before.
If that sounds like an endpoint you'd like to go, give feedback on the MSC linked above!
and much more. If you'd like to take a deep dive into the changes, you can find the release notes here and as always, if you encounter a bug feel free to report it at https://github.com/matrix-org/synapse/issues/new/choose.
One more iteration on the way to the final release is published. Two biggest changes are in dependencies: unlike the previous iteration that used Qt 5 and libQuotient 0.7.x, beta 3 requires Qt 6 and libQuotient 0.8.x. On top, AppImages for Linux are no more published, giving way to Flatpak. If you want Qt 5 or AppImages back, say so in #quaternion:matrix.org, otherwise the final release will cement these decisions!
Not many changes in the functionality otherwise; but you can now switch E2EE on or off per-account at runtime, rather than across the board at compile time. Check out the release notes at the usual place; and if you're on Linux and want a flatpak, it's already there in the beta channel at Flathub.
This week we have been polishing the app, getting rid of lots of minor issues so the app is as stable as possible, improving the performance of the timeline, fixing bugs in notifications and improving the overall UX of the app.
There is now an Element X Android room where discussion is happening for those brave enough to either build their own versions of the app or download them from our CI! Just keep in mind that it's still a work in progress and the apks are built in debug mode so performance can be quite bad especially when scrolling, as they don't have any performance optimizations and contain lots of debug tooling.
We’re continuing to invest into fixing stuck notification issues. This week, we’ve landed a fix on develop that sends read receipts for thread roots on the main timeline rather than in the thread (which Synapse rejects). We’ve also opened another MSC to clarify what timeline we think thread roots belong in to to help with this problem in future.
Our notification settings work is set up for shipping in labs next week
On the Compound side we’ve made fix-ups around the typography update and landed a first version of accessible colour updates on develop. Meanwhile, we’ve started exploring the future of theming.
Last but not least, we merged the OIDC-native login functionality and have switched to a different OIDC library do help facilitate upcoming changes
This week we disabled the Share and Siri extensions along with replying from a notification to work around a bug where our current use of app extensions causes corruption in the Rust crypto layer. Sharing is still available from within the app and Siri can be invoked from the keyboard, but we are aware this isn’t ideal.
matrix-nio 0.21.0
A new version of matrix-nio has been released, with some fantastic new features, and some breaking changes! Full details can be found in the changelog, but as for some highlights:
Adding support for Space Parent/Child Events
Adding support for knocking on rooms, and enabling room knocking on existing rooms
Switching from logbook to the standard library logging module
The next Trixnity version has been released. It includes some major performance and internal improvements as well as some cool new features.
performance improvements:
lots of performance improvements in the cache leading to faster sync processing and significant less RAM usage
prevent unnecessary reads from repository
small performance improvements for realm
features:
allow to forget rooms (delete room specific content from database and cache) -> rewrite of the cache to allow indexes
PowerLevelsEventContent with type safe "events"-field (e. g. allow content.events.get<MessageEventContent>() additionally to the old way content.events["m.room.message"])
Introduce module trixnity-crypto-core and replace native crypto algorithms using native APIs (CoreCrypto on apple and OpenSSL on linux/mingw targets)
Own SecureRandom implementation using native APIs
MatrixClient handles own CoroutineScope
upgrade logging (requires SLF4J 2)
unified test suite for repositories (it makes adding new repository implementations significantly less time-consuming, because no tests need to be written)
The bot gained a bit more reliability, as in-room event reminders are now sent as expected, even if the bot was restarted just before the event reminder was supposed to be triggered. Before, reminder logic was calculated based on the current local time, not the time that the event was actually scheduled at, and that would prevent some notifications from being sent.
The GitLab project path was also changed, so that it now exists within the bots subgroup of the Friendly Linux Players group. The main reason for this was to create a separate documentation project that can live alongside the main project in the hierarchy. The documentation is not too interesting to look at yet, but there are plans to provide details within them on how to use the bot in Matrix, run the bot, and contribute to the bot and/or documentation.
On the website side, some server-side and client-side caching, related to events (scheduled by the bot), has been implemented/fixed. This results in load times that are potentially multiple orders of magnitude faster! I'm really glad that I got around to addressing this, as the site feels super snappy now, in comparison.
That's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!
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.
Work to use Matrix as the standard for interoperable messaging at the IETF is continuing in full stride. At IETF 117 (July 22nd - 28th, 2023) we'll be talking about the precise requirements of an interoperable protocol, and encouraging Matrix be that protocol. Linearized Matrix is our proposal for the room model, with more updates expected in the coming days ahead of the submission deadline, meanwhile yours truly is working on using MSC1767 Extensible Events for a content format. Watch this space for updates leading up to IETF 117 🙂
We're also well on track to test interoperability of different Linearized Matrix implementations at the Hackathon - get in touch with us via the #sct-office:matrix.org if you're working on such an implementation so we can coordinate details. It's not too late to get started either; Linearized Matrix itself is relatively simple to implement compared to the full capability of Matrix, by design.
This MSC provides a means of establishing a trusted, secure communications channel across a potentially untrusted network. Subsequent MSCs could then use this channel to transfer details such as login tokens or key backup credentials in the context of setting up a new Matrix device. MSC3906 is one proposal that takes advantage of this.
This is just one piece of work building on the tree of MSCs supporting the shift of authentication in Matrix from home-brewed to OIDC. See https://areweoidcyet.com/ for more details on that effort.
This week we released 1.87.0. As a reminder, please note that this will be
the last release of Synapse that is compatible with Python 3.7 and earlier. Now on to the highlights:
Improve /messages response time by avoiding backfill when we already have messages to returns
Fix a long-standing bug where media files were served in an unsafe manner
Fix joining rooms through aliases where the alias server isn't a real homeserver
Avoid invalidating a cache that was just prefilled
This week we released v0.13.1. Here are a few of the highlights:
A long-standing "off-by-one" error has been fixed, which could result in state resets
Roomserver Prometheus Metrics are available again
Check out the release notes for the full set of changes!
As always, feel free to stop by #dendrite:matrix.org to join in on the discussion and if you encounter a bug make sure to report it here.
It's happening! I finally managed to implement some highly requested features in Conduit like the hierarchy and relations endpoints to finally allow users to:
Explore spaces locally and over federation
Read and write thread messages
View edit history
I also worked on some other improvements to make the overall experience smoother:
Significant memory usage improvement, smaller instances can be at 150MB or lower, bigger instances around 1GB. Try it out on your own Conduit instance and join #conduit:fachschaften.org to tell us what you find.
Fixed a state resolution bug. There should be fewer soft failing errors now.
Randomize server join order
Last but not least, I started working on Element X support for Conduit by implementing sliding sync. This is a bigger task, but a very basic version is already working: https://mastodon.social/@timokoesters/110665620551657280
Element X developers should prepare for native sliding sync support in the not-too-distant future and should try to detect this functionality instead of requiring a client well known file.
Libera.Chat asked the Matrix.org Foundation to "deportal" the bridge, only leaving plumbed rooms active by July 31st. This means the bridge could stop working if your room is not "plumbed". Plumbed? Portalled? What are we even talking about?
I wrote a guide to help you make sure the rooms you maintain will keep bridging after July 1st, and you can find it here.
Many bugs when joining and leaving rooms has been fixed in chooj. Furthermore, many bug fixes and improvements happened in the underlying UI library, KaiUIng. And finally, a small guide has been added to chooj which shows up for the first launch and explains the Matrix network and its capabilities. I am still looking for sponsors to financially help with the development of the project. I am also considering publishing chooj to KaiStore. Meanwhile, you can download chooj from the BananaHackers webstore and try sideloading it, given that your KaiOS feature phone supports that.
I've had a lot of people reach out the last few weeks, that they wanted to know who can see their messages and how to control that. As a result I finally got around to implementing a history visibility selector in Nheko: You can toggle between anybody being able to see your messages without joining the room you sent them in or restrict visibility to joined users only. In the latter case you can then select visibility of past messages for joined members between all the past messages, from the invite on or from their join going forward. These are the standard Matrix history visibility rules, but we try to represent them a bit differently to make it clearer, what they mean. I hope this makes them a bit easier to understand.
However there are ways around visibility rules. If a room selects to not allow users to see its messages, unless the user joins the room, a user could possibly use a bot to proxy the messages and make them either visible or possibly even searchable to users, that haven't joined the room. This sometimes happens on Mastodon and you basically have 2 options to prevent it: approve each user individually after verifying they are not a bot or delete your messages after some time to prevent how much can be read by a bot.
The former is already available in Nheko for quite some time. You can set any room to require knocking and a user will have to knock before being allowed to join the room and view messages. You can even combine that with restricted joins, that allow a user of some room to join another room without knocking, which significantly reduces the overhead.
However knocking isn't always a great solution, especially if you don't control the room or it really should be public. So we also implement an option for automatically expiring messages now. This is EXPERIMENTAL and might cause significant strain on your homeserver when first enabled (and possibly even after that), as such please be careful and apply good judgement. Originally we were waiting for this to be part of the Matrix specification eventually and have the server handle the deletion more efficiently and with less load. However the effort on multiple of those MSCs has stalled and as such we now have a client-side solution until we can rely on server support for this. You can now in the settings of each room select when your old messages should be deleted (after some time or by only keeping a specific total of messages). You then enable the background job in the general settings and Nheko will periodically check for messages to delete and then delete them. In theory you can enable this also globally for all rooms, however Nheko does not expose a button for that yet, as this again is still experimental and might come with performance issues or worse. You can however enable it manually if you write the configuration by hand.
Apart from that we are still stabilizing the qt6 port. LorenDB fixed the Recaptcha and also qmlified that dialog (finally). And Satellia fixed some minor issue, where the focus didn't return properly to the input bar after sending files.
I hope this update was interesting. It does tick of some items I was always to lazy to work on, so I guess that is nice to have it over with! Have a nice and enjoyable weekend!
This week on the Element X Android team we’ve been implementing improvements to the room list loading time, invites and many more. Other new updates include,
Being able to swipe in order to start a reply to someone from the timeline
Having message actions responsive to the type of event or message
Our long-awaited improvements to the notifications settings screens are now available in labs! In the coming weeks we’ll be making the new view the default experience so let us know if you have feedback on it.
Other work on notifications continues with our team heads down on fixing stuck notifications issues. We’ve started drafting a new MSC we hope will make improvements - watch this space for more news.
Along with this our other projects have been making great progress, for example our more strategic improvements to accessibility are starting to take shape and you’ll soon see the typeface and colours in Element reflect that.
Our integration with OIDC is making massive strides forwards. We’re currently testing the login flow and work on logout is well underway.
It’s a big week for the Element X team on iOS as we’ve released the beta app live to the App Store! More info in our blog post. 🚀
While there’s a lot we’re still working on building, here’s my personal highlights:
Location sharing: Being able to send your location and view others’ locations in the timeline, being able to send a pin location, along with viewing it all in dark mode!
Notifications: We’re building out the settings screens, in app messages, push notifications etc. are all in the works and looking really great. You’ll be able to experience it soon.
Remember; keep checking in for updates and keep sending over your feedback!
The Element VoIP team are making a major update to Element Call with our release of a new version backed by the LiveKit SDK and SFU. This means that our SPA at call.element.io will now support much larger calls; 100 participants comfortably and potentially many more.
To support that, we have delivered new UI for large calls, with a scrolling grid that you can rearrange to your liking, dragging and dropping tiles and expanding them as you like.
It's worth noting that call.element.io will temporarily no longer be encrypted after this update, but we will be bringing back end to end encryption within the next few weeks.
This release requires running a LiveKit SFU and also a tiny service that will issue tokens for that SFU. Note that we don't currently offer a publicly available implementation of the latter. This means that if you currently run Element Call, it is probably advisable to remain on the 0.3.x releases rather than upgrade at this point.
The greeting feature of the bot has been improved to detect when a user is rejoining the room (as their previous membership event was to leave), and to provide a much shorter "welcome back" message in those cases.
On the community website side, events scheduled by the bot now have schema.org event markup. This allows for events to potentially have fancy UI in search engines!
If anyone finds it interesting, some time ago I made "Yarrosco" : https://github.com/deavid/yarrosco
A simple app to get chats from Matrix and Twitch into OBS when streaming made in Rust.
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.
You might have seen the news already, but the Matrix.org Foundation is pleased to welcome the first public sector organisation as part of its membership: Gematik joined us as a Silver member!
Whether you're an individual, a business, a non-profit, a public sector organisation, you can join the Matrix.org Foundation as a member to support us in our mission and help us steer Matrix in the right direction!
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.
Room version 11 has been accepted! A gentle reminder for Matrix client and homeserver implementations to update and incorporate the new changes. The full list can be found in the MSC itself (mainly changes to redaction semantics and related fields).
While this means that room version 11 is now considered stable, it's not recommended that homeserver implementations set their default room version for newly created rooms to 11 yet. We recommend waiting a few months for client and other homeserver implementations to gain support first.
Matrix has a concept of shared moderation policy lists - where you can create a room containing moderation actions that followers can apply to their own rooms, such as banning a particular known bad actor.
This MSC proposes to expand the list of possible types of recommendations with that of muting a user (removing a user's ability to send messages in a room). This could be especially useful if you moderate many, many rooms and have automation to apply moderation actions based off of a policy list room.
If such a policy change sounds useful to you, why not give the MSC a review and leave some feedback!
I've updated the Dash/Zeal Docset which you can use to read the Matrix Spec offline.
If you use Dash and installed it through the application's settings, an update should be available now. If you use Zeal, check out the update procedure on gitlab.com.
This week we released 1.87.0rc1. Please note that this will be the last release of Synapse that is compatible with Python3.7
and earlier. Now on to the highlights:
Add spam checker module API for logins
Fix forgotten rooms missing from initial sync after rejoining them
Remove experimental MSC2716 implementation to incrementally import history into existing rooms.
Fix a bug introduced in 1.57.0 where the wrong table would be locked on updating database rows when using SQLite as the database backend
and much more. If you'd like to take a deep dive into the changes, you can find the release notes here and as always, if you encounter a bug feel free to report it at https://github.com/matrix-org/synapse/issues/new/choose.
Huge refactoring of Dendrite and gomatrixserverlib to pave the way for easier experimentation
A potential state reset when joining the same room multiple times in short sequence has been fixed
Several "membership" (e.g /kick, /ban) endpoints are using less heavy database queries to check if the user is allowed to perform this action
/3pid endpoints are now available on /v3 instead of the /unstable prefix
Support for connecting to appservices listening on unix sockets has been added (contributed by cyberb)
Admin APIs for token authenticated registration have been added (contributed by santhoshivan23)
...and a whole lot more. Check out the release notes for the full set of changes!
As always, feel free to stop by #dendrite:matrix.org to join in on the discussion and if you encounter a bug make sure to report it here.
After long time of inactivity in chooj's repo because I was busy with other stuff, we now have many improvements. Two most important changes are not user facing yet very important for development of chooj in the long term. First, the UI stuff have their own repository and are a separate NPM library. Second, I have almost converted the codebase from Javascript to Typescript. There are other small changes. Many bugs have been fixed. If you had problem logging in with chooj on your feature phone, give the build specified in this issue a try. It should have solved the bug. And please let me know if it fixes the problem, or if you have any other issue.
Element X Android is making big progress to become the fastest Element application ever developed! The application is now using the new Room List API from the Matrix SDK.
The application is getting lots of UI / UX polishment, as we are integrating the latest design.
Last but not least, the app has been renamed to “Element X” (with a space) and got a brand new icon!
We've made further steps towards fixing stuck notifications on nightly. The unread dot is now more reliable -- especially when used with the "mark room as read" functionality. We've also fixed reactions gone missing when the reacted to event isn't yet synced. Our plan ahead consists of re-triaging existing issues to surface cases we haven't yet accounted for. Afterwards we'll push ahead with MSC3981 which is already implemented both client- and server-side but needs testing. For further details, please see the tracking issue.
Our work on improving the notification settings is being finalised. We've conducted user testing this week and are preparing for a labs'ed launch.
As part of our integration with Compound, our new design system, the first pieces of typography and colour updates are landing on nightly. More news in this area soon.
Finally, we've also progressed on integrating OIDC and managed to get the login flow working in a POC manner.
Element Android 1.6.3 is now available for 20% of the users in the PlayStore. We are confident that we will reach 100% deployment by the end of next week, and then we will release the app on F-Droid. The roll out is slower than usual since this version is integrating the Crypto Rust SDK (the new Matrix SDK developed in Rust and also used by Element X iOS) and the migration of user private data is quite a sensitive area.
@sctlib/rtc now has support for Matrix /sendToDevice signaling.
It's a web-component that tries to offer a user interface for peers to connect via WebRTC
There are different "manual" signaling methods (such as copy/pasting the WebRTC connection data by hand, from one peer to the other), and the Matrix API /sendToDevice endpoint is the new addition.
It works with authenticated matrix users, as well as with guest user/device.
All this is a prototype and experimentation with client side browser based apps (with js/html/css/web-components/npm-packages), using @sctlib/matrix-room-element and its new api.js.sendToDevice method.
One of the thing I enjoy with this project, is that it is web-component based; meaning the new HTML custom DOM element, has a "clear API" through it's attribute api, methods, events (just like an <img/> or <video/>, or <form/> etc.).
allow to forget rooms (delete room specific content from database and cache) -> rewrite of the cache to allow indexes
PowerLevelsEventContent with type safe "events"-field (e. g. allow content.events.get<MessageEventContent>() additionally to the old way content.events["m.room.message"])
Introduce module trixnity-crypto-core and replace native crypto algorithms using native APIs (CoreCrypto on apple and OpenSSL on linux/mingw targets)
The library is fast approaching the 0.8 with the process being much steadier than before, now that we actually practice smaller, more frequent releases - thanks in no small amount to NeoChat people, nicely prodding the author of these lines on a regular basis. The release notes (very short, apparently we've got the beta right) are, as usual, at the project's Releases page and the final release can be expected some time next week, if we don't have unexpected showstoppers.
And just in case someone doesn’t know where to find us - you’re welcome in #quotient:matrix.org!
Have you ever had the need to set the same power levels for the same users in the a lot of rooms?
It's fairly tedious.
That's what room-architect tries to solve. You create groups of users and groups of rooms and set power levels to room-group<->user-group pairs, and this bot will keep the power levels there (as long as the Bot has the necessary power levels itself of course).
I have more planned, and a few more ideas beyond those, if you want to help, open a pull request on the project's Codeberg repository or open an issue if you find a bug. There is no Matrix-Room for this project yet, but I might create one if there seems to be interest.
Introducing Gate Bot, a Matrix bot that empowers Matrix room owners to create a safety gate between incoming users and their community. Through the use of verification checkpoints, including CAPTCHAs (with ongoing exploration of alternative methods), Gate Bot can effectively thwart automated spam bots while ensuring the protection of communities and their members.
Invite Gate Bot to a room to get started, then follow our setup guide on Github.
Last weekend, I made a few small changes that fixed or worked around minor bugs and usability issues that were brought to my attention by community members. This should make interactions with the bot match expectations more closely. Hooray for collaboration and iteration!
DevConf.CZ, an annual, Red Hat sponsored, open source community conference in Brno, CZ, was held on June 16 - 18.
This year, the conference was piloting Matrix as a primary communication platform and this is a short summary of how it went.
In the end, we went the self-hosting way!
Our hero @duck:milkypond.org from Red Hat's open source program office team did all the heavy lifting by setting up the Synapse and all the necessary services around it, incl. Mjolnir.
We've tried to use conference-bot with schedule in compatible json, but DevConf not using Pentabarf turned out to be too limiting, at least for our use-case.
Taking advantage of the Spaces feature, we created #2023:devconf.cz with three sub-spaces: 'General', 'Sessions', and 'Workshop & Meetups'. Attendees were suggested to join the 2023 space and go from there, as opposed to sharing invites to specific rooms or sub-spaces.
@inknos:snag.social and myself, @mhoyer:snag.social wrote a simple bot that was creating Q&A threads for each talk. It also pinned this message/thread. Online and in-person attendees were suggested to use the Q&A threads to ask questions and session chairs asked them to the speaker(s) in the time dedicated to questions and answers.
'Sessions' space was a home for rooms, which were an extensions of the real-life auditoriums. These rooms had a widget with a Youtube live stream and Q&A threads.
All rooms had a widget with a schedule for said room. The widget was pointing to a website designed to be used as digital signage, so it reflected any schedule changes immediately.
Compared to FOSDEM, and given the size of the conference, we decided to have only one general-purpose public room, which I think worked well. This way, organizers are able to do @ room pings there instead of creating a dedicated "Announcements" room for example.
I should also mention we've put together a Matrix section at devconf.cz web FAQ section: https://www.devconf.info/cz/faq/#matrix
The organization team did a great job communicating everything to the attendees, even the fact that it is a "pilot" and things might break (they didn't, yay!).
I don't have the exact numbers, but I believe there were 300+ users in the Main Chat room, which as far as I can tell is comparable to any chat platforms used in previous years. Not bad for a first year, especially since we only had a very limited time-frame to make it happen.
@dvolavko:matrix.org, the organizer of DevConf.CZ, shared this:
"""
Overall positive feedback. I think we should fully transition to Matrix after this experience. We were collecting attendees to telegram chat for the past 5 years and we reached a similar number on Matrix in 3 days.
""
TRBot is software written in C# and .NET 7 for playing video games collaboratively through an easy to learn, hard to master text format - think Twitch Plays Pokémon to the next level and with any game. This week we released version 2.8.0, which adds support for reading inputs in unencrypted Matrix rooms! On top of TRBot's built-in Twitch, IRC, XMPP and now Matrix support, Matrix bridges will unlock a multitude of other services to run TRBot on for more players to join in on the fun.
Join our room at https://matrix.to/#/#TRBot-Dev:matrix.org for development discussion and updates! We also use TRBot to host collaborative play streams through a community called https://matrix.to/#/#type2play:matrix.org.
Did you ever have a list of email addresses and Matrix rooms (or spaces) which you wish to invite them to? And you don't know their Matrix usernames or if they even have a Matrix account yet? Then this is going to be for you. ✨
For this year's edition of the Berlin University of the Arts open house day presentation (come visit July 21st - 23rd if you are around!) students and others are going to make use of Matrix once again to digitally present and announce their art pieces, installations, performances, events -- just like they did for the last two years. As part of the digital programme we kept running into the same issue: we have a big Matrix space structure representing an existing hierarchy of faculties, institutes, campus buildings, rooms, study programs, classes, seminars and so on. And with each of them we have a list of maintainers as in people who are responsible.
While we're still mostly working on other projects, we wrote the matrix-email-onboarding microservice to invite users to Matrix rooms (or spaces) via their email addresses, even before we know if they actually have a Matrix account or not.
It comes with a CLI tool to send out emails 📨 with a link (containing a secret token) for your users to click on (screenshot 1), and
A Node.js server-side application to handle web requests to
(1) check a given secret onboarding token 🔍 and list the linked Matrix rooms or spaces (screenshot 2)
(2) let the user sign in ☑️ with their Matrix account and automatically join the given rooms or spaces
(3) (optionally) promote those newly joined users to become moderators or administrators 🧑⚖️
We've decided to CC0 it. So go crazy, make use of it in your public institution, use it for your company, tinker around for yourself, create Issues or send Pull Requests on GitHub and do let us know what you think! Looking forward to all of it. 🥰
Thanks again to Beeper for all their contributions to the Matrix ecosystem, and we can't wait for more prospective members to show that they really mean to stand for open, decentralised secure communications 🚀
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.
The SCT has largely been business as usual for the last week: progress is being made on the MSCs we know about, things are entering/completing FCP, etc. There has been some activity around MSC3820: Room Version 11 though, largely to ensure Linearized Matrix has a clean place to start building its own room version. It's also been about a year since Room Version 10 was cut, making it a good time to push some cleanup work out into the world.
If you'd like to test room version 11, update your Synapse and join #v11-opt2:t2l.io. It should look largely the same as any other room, but has changes that client developers should note around redactions.
For Linearized Matrix news, there's effort going into specifying the complete semantics and behaviour of Matrix's transport. The in-progress draft can be read here and should be published as an 02 in the coming days. 03 is expected to contain specific details around the MLS constraints. For clarity: the draft is an IETF Internet-Draft (I-D), aimed at a different audience than MSCs normally would. While the I-D makes little mention of it, existing Matrix servers participating in rooms with Linearized Matrix servers will continue to be full mesh, though Linearized Matrix servers will rely on a hub to send their events. DAG servers are not to rely on a hub.
Random MSC of the week
This week's random MSC is MSC3160: Message timezone markup! If you've ever tried to say "does 15:00 CET/13:00 UTC/09:00 EST/06:00 PST work for you?", this is the MSC that fixes that problem.
This week we released 1.86.0. Here are a few of the highlights:
Fix an error when having workers of different versions running.
Experimental MSC3861 support: delegate auth to an OIDC provider
Correctly clear caches when we delete a room
Expose a metric reporting the database background update status.
and much more. If you'd like to take a deep dive into the changes, you can find the release notes here and as always, if you encounter a bug feel free to report it at https://github.com/matrix-org/synapse/issues/new/choose.
We finally released v0.4.0 this week with support for device verification and cross-signing.
Try them out at hydrogen.element.io by enabling cross-signing under Experimental Features in the settings.
This release also includes numerous bug fixes, see the release notes for more info.
We’re continuing work on the performance of our room list. It’s important to us that the app feels speedy and seamless so we’re spending the time to really nail these fundamentals.
We’re also finalising some functionality around message actions (like forwarding) and improving the flow when leaving rooms
This week our team has been continuing to work on message actions, finalising forwarding messages and reporting messages. Next we’ll move onto the copy function.
We’re also refining the design on some of our settings pages.
And we are integrating the new Room list API from the Rust SDK.
The web team is still hard at work uncovering and fixing bugs relating to stuck notifications.
Along with fixing bugs we’re also about to start testing our updates to the notification settings pages and expect these to be in labs in the next release
Our team is also making progress against our accessibility goals. Our current focus is improving the colour contrast throughout the app by updating our colour palette.
Along with the above we’re also working on integrating the new OIDC pieces as this new auth system will bring many improvements.
New German episode:
Meet Simon Dürsch, who is a founder of https://clup.life and passionate about collaboration within associations, clubs and similar communities. Out of his own needs to bring together people on different chat platforms, he's built a service to create bridged community rooms.
As an active follower of Matrix news, chat bridging (e.g. from and to WhatsApp) is probably no news to you, however, the interview shows that Matrix still has a lot of untapped potential to enable communication of currently fragmented communities.
On August 05-06 the annual Free and Open Source Conference (short FrOSCon) will take place at the German University of applied Sciences Bonn Rhine Sieg.
There is great interest in Matrix in Germany and this year in particular one of FrOSCon's focus aspects is "Open Source in public administration" which seems a great fit with Matrix as well.
Plus, of course it's always fun to meet the community!
A small team of volunteers from the community has gotten together to organize both a Devroom and a Booth/Stand. Please find last week's announcement for more detail.
We need your help!
You can help us out by:
submitting a topic for a talk or workshop you want to give (🇩🇪 or 🇬🇧) - we need at least a title and duration until July 2 23:59 CEST!
helping out at the stand
helping to manage the devroom! E.g. if you are versed with recording and broadcasting tech, that would help us make the content accessible beyond the in-person devroom
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.
This actually happened last week, but a huge shoutout to Kévin Commaille, aka @zecakeh, for their work on upgrading the OpenAPI schema data for the Matrix Spec to version 3.1. This schema describes all of the requests and responses for all endpoints in the spec, as well as various event types and other bits and pieces. It directly powers the Matrix spec website, the Matrix API Playground and several Client and Homeserver SDKs that generate code from it.
With a diff of +14,997 −12,660, this was a multi-month effort of both implementation and review (thank you @richvdh and @KitsuneRal!). This change will allow us to use all the new features that OpenAPI 3 has to offer, as well as generally keeps us up to date with modern tooling.
This MSC describes a different way of describing how an event relates to other events. In the current Matrix spec, you can use the m.relates_to property to indicate that this event (say, a reaction) relates to another event (say, a message) in a certain manner. You can specify how it relates using the m.relates_to->rel_type key; a value of "m.annotation" for reactions.
But sometimes you may want to relate to multiple other events. For instance, what if that message you're reacting to is also in a thread? In fact, this MSC has come up recently as one possible way to solve the problem of efficiently discerning whether an event should belong in a thread or not (discussion). This MSC isn't the only option for solving such a problem - MSC4023 would also work, and both have tradeoffs.
MSC3051 could also allows for actions such as editing replies; both the text and the message it was a reply to. Neat!
Do read the MSC and give feedback if relations is something that excites you.
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.
On the Spec Core Team (SCT), we've started converting the list of MSCs we received into a roadmap for the next 8-ish weeks. This is all to prepare for Matrix 1.8, and we're already starting to think a bit about what Matrix 1.9 looks like too. You can see what the team plans to look at here - each column is ordered in relative priority, where the top is more likely to receive attention first. Not everything is actionable at the moment, but that's the point 😄 As we work through the next month or so, the remaining MSCs should be unblocked or near-unblocked enough to allow the SCT to make progress on them.
Most of the MSCs on the roadmap have a target state of acceptance (and merge, if we can make that happen), though some do have a simple task of reviewing the MSC ahead of implementation effort. We're aiming to test this process over the next few releases, where the SCT unblocks progress by providing review ahead of review actually being needed, but to do that we need to know what people plan to work on. If you have something which could do with review (not just acceptance) in the August-November window of time, let us know in the SCT Office.
As always, if you have questions about a particular MSC's state or what this process actually means, let us know in the SCT Office.
Meanwhile, the SCT is continuing its IETF/MIMI adventures by pushing Linearized Matrix towards working group adoption. The current stages involve updating the Internet-Draft (I-D, or MSC in IETF terms) to cover the MIMI-specific bits of the room model and working on multiple implementations of the proposal. We'll be updating the MSC at a later stage to account for the DAG interop components, though how to get a DAG to work with the linear, append-only, MIMI variant is very much top of mind. You can see the current rapidly-changing I-D here.
As mentioned, to further adoption of Linearized Matrix within MIMI we're looking for independent implementations. "Independent" here means not written by the Matrix Core Team and not written by Element given the potential for conflict of interest, though the Matrix team is working on proving the I-D through eigen-server and possibly a dual-stack Synapse (watch this space). We have a line on ~2 completely independent (but undisclosed 😇) Linearized Matrix implementations already, but more is often better for these things: if you work for a messaging service provider and are interested in writing an implementation, get in touch with us so we can coordinate some interop testing. You don't already have to be using Matrix to write an implementation, and in fact it's probably better if you aren't already using Matrix, awkwardly.
Random MSC of the week
The script of fate has decided to put forward MSC3060: Room Labels this week. This is a relatively small MSC, but one which provides a ton of value to discovering rooms. The labels/topics your room covers are listed in a state event and can inform users of what to expect beyond the room name/avatar. For example, if your room has primarily NSFW/18+ content, you can disclose that in the labels.
Leave your thoughts and concerns on the MSC via threads on the diff 🙂
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.
Part of the SCT's goals with Matrix 1.8 is to pre-plan the majority of our review attention, which means we need to be told what folks are working on to plan accordingly. We'll still have some room for random/surprise MSC work, but this is expected to be harder to acquire going forward (and so should not be relied upon).
Please let us know if you're working on something which affects the spec! We want to hear about:
things that aren't MSCs (yet)
things that are MSCs but aren't planned to be merged in 1.8
MSCs which are expected to be ready in time for Matrix 1.8 (in ~2 months)
If you aren't sure if your project affects the spec, talk to us about it. We do not want to be the bottleneck in your development cycle, instead preferring to know ahead of time that something will need attention from us.
All we need is for you to mention your project/MSC and timeline in the #sct-office:matrix.org - DMs and private rooms with SCT members are not enough to get something on the roadmap. This is to ensure there is full transparency in why the SCT is looking at something, and to ensure that the MSC moves through the process in an efficient manner. If your project has a sensitive context (commercial or otherwise), then we ask that you reference that here and someone from the team will contact you to get more information, relaying as much (non-sensitive) detail as possible back to the room here.
Our expected outcome for this system is to not only be a more effective team, but also to give you a faster/more reasonable turnaround on MSC review (at all stages), more rapid deployment of stable features (dropping unstable prefixes), and overall fewer review iterations as the SCT can think about problems ahead of you actually needing a review. We seriously do not want to be a blocker, but we need to know what we could end up blocking by accident.
Starting approximately August 1st, we will be starting to plan out what Matrix 1.9's release cycle will look like. A similar call to action will be raised at that point. Note that Matrix 1.8 is set to be released in late August, meaning we're aiming to have Matrix 1.9 thought out before Matrix 1.8 is released, which is a deliberately accelerated timeline than the current Matrix 1.8 release cycle planning.
As always, if you have any questions about this, please let us know in #sct-office:matrix.org.
This MSC would allow Matrix Widgets, knowing an event ID, to request any and all other events that relate to it. Thus, if you had a m.room.message event, you could ask the client whether any edits have been made to that event, via asking for m.room.message events with m.replace relations.
This would be useful for Widgets to traverse any data structure that used relations to tie together events - which could model all sorts of use cases!
As always, leave your feedback on the MSC if this is something you're interested in or want to push forwards :)
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.
We released version 1.7 of the Matrix Spec on Thursday. This release features media repository improvements and reactions. Thank you to all who contributed to this release, whether through writing or reviewing MSCs, writing spec PRs, or finding spec bugs. And congratulations to those who had their first MSC make it to the release. Read the blog post for the full details.
We're in the process of working out what Matrix 1.8 looks like and need to hear what people are working on. If you have an MSC or idea you're planning on looking at in the next 2 months, let us know in #sct-office:matrix.org so we can prioritize it accordingly.
Random MSC of the Week
The random MSC of the week is... MSC3184: Challenges Messages! This feature allows participants in a room to make decisions randomly by playing rock, paper, scissors; flipping a coin; or drawing straws.
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.
Matrix v1.7 has been given a release date of May 25th, right before the next TWIM! Expect a matrix.org blog post with all the details on the day.
Leading up to the release we've seen a number of great spec PRs appearing and being merged! Thank you to everyone for writing them (saving the SCT some time!) and to other reviewing on commenting. It's a huge help and the spec feels like it's chugging along at a blistering pace!
This MSC adds the ability for users who have previously joined a room to rejoin again. Typically this isn't desired in a public room setting, but it does specifically make sense in the case of a DM that you've left and want to return to without the other user needing to invite you. This case has specific implications for cases where there could be only ever one room between two users. Being able to rejoin it if the other user has disappeared is key!
Outside of the DM use case, this functionality can mostly already be achieved by using restricted rooms, where users of a given space/another room can always join your room. However, it would be nice to have the flexibility of allowing certain users to rejoin a room without needing another room to serve as proof of membership.
Is this something you're interested in? Do you have additional use cases? Feel free to check out the MSC and comment with your thoughts!
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.
A regular reminder that every Tuesday, the Spec Core Team (SCT) publishes their approximate priorities in the public Office of the Spec Core Team room - check it out to see what the SCT is working on. Similarly, if you’d like the SCT to engage with your MSC, mention so in that room.
The release of Matrix 1.7 is expected in the next 1-2 weeks! Keep an eye out for announcement blog post specifically for it. We'll call it out in the following TWIM as well of course :)
Matrix 1.8 is currently scheduled for around August 2023.
This MSC adds a new push rule that causes your Matrix client to emit a notification if a group call (as defined by MSC3401 is started in a Matrix room. This MSC (obviously) depends on MSC3041, so that MSC will need to be accepted before this one can be.
There is currently a client-side implementation for this MSC, but it is missing a homeserver side one (for adding the push rule).
Check out the MSC if you're interested, or perhaps take a look at adding that server-side implementation?