Dept of Status of Matrix 🌡️
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!
If you're an organisation of the public sector it might not be obvious why spending money on an open source product is important: you will probably be interested in why it makes sense for gematik to contribute, and how it benefits the public sector in general.
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!
Dept of Spec 📜
Andrew Morgan (anoa) [GMT-6] reports
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.
MSCs in Final Comment Period:
- No MSCs were closed/rejected this week.
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.
Random MSC of the Week
The random MSC of the week is... MSC3907: Mute Policy Recommendation!
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!
Matrix Spec v1.7 for Dash and Zeal
Christian Paul (jaller94) reports
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.
Project on Gitlab.com: https://gitlab.com/jaller94/dash-matrix-spec
Note, this is not an official release distribution of the Matrix Spec. Enjoy at your own risk of this breaking or not getting updated.
Dept of Servers 🏢
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
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.
Second generation Matrix homeserver
It's been quite a while since we last posted in TWIM. During that time we have been hard at work on Dendrite.
This week we released v0.13.0. Here are a few of the highlights:
- Initial support for the highly experimental MSC4014: Pseudonymous Identities
- 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.
Dept of Clients 📱
Element X iOS (website)
A total rewrite of Element-iOS using the Matrix Rust SDK underneath and targeting devices running iOS 16+.
This week was an absolute rollercoaster for ElementX and, at the end of it, we’re happy to report this huge list of features and improvements:
- Reaction highlighting
- Swipe to reply
- Render emote notifications like in the timeline
- Reaction summary and flow layout for reactions
- Toggle reactions + SDK 1 and 2
- Emoji boosting
- Avatar placeholders in push notifications
- Sending a location
- Better media viewing
- Editing a failed local echo
- Better timeline item long press
- Opening a location from the timeline
- Improved timeline item actions 1 and 2
- Better room list last message rendering
- Media upload cancellation
and as always an absolute ton of bug fixes and performance improvements that would’ve put the first list to shame
Element X Android (website)
Android Matrix messenger application using the Matrix Rust Sdk and Jetpack Compose
- 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!
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
Johannes Marbach announces
- 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 (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- 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.
Dept of SDKs and Frameworks 🧰
@sctlib/rtcnow has support for Matrix
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
/sendToDeviceendpoint 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
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
<script type="module" src=" https://cdn.jsdelivr.net/npm/@sctlib/[email protected]"></script> <rtc-user><rtc-user/>
In future version I'd like to:
- support to connecting to multiple peers
- support for when connection is broken, to re-connect
- not only data channels (video, audio)
- matrix ecosystem and events, after the data channel is open
- plugin system (web component slots)
- prototype and decide with the communities what the APIs should be
- work on more web components,
Multiplatform Kotlin SDK for Matrix
Because of some large refactorings we decided to release a beta of the next Trixnity version. We would be happy if you try out this version.
- allow to forget rooms (delete room specific content from database and cache) -> rewrite of the cache to allow indexes
PowerLevelsEventContentwith type safe "events"-field (e. g. allow
content.events.get<MessageEventContent>()additionally to the old way
- Introduce module
trixnity-crypto-coreand replace native crypto algorithms using native APIs (CoreCrypto on apple and OpenSSL on linux/mingw targets)
SecureRandomimplementation using native APIs
- upgrade logging (requires SLF4J 2)
A Qt5 library to write cross-platform clients for Matrix
libQuotient 0.8 RC
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!
Dept of Bots 🤖
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.
A Matrix bot for the Friendly Linux Players community.
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!
Dept of Events and Talks 🗣️
Matrix on DevConf.CZ 2023
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. ""
I hope to you at DevConf next year!
Matrix @ Froscon (matrix room)
- Free and Open Source Conference
- August 5-6 in Bonn, Germany
- Will have a stand and a devroom hosted by the local Matrix community!
- Submit your talks and workshops to https://matrix.to/#/#FrOSCon:fiksel.info now (or until July 2 23:59 CEST)!
- English-language content welcome!
- more info in earlier twims, https://froscon.org, and our room https://matrix.to/#/#FrOSCon:fiksel.info!
Dept of Interesting Projects 🛰️
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. 🥰
GitHub: https://github.com/medienhaus/matrix-email-onboarding Chat: #matrix-email-onboarding:medienhaus.dev
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!