matrix.org/content/blog/2024/05/2024-05-03-twim.md

28 KiB
Raw Permalink Blame History

+++ date = '2024-05-03' title = 'This Week in Matrix 2024-05-03'

[taxonomies] author = ["MTRNord"] category = ["This Week in Matrix"] +++

Matrix Live

{{ youtube_player(video_id="EPJM_lSmDpg") }}

Dept of Status of Matrix 🌡️

Governing Board Elections 2024 - Voting Starts on May 18, 2024

Thomas B says

Only two weeks remain until the first Governing Board Elections.

Who are the nominees?

You can find the names of the nominees on the election page, but who are they, and what are their visions for the future? The nominees' campaigning has been underway since April 27. Members of the ecosystem are already quite active at #ecosystem.forum:matrix.org. Feel free to join and meet the nominees for the ecosystem members group.

Please, other constituencies, also find a place to meet, greet, and chat with members where people can get to know you better.

With Josh Simmons (away, back May 9th)'s permission, I opened the space #governing-board-nominee-campaigning-bonfire:matrix.org with several rooms for the different constituency groups.

Members: Come and join to meet the nominees! Nominees: Come and join to share your ideas with members!

Dept of Spec 📜

Andrew Morgan (anoa) says

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.

MSC Status

New MSCs:

  • There were no new MSCs this week.

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

Don't panic; each of those MSCs were closed in favour of new MSCs that superseded them.

Spec Updates

The Matrix.org Foundation is gearing up for elections of the Governing Board. The Governing Board will influence the future direction of Matrix, and is made up of 9 constituencies. The Spec Core Team is one of these constituencies, alongside community members, individuals from sponsors, the managing director etc. In our case, the Spec Core Team may put forward two members to be part of the Governing Board, and only members of the Spec Core Team will vote on who this will be.

So far we have received several nominations from within the team; you can view the full list of nominations for each constituency.

Of course, that still leaves 8 other constituencies, some with more than two members. Whether you're a company or an individual, learn how you can put your own name in the hat here!

On a somewhat separate topic, a reminder that the next release of the Matrix spec, v1.11, is expected this month (May). Stay tuned for more news on that front soon.

Random MSC of the Week

The random MSC of the week is... MSC4000: Forwards fill (/backfill forwards)!

