Dept of GSoC 🎓️
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).
Dept of Servers 🏢
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
Well it's friday - which means (somehow) another week had gone by! Here at Synapse we have released v1.76.0rc2, with a host of new features and bugfixes. Of particular note is that as of this release, faster joins are on by default! This means that when joining a room for the first time, Synapse 1.76.0rc2 will request a partial join from the other server by default. Previously, server admins had to opt-in to this using an experimental config flag.
If you'd rather opt out of this feature for the time being you can use this setting
experimental: faster_joins: false
in your server config. Take it for a spin and let us know how it goes -- please file an issue here if you find anything out of the ordinary after joining a room.
In addition, this release updates the default room version to v10, adds support for push rules for Polls, and so much more. You can check out the release here.
Second generation Matrix homeserver
Hyperbased in Hyperspace reports
Federate all the networks!
The last week i worked on getting Dendrite to work on the I2P Network. It makes use of the existing Pinecone infrastructure which gets enabled to dial on I2P with a small patch. This has the main advantage that servers will automatically discover each other if they share a node and you don't have to seek out others in the distributed network. I host a 24/7 Seednode for I2P right now. I have also put the work in to enable a landing page just like a monolith deployment would have and you can just browse to it. This hopefully increases the visibility too! However, it can also dial into the Clearnet too. It is hardcoded to the Seednode run by the matrix and dendrite developers themselves and it is disabled by default, but can be enabled with a command line switch. It effectively is making a bridge between the I2P Network and Clearnet. In order to bridge the gap between Pinecone based servers and normal matrix servers as well, I have also made a very simple matrix2matrix bridge which just connects to 2 (or more) Homeservers and exchanges the messages between 2 (or more) rooms. It also supports bridging and not-bridging files of any kind. You could add other networks too as long as you can tie them together with Pinecone. For example, the library i use to connect to I2P also supports Tor and it can be added to function just like the I2P implementation. All you need is something that exposes a HTTP Client and a listener. My personal goal is to make matrix independent from domain registrars, open ports, static IP addresses and anything that makes self hosting harder than it should be and thankfully all the software we need is already written, it just takes someone to tie it together.
Dept of Clients 📱
I have updated FluffyChat to the new Flutter version 3.7 which improves the performance and adds some more Material 3 components. Especially the new toggles look quite nice
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
This week the web team have been working on:
- MSC3946 Dynamic Room Predecessors
- Continuing to improve the release & packaging processes
- Starting work on a design system
- Notifications improvements; including a design for a new settings page and defaults
- And if that wasn’t enough… There’s been lots of bug fixes, especially in voice broadcasts
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- ElementX is continuing to make great strides as we now have:
- state event rendering in both the timeline and room list
- user display names in the room list and emotes
- a mechanism for marking rooms as read on enter and exit (as a start)
- improved timestamps on the room list last messages
- a completely redesigned image loading mechanism
- sliding sync room subscriptions on enter
- design tweaks and improvements throughout the app
- and a ton of performance improvements and fixes
- Meanwhile, Element 1.9.17 is ready to be released into the world
- this version includes new formatting options in the Rich Text Editor (Labs):
- you can now create lists, both bullet points and numbers, the choice is yours!
- additionally, support for inserting quotes and better code formatting is available
- and the Voice Broadcast feature (Labs) is more reliable and saw many bug fixes
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
Element 1.5.22 is ready and with some exciting feature updates and bug fixes, including:
- Updates to polls and rendering
- An improved Rich Text Editor experience (find it in Labs)
- Improvements to the new voice broadcast feature
In Element X on Android we’re working on project setup and foundations, including automatic updates for the Rust SDK and custom themes.
Dept of Non Chat Clients 🎛️
A curl like tool but just for matrix
Working with curl and matrix - especially in constrained environments like read only containers - drove me nuts. Nuts enough to build my own version of curl that fits my needs.
- return code 0 means its the data you asked for
- HTTP 429 (Rate limit) is retried by default, all other 'soft failures' fail
- pass token via mxpassfile
Its still some work left, but things in the readme should work.
A KRunner plugin to list joined rooms and possibly other things from nheko.
nheko-krunner has had a new release! 0.2.0 brings support for the latest version of nheko, but it also adds a new feature: the KRunner plugin can be configured from KDE's System Settings app! Currently, the only configuration option is to change whether you are shown unread counts for rooms in the search results, but I can see this expanding in the future to add other useful configurations
If you are using openSUSE Tumbleweed, you should already have the update available to install!
Dept of SDKs and Frameworks 🧰
Matrix bots in Rust and WebAssembly. If you're interested to follow the project, feel free to join #trinity:delire.party or get the code on Github.
This week, ahal contributed the linkify module, which implements a generic way to create substitutions based on regular expressions and their matches in Matrix messages.
For instance, it's possible to create a substitution so that when someone writes "issue #21" in the room, the bot will answer with "https://github.com/bnjbvr/trinity/issues/21". And since it's configurable at runtime, you can create such substitutions with any format you want, create automated links as you'd like, and configure it per Matrix channel. This opens up a new world of possibilities! Also this generalizes what this bot's predecessor, botzilla, did with 3 different commands for expanding Github / Gitlab / Bugzilla links, so Trinity has now reached feature parity with it! Woohoo 🥳
Multiplatform Kotlin SDK for Matrix
Trixnity 3.2.0 is released.
performance improvements and FOSDEM 23
The most exciting change regarding more performance are asynchronous database transactions. This means that the cache stores values not only for reading from, but also for writing to the database. So every database transaction is executed asynchronously to the caller who changes values. This allows really fast sync processing even on slow systems like smartphones. This also removes delays in the UI, because changes are immediately applied (on the cache level). This was a problem with databases which don't allow parallel write transactions (like realm). This problem also seems to appear in Element Android and its realm database (at least with my huge account). Despite that, I've made some other improvements regarding the cache and sync processing.
I also added a simple benchmark to see how good the improvements are. The test creates 50 encrypted rooms and sends 10 messages to each room. The database is in-memory, but writing is simulated with a 10ms and reading with 5ms delay. Before the optimizations the sync needed 20s to be processed. After the optimizations it needed 5s. So 400% faster. In practice, with my relatively huge matrix account (200+ rooms) the initial sync took 2.5s (after waiting 30s for the server response) on the desktop. But this is just a teaser. If you want to know more, you'll have to wait another week for my Trixnity talk on FOSDEM 23. Contact me if you have topics that should definitely be included in the talk. 30 min are unfortunately filled quickly.
I've added IndexedDB as a new database and media backend for web. Really cool to see Trixnity in the web with a persistent database.
fallback keys and room key requests
Fallback keys are now supported by Trixnity. Furthermore room keys requests are answered and room keys are requested (when key backup is disabled) from own verified devices.
- add async transactions
- add IndexedDB as database and media backend
- support olm fallback keys
- key sharing (room key requests)
- use one large transaction for sync processing
- add SSO login type
- remove sqldelight as database
- API change in
Timelineto get more information from
- don't calculate room name, when room summary did not change
- PBKDF2 salt should not be decoded as base64
Dept of Bots 🤖
I created flip-matrix-bot to allow anyone in my inclusive Linux gaming community (
#community:flip.earth) to schedule gaming events through a CLI-like chat interface. This recently reached a minimum viable state, and I'm excited to finally have community driven event hosting! This was made using the matrix-rust-sdk.
While this currently has some hardcoded references to the FLiP community, and so has limited usefulness outside of it at the moment, anyone who is interested in the bot is welcome to join
#flip:flip.earthto use it in production, or
#bots:flip.earthto see it being tested.
Dept of Events and Talks 🗣️
The Matrix Foundation and Community will gather at FOSDEM on February 5, in the morning in our in-person devroom, and in the afternoon in our online devroom. We have a great line-up with exciting talks on Sunday, and Matthew will tell you How we're making Matrix go voom in a main track talk, holding the promise we made this summer.
We will also have a stand and we can't wait to see you there in person if you have the opportunity to come!
This is a quick reminder about the matrix community meetup/barcamp next ~~TWIMday~~Friday February 3 starting 13:00 local time (in the FOSDEM fringe). We meet at HSBXL who are kindly offering their space for us to use (how to get there, how to get in). There will be food and drinks thanks to our sponsors.
A note from HSBXL:
I would recommend to dress warm. HSBXL is located in an old industrial building, therefore the location is not especially well isolated. We will fire up the heaters but warm close are still recommended.
See you in Brussels!
Matrix User Meetup Berlin
Next Matrix user meetup 1.2.2023, 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.
Every first Wednesday of the month in the c-base at 8pm ('til the next pandemic).
Matrix room: #mumb:c-base.org
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!
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