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
In terms of Spec Core Team MSC focus for this week, weāve been aiming to get the requirements for MSC3952: Intentional Mentions landed as well as discussing MSC3952 itself, in addition to planning out what the next few spec releases are expected to look like.
Watch this space for progress on the Matrix 2.0 MSCs and other critical path items :)
Curated MSC of the week
This weekās random chosen MSC is MSC3575: Sliding Sync! Itās one of the largest (or is the largest?) MSCs weāve ever had, and dramatically changes how clients actually get updates from the server. Itās worth the read if youāre a client developer, though the team working on it is ironing out some bugs. Let us know what you think on the MSC :)
The Chart
It seemingly was okay with being generated this week again, so here it is:
Howdy, welcome to another week in Synapse-land. Weāve released v1.78.0rc1
with some cool bugfixes and features. Some notable additions in this version are:
Fixed a long-standing bug where the room aliases returned could be corrupted.
Fixed a bug introduced in Synapse 1.76.0 where partially-joined rooms could not be deleted using the purge room API.
Fixed a long-standing bug where federated joins would fail if the first server in the list of servers to try is not in the room.
Implement the experimental exact_event_match push rule condition from MSC3758.
Thereās been progress in several areas for Construct 0.9 this week, cut with 71 new commits. First Iād like to give special thanks for @bgiovanni for continuing to drive the progress this week; they have on several occasions been able to navigate the codebase and the specification to provide concise reports so I can fix anything in mere minutes. I hope we can keep this up.
Construct can now be configured to purge a room from the database after the last local user leaves. This week I also took the plunge on implementing a controversial clause in the specification which requires a server to broadcast a join event on behalf of another server. This is problematic because itās technically an amplification attack, so Iāve done my best to narrow the conditions for when to actually perform this: only if the counter-party is not already joined, and only if Construct has an alias set for the room being joined.
In other news, I fixed a bug in boost::asio but since that wonāt land for a while and Constructās io_uring(7) might be susceptible on Arch and Gentoo I hacked a workaround just for us, especially since the old epoll(7) + aio(7) makes my desktop much less responsive (I canāt believe I dealt with that for years!).
Next week Yan Minari might have a deeper look at Sytest and Complement integration and maybe mdad, while I plan on implementing local room policies and user management to make Construct safe for public registration.
If youāre looking for an alternative to synapse please check us out at #construct:zemos.net
Hey all, in the past weeks I have been working on message backfilling over
federation (!), history visibility correctness and a bunch of small bug fixes.
Prepare for a new Conduit release in the near future!
Some of you might have already seen it, but for the rest I will just spoil the surprise now: We released 0.11.2 (and 0.11.3, donāt askā¦) this week! Now you can easily hide spoilers by just enclosing the message with ||, search for users in the user directory and much more. I have included the changelog below so you donāt need to look for it!
Highlights
Improved Markdown input šļø
You can now enter strike-through and spoilers using ~~ and ||
respectively.
Single line-breaks now also create a line-break in the formatted message.
Code tags now preserve whitespace.
User search in the invite dialog š§āš¤āš§ (Malte E)
Can search either locally or consult the user directory on your server.
Features
Allow disabling animations before login.
Set the window role to āimageoverlayā on X11. (Thulinma)
Improvements
The Nheko binary should now be slightly smaller.
You can now build Nheko against a system install of the blurhash and
cpp-httplib libraries. (vitaly)
You can now enable scrollbars for the room and community lists in the
settings. (balsof)
Add a generic video icon when there is no thumbnail. (LorenDB)
Pause video when switching rooms. (LorenDB)
Add a fancy delegate when encryption is enabled. (LorenDB)
Standardise command format messages. (phyto)
Automatically fetch keys for undecrypted messages after verification.
Remove all notifications on exit on Linux. (ShootingStarDragons)
Document markdown features and /cmark command in the man page. (tastytea)
Speedup the user completer.
Allow closing menus on Wayland by clicking the window. (ShootingStarDragons)
Merge Debian/Ubuntu Dependencies in the README. (enigma9o7)
Update zsh completions. (tastytea)
Skip empty requests for cross-signing keys when user only has one device.
(Jason)
Hide image overlay when saving a file. (ShootingStarDragons)
Make it more obvious that the add reaction button is not an emoji.
Build only the gstreamer qml plugin in flatpak.
Update Ubuntu dependency list for building from source. (tastytea)
Translations
Estonian (Priit)
Ukrainian (NullPointerException)
Indonesian (Linerly)
Chinese (Poesty Li)
Esperanto (Tirifto)
French (MayeulC, CB, Glandos, Rick)
Dutch (Thulinma)
Italian (DynamoFox, Elia Tomasi, Joseph Curto, Quanterxotur)
Russian (Evgeny, SOT-TECH)
Finnish (Lurkki)
Bugfixes
You can now forward stickers again.
Edits shouldnāt ājumpā out of threads anymore.
Focus text input when quick switcher is closed. (LorenDB)
Fix rare freeze with an empty list in a completer.
Donāt fail the plugins check on GStreamer 1.22 during a video call.
Allow nested ()/[] brackets in URLs. (mauke)
Make br tags work properly again.
Donāt double free call devices. (Jason)
Work around multiple destructor calls on Clang. (Jason)
Hello all! Fractal 4.4.2-beta2 is available on Flathub Beta.
You read correctly, itās not Fractal 5 yet. This is a maintenance release that fixes the compilation of Fractal 4.4 with recent libraries and allows to build the Flatpak with the latest GNOME runtime. That means no more warning that the GNOME 41 runtime is outdated!
There are no new features, but since we updated a lot of Rust dependencies we preferred to release a beta version before using it to update our stable release to the latest runtime. So please test it and if no major regression is reported, we will release it as stable in two weeks.
Note that if you always want to use this beta version instead of the stable one, and run it from the icon in your launcher, you will need to change its desktop file to use the command in the last line.
See you soon with some news regarding Fractal 5 hopefully!
This week we got closer to getting our cloud packaging working, a step towards drastically reducing the time we spend on releases and allowing us to do more.
We also continued to work on stuck notification issues with one bug fix and another close to being resolved, too.
This week we were very busy squashing bugs in Element X and weāre happy to announce that we are ready to make it available to the general public as a TestFlight app available for iOS, iPadOS and macOS (on Apple Silicon) soon (pending Appleās review). This is a pre-alpha version of the app which features the new faster sync and basic functionality. There are lots more features coming over the next few weeks! We will share the public link in our new Element X iOS public room over at https://matrix.to/#/#element-x-ios:matrix.org
This week our efforts have been split between Element X and Element Android:
On Element X, weāre focused on laying the foundations for the app, improving our tools and processes for distributing the updated Rust SDK as an Android module and refining the initial screens of the app, matching the new designs and UX flows.
On Element Android, weāve released a new version 1.5.26 with more fixes and improvements for the Rich Text Editor, Polls and Location Sharing features, to name a few of them.
Happy to announce a neat little CLI tool (built with rust, of course) to migrate your matrix rooms from one account to another: matrix-migrate is inspired by the the EMS migrator, but
is a nice little CLI tool, based on matrix-rust-sdk
allows for restarts (refreshes at the beginning)
it runs the operations async in parallel and is thus quite a bit faster
Iāve continued to develop Matrix Wrench, a webapp for techy Matrix admins to manage rooms and room state. It can be hosted on any static web space, supports multiple logins and has just one direct dependency (htm/preact).
Lots of great new features got released in the last two weeks. Here are the highlights:
Added: Tables of joined rooms and direct contacts
Added: New input for identities: Masquerade As Matrix ID (for AppService tokens)
Fixed: Knocking button didnāt work (āError: Content not JSON.ā)
After we had some great time at FOSDEM and where we were able to test our Barcamp widget with a broader group, we are thrilled to announce that we finally made the next widget public:
Entering the matrix-meetings-widget!
The widget allows to plan meetings, invite other users, configure meetings rooms, view your calendar, and perform video conferences.
All data is stored in Matrix, no external service required. As the Widget API is a bit limited for this use-cases, itās a combination of a widget and a bot.
As a small teaser: We are in the progress of building a whiteboard widget that is fully based on Matrix without an external storage.
If you have any questions, reach out to us at #nordeck:matrix.org.
A new release of Trixnity is out. Among other things, there are some performance improvements regarding reading/saving files and reply fallback support has been added.
Since there are people out there who actually use my tool for writing bots, I revived mnotify and started rewriting it in Rust using the matrix-rust-sdk. As a consequence, E2EE now works out of the box! Thanks to vadozemac builds without external C libraries are possible! If you are familiar with Rust and the matrix-rust-sdk, help is appreciated! š
We now have a nice web page for each event! These provide a convenient way to share event details with others, and are already used in the iCalendar feed. If/when updates to Mastodon and Steam are live, they will also use these pages. For an example web page, this corresponds to the event coming up this weekend:
Meet Nico who many might know as the maintainer of the nheko client and a passionate critic. We talked about how he hopes to improve Matrix by voicing concerns on various change proposals and how the similarity of the names Nico and nheko is just a coincidence.
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).
I wrote two blog posts (one, two) about decentralization and its advantages over centralized networks (with some Matrix examples). Itās in Swedish, but I hope some find it useful.
Would you like to get your tech news inside of your Matrix client of choice? Iāve set up a simple room that pulls articles from dozens of quality RSS feeds (including This Week In Matrix) and posts them in the room.
You can join the read-only room at: https://matrix.to/#/#tech:uxn.one
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.
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
dendrite.s3cr3t.me
230
2
dendrite.matrix.org
244
3
maximiliangaedig.com
272
4
matrix.org
291
5
celehner.com
317
6
rustybever.be
388.5
7
evulid.cc
533
8
zemos.net
902.5
9
conduit.test.zemos.net:8447
1055.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.