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).
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.
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.
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
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.
main differences:
return code 0 means its the data you asked for
HTTP 429 (Rate limit) is retried by default, all other ‘soft failures’ fail
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 🧰
Trinity
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 🥳
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.
IndexedDB support
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.
TL;DR
features/improvements:
add async transactions
add IndexedDB as database and media backend
support olm fallback keys
key sharing (room key requests)
add usersTyping to UserService
use one large transaction for sync processing
add SSO login type
breaking changes:
remove sqldelight as database
API change in Timeline to get more information from loadBefore and loadAfter
bug fixes:
don’t calculate room name, when room summary did not change
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.earth to use it in production, or #bots:flip.earth to see it being tested.
This is a quick reminder about the matrix community meetup/barcamp next TWIMdayFriday 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.
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).
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank
Hostname
Median MS
1
babel.sh
98.5
2
dendrite.babel.sh
183
3
matrix.org
278
4
midnightthoughts.space
335
5
dendrite.kootstra.frl
538
6
grin.hu
590
7
willian.wang
611
8
forlorn.day
726
9
cringe.chat
734
10
zemos.net
900.5
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.