This MSC defines a new Federation API endpoint, GET /_matrix/federation/v1/forwards_fill/{roomId}, which differs from /backfill in it allows you to fetch events that occurred "later" in the DAG. (It also differs in that the events provided are not also included in the response, but that's less relevant here.)

I initially wondered why this MSC is actually useful. To me, /backfill makes intuitive sense. If you receive an event that has a prev_events or auth_events field referencing an event ID you don't know about, you'd call /backfill on other homeservers asking if they had that event. But how would you know that you lack an event that's forward ("later") in the DAG?

It appears that the mechanism here would be different. You wouldn't know - so you'd eagerly ask this question, seeing whether you got anything back that you didn't know about.

A use case for this is when a client calls /context on an event, which gives you the events "around" it. Today, the homeserver gives you the surrounding events that it knows about. But what if there's a gap in the DAG? This can happen if you or another homeserver in a room is on an unreliable connection, and that other homeserver failed to inform you that they sent an event.

Typically this is resolved by receiving a later event which references one of the ones you're missing; you'd call /backfill using the later event on a homeserver that has the event you're missing.

But what if that later event hasn't been sent yet? It can be useful to have a proactive method of asking for missing events. That's the gap in functionality that /forwards_fill can fill (I'm sorry).

If you find the prospect of this endpoint useful, head over to the MSC and leave your feedback as a PR review comment.

Dept of Servers 🏢

strawberry (it/pup/she/they) 🏳️‍⚧️ 🦴💜🩷 says

conduwuit

Release 0.3.1

Hi everyone! conduwuit 0.3.1 has been released. This is a minor maintenance follow-up to last week's release which was very well received by many new users. This week was mostly cleanup, improvements, and some bug fixes. Some of the changes include:

  • Add Complement testing support to CI.
  • Optimize RocksDB compaction to further reduce database file count.
  • Improve concurrency on single-core systems.
  • Fix presence status results from /presence/{userId}/status. (/sync results unaffected).
  • Nix flake fixes and improvements; cache dependencies in binary cache and improve build performance.
  • Workaround room creation requests with non-spec compliant initial_state bodies (source was an appservice).
  • Start uploading container images to GitLab Container Registry.
  • Bump all the dependencies everywhere (maintenance)
  • General code cleanups, minor optimisations, and maintenance refactors before we transition out of feature-freeze and prepare for the next major release.

GitHub Releases | Docker Hub | NixOS

Liberapay | GitHub Sponsors | Ko-fi

Chat with us in #conduwuit:puppygock.gay

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the Element

Erik reports

We released Synapse v1.106.0 this week, which contains some small performance improvements and bug fixes. Check out the release notes for more details!

Andrew Morgan (anoa) announces

Repeating this in here as it only ended up in TWIM out of bounds:

This week Element released Synapse v1.105.1, which is a security release that fixes a denial of service attack. If you haven't upgraded already, please do!

Note that the v1.106.0rc1 release candidate also contains the security fix. Thanks!

Dept of Clients 📱

Fractal (website)

Matrix messaging app for GNOME written in Rust.

Kévin Commaille reports

Here comes the bride Fractal 7, with extended encryption support and improved accessibility. Server-side key backup and account recovery have been added, bringing greater security. Third-party verification has received some bug fixes and improvements. Amongst the many accessibility improvements, navigability has increased, especially in the room history. But thats not all weve been up to in the past three months:

  • Messages that failed to send can now be retried or discarded.
  • Messages can be reported to server admins for moderation.
  • Room details are now considered complete, with the addition of room address management, permissions, and room upgrade.
  • A new member menu appears when clicking on an avatar in the room history. It offers a quick way to do many actions related to that person, including opening a direct chat with them and moderating them.
  • Pills are clickable and allow to directly go to a room or member profile.

As usual, this release includes other improvements, fixes and new translations thanks to all our contributors, and our upstream projects.

We want to address special thanks to the translators who worked on this version. We know this is a huge undertaking and have a deep appreciation for what youve done. If you want to help with this effort, head over to Damned Lies.

It is available right now on Flathub.

We are already hard at work for our next release, so if you want to give us a hand you can start by looking at our Newcomer issues or just come say hello in our Matrix room.

FluffyChat v1.20.0 has been released 🥳 (website)

Krille-chan says

Design improvements and new advanced UI to manage rooms.

Full Changelog

  • build: Fix google services patch (Krille)
  • build: Update matrix dart sdk (krille-chan)
  • build: Update to Flutter 3.19.6 (krille-chan)
  • chore: Let error reporter fill out bug report (krille-chan)
  • chore: More nicer event source display (krille-chan)
  • chore: Update user has knocked localization with emoji (krille-chan)
  • design: Adjust chat settings design (krille-chan)
  • design: Adjust settings design (krille-chan)
  • design: Fix color of invite button (krille-chan)
  • design: Follow up chat settings design (krille-chan)
  • design: Follow up settings design (krille-chan)
  • design: Improve user permission settings (krille-chan)
  • design: New chat access settings (krille-chan)
  • design: Redesign permissions settings with dropdownbuttons (krille-chan)
  • design: Remake UX of selecting messages and chats (krille-chan)
  • refactor: Download on android and iOS with file_picker (krille-chan)
  • Translated using Weblate (Arabic) (Rex_sa)
  • Translated using Weblate (Basque) (xabirequejo)
  • Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山)
  • Translated using Weblate (Dutch) (Anonymous)
  • Translated using Weblate (Estonian) (Priit Jõerüüt)
  • Translated using Weblate (Filipino) (searinminecraft)
  • Translated using Weblate (Finnish) (Anonymous)
  • Translated using Weblate (Galician) (josé m)
  • Translated using Weblate (German) (Christian)
  • Translated using Weblate (Hungarian) (Máté Menyhárt)
  • Translated using Weblate (Indonesian) (Linerly)
  • Translated using Weblate (Latvian) (Edgars Andersons)
  • Translated using Weblate (Portuguese (Brazil)) (lucasmz)
  • Translated using Weblate (Portuguese (Brazil)) (Rudah Ximenes Alvarenga)

Element X iOS (website)

A total rewrite of Element-iOS using the Matrix Rust SDK underneath and targeting devices running iOS 16+.

Doug says

  • 🔗 Permalink support is finished and will be available in next weeks release candidate! This includes support for users, rooms and events along with navigating to replies.
  • 🪄 Logging in with a QR code works and its truly magical! Weve now seen plenty of successful test logins using this flow and are finishing off some error handling for the feature to be complete.
  • 🔔 Weve finally added support for mentioning users when the Rich Text Editor is disabled. This gives markdown input parity with RTE and along with the recent change to use a plain text field, makes it the most reliable text input choice.

Element X Android (website)

Android Matrix messenger application using the Matrix Rust Sdk and Jetpack Compose

Jorge says

This week has been really quiet since we have been focused on continuing the development of two features:

  • Permalinks: we fixed a couple of bugs related to navigation and have been working on getting navigating to an event and external links working so opening a matrix.to or element.io link will redirect you to the right room, user or event in a room.
  • QR code login: more polishing work has been done in preparation for the feature to be completed in other platforms.
  • Besides that, we worked on fixing some annoying bugs related to internal app versioning and migrations and minor design issues, as well as some rich text editor fixes to be included soon.

Dept of Non Chat Clients 🎛️

Emma [it/its] reports

BugMine

Matrix-based issue/bug tracker, based on Rory&::LibMatrix

Just a small progress update on basics this time around :)

