Hey everyone! Thib is out today, so I'll be exceptionally hosting TWIM in his stead this week. Let's have a look at what's been going on in Matrix-land!
Open Tech Will Save Us #16 🎙
The 16th edition of our virtual meetup Open Tech Will Save Us happened this week! This edition featured a few very interesting projects:
- Quentin and Maximilien from Deuxfleurs are creating Garage, a robust and distributed storage backend that can run on old computers. Who can use it? Why? And when should I not use it? Let's find out!
- Nathan from the Guardian Project is working with wind, butter, and rasperries to provide applications and messaging to people in low-connectivity areas. A fascinating dive off the grid.
Dept of Status of Matrix 🌡️
Matrix's Outreachy intern for this summer has been chosen! Usman is starting in early June, and will be working on experiments with Starring Messages! He will be blogging every two weeks, so look out for more updates.
Dept of Spec 📜
Andrew Morgan (anoa) 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://matrix.org/docs/spec/proposals.
- MSC3825: Obvious relation fallback location
- MSC3824: Login/register indication on SSO redirect
- MSC3823: A code for account suspension
MSCs in Final Comment Period:
- MSC3604: Room Version 10 (merge)
- No MSCs were merged this week.
The upcoming release of Matrix v1.3 is still in the works, but near! Expect a solid release date to be announced next week.
Random MSC of the Week
The random MSC of the week is... MSC2872: Move the widget title to the top level of the definition!
A bite-size MSC which aims to clean up the definition of a widget state event... by moving the "title" field to the root of the state event, alongside the existing "name" field.
This MSC needs someone to write an implementation in at least one homeserver and client to move forwards. Perhaps that someone could be you?
Dept of Servers 🏢
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
This week we cut two release candidates for Synapse v1.60, which include:
- New config options to limit the total memory usage of Synapse.
- The ability to reload cache factors of a running Synapse instance using SIGHUP.
- A new module callback to handle federation spam.
- Experimental support for MSC3787: Allowing knocks to restricted rooms and MSC3818: Copy room type on upgrade.
- Many bug fixes and internal improvements!
Meanwhile work continues on fast room joins and testing Synapse with workers on Complement. We'd like to remind readers that the fast room joins feature is highly experimental right now and we do not recommend enabling it on production homeservers just yet.
Synapse admin scripts (website)
Morning, maybe it's useful for someone else, I just published my admin scripts for synapse. It's still WiP but it make some basic stuff that I needed in my organisation :
- System notify users (all users/users from a list, specific user)
- delete sessions/devices not seen for X days
- purge the remote media cache
- select rooms with various criteria (external/local/empty/created by/encrypted/cleartext)
- purge history of theses rooms
- shutdown rooms
It's my first python project, so the code may not structured as it should, I'm still learning, and it's early alpha :)
Second generation Matrix homeserver
This week we released Dendrite 0.8.6 which contains a number of fixes and tweaks:
- Room versions 8 and 9 are now marked as stable
- Dendrite can now assist remote users to join restricted rooms via
- The sync API no longer returns immediately on
/syncrequests unnecessarily if it can be avoided
- A race condition has been fixed in the sync API when updating presence via
- A race condition has been fixed sending E2EE keys to remote servers over federation when joining rooms
trusted_private_chatpreset should now grant power level 100 to all participant users, which should improve the user experience of direct messages
- Invited users are now authed correctly in restricted rooms
join_authorised_by_users_serverkey is now correctly stripped in restricted rooms when updating the membership event
- Appservices should now receive invite events correctly
- Device list updates should no longer contain optional fields with
/deactivateendpoint has been fixed to no longer confuse Element with incorrect completed flows
As always, please feel free to join us in the #dendrite:matrix.org room for more discussion!
Dept of Clients 📱
Desktop client for Matrix using Qt and C++17.
We added a way to edit permissions in Nheko now. It is an unconventional drag and drop dialog, where you drag users and permissions between different roles. We are hoping that this will make powerlevels easier to understand. Be careful when trying it, the wrong powerlevels might make your room unusable. Now... the bad part about that is, that powerlevels add around 50-100 new strings to translate... Help is appreciated! <3
Nheko now also supports fallback keys, which should make E2EE more reliable after long periods of being offline and you can send images by pressing enter again. The privacy screen is also now fixed for separate room windows and our flatpak supports more image formats.
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- On Element Web this week we’ve smashed some bugs including those around Threads.
- Threads work continues as we’re aiming to improve the notifications and read receipts to improve the experience.
- Continuing to make improvements to our automated tests.
- The team is driving to complete the work needed to move our new search experience out of Beta. We think this new search is easier to use and helps folks to find what they’re looking for faster.
- We’re also making improvements specifically for new users, this will include a new home screen, watch out for those!
In labs (you can enable labs features in settings on develop.element.io or on Nightly):
- Video rooms; We’re ironing out some of the details to polish the experience
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- This week we’ve fixed a crash, and a few bugs; specifically the bug where some rooms were missing from the room list.
- On the iOS team generally we’re working towards a Sentry.io integration for better crash reporting to help us with this in the future.
- Live location sharing and other features are making great progress.
- Our new first time user experience will be ready for feedback soon!
- ElementX has been refactored to adopt Swift’s new structured concurrency.
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- This week we added emoji14 support so if you want to hide , salute , or melt for your friends, you’ll soon be able to! (for Android 12 and above, or devices that support emoji14)
- We’re getting ever nearer to a new sign up flow for new users. Our flow today can be confusing and complex, especially when all you want to do is chat with friends. We’ve been working on simplifying the flow and we’ll announce a community testing session very soon!
- Also new this week, we’ve opened up a new layout of the app to a small selection of folks. These 15 people will trial the new layout for us, providing feedback along the way. We’ll be opening it up to more feedback soon.
Everything related to Element but not strictly bound to a client
Hello and happy Friday!
- Threads are still in progress as we continue to make progress on the notifications and sort/ordering work that remains.
- In order for notifications to work better, we need read receipts to be updated. We’ve got several MSCs ongoing, along with a few Proof of Concepts (PoCs) to move us forward.
- MSC3771: Read receipts for threads
- MSC3772: Push rule for mutually related events
- MSC3773: Notifications for threads
- With that we’ve also updated some layouts and completed some bug fixes, on all platforms.
- Keep your eyes peeled on #element-community-testing:matrix.org for more info on our next testing sessions.
Dept of SDKs and Frameworks 🧰
Multiplatform Kotlin SDK for Matrix
Trixnity 2.1.0 has been released. It includes support for Server-Server-API endpoints (client and server) and fetching missing
TimelineEventsin client. The latter is used for fragmented timelines: If you want to show a timeline starting from any
RoomId(e. g. from unread marker), Trixnity will try to fetch missing
TimelineEvents from server. If you reach
TimelineEvents, that are already saved in the local database, the timeline fragments are merged magically 🧙
A set of Rust library crates for working with the Matrix protocol. Ruma’s approach to Matrix emphasizes correctness, security, stability and performance.
Kévin Commaille announces
Since our last update from about a month ago, we had two bugfix releases:
- Ruma 0.6.2 added methods to get the current room powerlevels from a
StrippedPowerLevelsEventand to get a user's membership whether the state event is redacted or not, and added a missing export to track member changes.
- Ruma 0.6.3 fixed the serialization and deserialization of events with a dynamic
event_typeand added convenience constructors for logging in with a
We have also landed a bunch of internal work:
- Improvement in our macros, notably to support unstable prefixes for event types.
- Some cleanup like removing some dead code, removing unnecessary
PartialEqimplementations, and fixing missing feature flags.
- The minimum supported rust version is now 1.59 and we use the Rust 2021 Edition.
- We started to refactor our tests to have more helpful failure messages.
And there are of course new fixes and features for our next release:
Matrix Client-Server SDK for Rust
The majority of changes we've seen over the last week, where minor fixes in style, squashing of bugs and CI improvements as most work is currently happening in the background on Sliding Sync, mobile and UniFFI support. But there have been two additions worth mentioning: first, we've improved on the autojoin example for appservices, and secondly we've merged a community contribution to make resolving of room-alias more handy.
Matrix Dart SDK (website)
Matrix SDK written in pure Dart.
Henri Carnot announces
This week, the team released version 0.9.7.
This week, we migrated to Matrix Api Lite 1.0.0, our simple wrapper around the matrix API endpoints and data models. This means we are now using the v1.2 Matrix spec 🎉.
Finally, we fixed a bug with where reactions were not properly discarded from the cache and some bugs in our e2e tests.
See you next time ;)
Dept of Events and Talks 🗣️
Matrix User Meetup Berlin
Next Matrix user meetup 1.6.2022, 8 pm @ c-base
Meet other matrix users, chat about Matrix, the rest, and everything else, discuss your Matrix ideas, sign each other in persona, and maybe spice the evening with a good mate or beer.
Also when the bbq is lit you may wish you brougth your favorite item :)
Every first Wednesday of the month in the c-base at 8pm ('til the next pandemic).
Matrix room: #mumb:c-base.org
Dept of Rockets 🚀
uhoreg shared with us a press release from Rocket.Chat announcing their work on interoperability with Matrix. It is super exciting to see another big player join the ecosystem. Watch this space next week for more announcements!
Dept of Ping 🏓
Thib is out this week, therefore so are the ping stats in TWIM (don't worry, they'll be back next week!).
That's all I know 🏁
See you next week, and be sure to stop by #twim:matrix.org with your updates!
The Foundation needs you
The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.
It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.Support us