I've figured out the basic semantics for having a project room, and a workaround for servers missing /state/x/y?format=event! The basic addition of issues has also been implemented.

The developer CLI also got some new powers, such as summarising all project rooms with issues at the press of a button!

Oh yeah, the web UI is responsive even with thousands upon thousands of entries! Really proud of that :)

Does any of this sound super exciting? Feel free to join us in this journey at #bugmine:rory.gay!

And, as with all of the other projects:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, bots, custom front-ends, ...?
  • Discussion, suggestions and ideas are welcome in #bugmine:rory.gay

Dept of SDKs and Frameworks 🧰

Johannes says

For those trying to use matrix-js-sdk in React Native, https://github.com/matrix-org/matrix-rn-sdk has been dusted off. It's now written in TS and provides a crypto store that is compatible with the latest version of matrix-js-sdk (if used with the legacy ASM build of libolm).

It's important to note that this won't work anymore once the libolm crypto code has been removed from matrix-js-sdk. The new Rust crypto library is not injectable in the same way, both because this feature hasn't been added in matrix-js-sdk and because its much bigger than libolm which makes bundling the ASM infeasible.

Emma [it/its] announces

Rory&::MatrixUtils - General utility suite for Matrix

Rory&::MatrixUtils is the oldest project in the Rory&::LibMatrix suite of projects. Did you know that LibMatrix used to be called MatrixRoomUtils.Core? In case you weren't already aware of Rory&::MatrixUtils, it's a general suite of tools aimed towards more niche or specific tasks, such as debugging space relations, migrating accounts, managing room profiles, etc.

In addition, it also has some more general nice-to-haves, such as being a native MSC3784 client (policy lists are identified by room type, mainly used for the Policy Editor), tooling to migrate a room across upgrades after a room split, support for Synapse's room query API with additional filters (eg. member count). In addition it also has quite a few moderation-related utilities, such as being able to modify some Mjolnir/Draupnir account data entries such as the protected room list. All in all, it's meant to offer dedicated tools to achieve a lot of "niche" tasks, and if you feel like you need a specific manual tool, feel free to reach out!

The "first party" instance is available at https://mru.rory.gay, and is a clientside-only web app!

And, as with all of the other projects:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, layout/UI/UX improvements, anything!
  • Discussion, suggestions and ideas are welcome in #mru:rory.gay

Emma [it/its] announces

Rory&::LibMatrix (.NET 8 matrix bot/client library/SDK)

Some new features and bug fixes this time around, including work on HomeserverEmulator.

Additions

  • Added LibMatrixException to denote internal exceptions, such as when attempting to use a feature that a given homeserver implementation doesn't support.
  • Added Room.GetStateEventIdAsync(string type, string stateKey = "", bool fallbackToSync = true) in order to get the event ID for a given state event
    • Warning: this requires a homeserver implementation that supports /state/x/y?format=event properly though falling back to sync will be attempted unless disabled (to my knowledge only Conduwuit supports this).
  • HSE: Added resolving room aliases via room directory.
  • HSE: Added event relations endpoints, at least partially.

Changes

  • _hs.GetJoinedRoomsByType(string) now optionally takes an integer to limit concurrent requests.
  • Fixed Room.JoinAsync() not correctly splitting room ID to add a default via if none are provided.
  • HSE: Fixed a bug that caused attempting to download media to freeze the server and burn CPU?
  • HSE: Optimised room ID to room mapping.
  • HSE: Fixed a race condition that may cause rooms to not be mapped by ID after creation
  • HSE: Fixed room creation not actually causing the room to be considered valid despite returning a room ID.
  • HSE: Fixed handling of user profile.
  • HSE: Fixed ASP.NET Core attempting to wrongly apply model validation (by disabling it wholesale)
  • HSE: Optimised room lookup by ID
  • HSE: Room.SetStateInternal now takes in the relevant user rather than setting sender = ""
  • HSE: Room state cache is now only rebuilt if timeline has changed.

And, as always:

  • The code is available at cgit.rory.gay!
    • All contributions are more than welcome, be it documentation, code, anything! Perhaps, example usecases, bots, ...?
  • Discussion, suggestions and ideas are welcome in #libmatrix:rory.gay (Space: #mru-space:rory.gay)
  • Got a cool project that you're working on and want to share, using LibMatrix? Be sure to let me know, I'd love to hear all about it!

Dept of Services 🚀

MTRNord announces

Draupnir4All

Sorry for the late Announcement but there will be db maintenance from 21:30 CEST until 24:00 CEST where I move the DB and the bot as well as its HS to new server infra which should solve the reliability issues it had over the last 2 weeks.

In reality the downtime likely is less since its already mostly prepared :) Just giving me some time in case of issues which I didnt account for :)

Dept of Events and Talks 🗣️

Matthew announces

I'm going to be in Delft in the Netherlands on Monday (May 6th), speaking in the Fediverse track at GOSIM Europe and finding out what Futurewei are up to with their Rust Matrix client Robrix and Robius UI framework.

GOSIM are also giving away 100 tickets to the conference specifically to folks in the Matrix & Fediverse communities:

🚀 Special Offer: 100 Complimentary Tickets to GOSIM Europe (May 6, 2024, Delft, The Netherlands) Limited Time Only! 🚀

Exciting news for developers and tech enthusiasts in the Fediverse space! We are thrilled to announce that we're offering 100 FREE TICKETS for the upcoming GOSIM Europe Event on a first-come, first-serve basis. This is your chance to dive into the latest in Fediverse and find likeminded people to collaborate with.

🎟️ How to Claim Your Free Ticket:

Register at GOSIM 2024 Conference Tickets, Mon, May 6, 2024 at 9:00 AM | Eventbrite

Use promo code: gosimfediverse2024

Hurry, as spaces are limited, and tickets are expected to go fast!

The GOSIM event promises to be an unparalleled opportunity to network with top experts, gain insights from leading tech innovators, and collaborate on exciting open source projects. Dont miss out on this chance to be part of something truly groundbreaking.

Offer valid for the next 72 hours only!

Secure your spot today and be part of the leading edge in tech innovation!

Dept of Interesting Projects 🛰️

Florian Jacob says

Florian from the Decentralized Systems and Network Services research group of KIT university reports:

In our research, we decompose practical decentralized systems to match them to decentralized systems theory, and bring that theory back to practice. 🧪 Many practical decentralized systems share a common core of “a set of events ordered in time by predecessor hashes”, like the Matrix event graph. By unifying this core as a "hash chronicle" conflict-free replicated data type, we show that hash chronicles act as a fault-tolerant, logical clocks that order events ⏱️. Hash chronicles and derived systems can achieve monotonicity (next state is higher / bigger / greater / older than the current state), which we show to be a strong security property despite being implicit in practical system designs.

You can read all about it in our newest publication, Logical Clocks and Monotonicity for Byzantine-Tolerant Replicated Data Types, at this year's Workshop on Principles and Practice of Consistency for Distributed Data. The article is freely available as open access under CC-BY. If you are interested in discussing this or other scientific resources related to Matrix, join #science-of-matrix-reading-group:kit.edu 🧑‍🔬🔖.

Matrix in the News 📰

HarHarLinks announces

Linux Mint is going Matrix https://blog.linuxmint.com/?p=4675

tldr: Based on the feedback from the community, Mint is switching to Matrix. While previously Mint developed it's own IRC client, but now Mint 22 will start shipping Element and a small onboarding UI.

Matthew announces

We also forgot to highlight that Element and BigBlueButton are partnering together on using Matrix to add end-to-end encrypted comms to BBB - see this week's Matrix Live for the demo! https://element.io/blog/partnership-with-bigbluebutton-for-matrix-based-virtual-classrooms/

Matthew says

Forgot to mention that last week that the United Nations (UNICC) has selected Matrix (via Element) for their secure communication needs - https://element.io/blog/unicc-selects-element-for-secure-communications/ and https://www.techradar.com/pro/the-united-nations-ditches-big-tech-in-a-bid-for-security for more details.

Matrix Federation Stats

Aine says

collected by MatrixRooms.info - an MRS instance by etke.cc

As of today, 9464 Matrix federateable servers have been discovered by matrixrooms.info, 2835 (30.0%) of them are publishing their rooms directory over federation. The published directories contain 161792 rooms.

Stats timeline is available on MatrixRooms.info/stats

How to add your server | How to remove your server

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.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

Rank Hostname Median MS
1 doctoruwu.uk 226
2 maunium.net 299
3 aguiarvieira.pt 300
4 spritsail.io 304
5 synapse.rntpts.de 313
6 uwu.sulian.eu 315
7 nerdhouse.io 316
8 girlboss.ceo 345.5
9 momou.chat 375
10 puppygock.gay 416.5

#ping-no-synapse:maunium.net

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 doctoruwu.uk 115
2 synapse.rntpts.de 150
3 aguiarvieira.pt 152
4 girlboss.ceo 171
5 spritsail.io 174.5
6 matrix.its-tps.fr 182
7 syn-075-141-169-120.res.spectrum.com:8447 237
8 uwu.sulian.eu 261
9 puppygock.gay 266
10 jpeg.city 282

That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!