This Week in Matrix 2024-04-19

19.04.2024 19:30 — This Week in Matrix Thib

Matrix Live

Dept of Status of Matrix 🌡️

Josh Simmons announces

WOW! What a week. Today I am thrilled to introduce not one or two, but eight new organisational members. We are extremely grateful to Futurewei Technologies for joining as our newest Gold Member – more on that soon – and to Verji Tech AS for joining as our newest Silver Member. Their support represents a big step toward financial sustainability for the Matrix.org Foundation.

Further, today we welcome Community Moderation Effort, Matrix Elm SDK, FluffyChat, Matrix Community Events, Polychat, and Rory&::LibMatrix as Ecosystem Members! If you couldn’t tell, there’s a lot going on in the Matrix ecosystem!

Does your community use Matrix? Does your project speak Matrix? Or does your business incorporate Matrix into your work? Show your support and become a member today.

Topping off this week’s excitement, our Governing Board nomination period is just about to start! Learn more about the elections, as well as who can nominate and how in our recent blog post.

Continue reading…

Announcing the 2024 Governing Board elections

12.04.2024 14:00 — Foundation Josh Simmons

Welcome to the first ever Governing Board election season for the Matrix.org Foundation! We start with a one week nomination period that opens on Saturday, April 20th and closes on Friday, April 26th AOE time.

We’ll be doing our best to reach out to every constituent group to let them know they are eligible to nominate candidates for the election. That said, this is our first election and we don’t yet have contact information for everybody who is eligible, so we want your help getting the word out.

If you are interested in nominating someone – or yourself – to be a candidate in this election, read this post in its entirety.

To learn about what the Governing Board is, what it does, and the context it operates in, read this blog post from last December. You are also welcome to read the Governing Board’s current bylaws.

Go here for instructions on submitting a nomination!

Continue reading…

This Week in Matrix 2024-04-12

12.04.2024 00:00 — This Week in Matrix Thib

Matrix Live

Dept of Status of Matrix 🌡️

Josh Simmons says

Important deadline: next week, the week of April 15th, is the last week to become a member before the Governing Board nomination period! You must be a member, or have your application in and approved, by the end of day on April 19th (AOE time) in order to be eligible to nominate. Stay tuned for a blog post all about that on Monday ✨

This week we’re proud to welcome GNOME and KDE e.V. as our second and third Associate Members, and there are more applications in the pipeline that we’re reviewing!

Continue reading…

This Week in Matrix 2024-04-05

05.04.2024 00:00 — This Week in Matrix Thib

Matrix Live

Dept of Status of Matrix 🌡️

Matthew reports

I wrote some thoughts on why governments should explicitly route taxpayer money into funding maintenance of open source infrastructure such as Matrix (rather than only funding feature dev, or not funding at all): https://matrix.org/blog/2024/04/open-source-publicly-funded-service/

Josh Simmons says

This week we're thrilled to welcome the Eclipse Foundation as our first Associate Member! We couldn't be happier with the response to our expanded membership program and are delighted that we will have greater community representation when we elect our first ever Governing Board in the coming months.

Dept of Social Good 🙆

elgatto says

I'm working on my cyber security bachelor's thesis and am reaching out to gather insights from users who use decentralized messaging applications.

I would be incredibly thankful if you could find the 2 to 4 minutes to fill out the form. Your experience in the matter is incredibly valuable.

You'll find the survey at https://questionnaire.ink/412758

Your responses are confidential and will be used solely for supporting my thesis. No personally identifiable information is collected.

Thanks! :)

Dept of Spec 📜

TravisR 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:

  • No MSCs were closed/rejected this week.

Spec Updates

While not much has happened to make the stats go up this week, the Spec Core Team (SCT) has been reviewing MSCs to bring them closer to Final Comment Period (FCP) and ensure their implementations are heading in a healthy direction. More review from beyond the SCT is always appreciated - feel free to join in on the SCT's weekly focus from the #sct-office:matrix.org room on Matrix.

Next week's focus is expected to be almost entirely Trust & Safety (T&S) related proposals, such as account suspension and media authentication. Stay tuned for updates!

Dept of Clients 📱

Ma's Trix

LDA [working...] says

Just started making a (simple) client in C recently for fun, Ma's Trix. It's really bare-bones and crashes sometimes, but overall been quite fun to write everything out myself!

You can try it out (and look at the terrible code) on your fx-CG50 graphing calculator at https://www.mastrix.org/ if you want(though you'll have to fiddle with random SDKs and may have to compile some things yourself, and some utilities used really only work on Linux).

(Funnily enough, I think it is the only actual C Matrix client around.)

FluffyChat (website)

Krille-chan reports

FluffyChat v1.19.0 has been released 🥳

FluffyChat v1.19.0 features an improved design for message bubbles and a lot of fixes under the hood.

  • build: Update matrix dart sdk (Krille)
  • build: Update to flutter 3.19.5 (krille-chan)
  • chore: Add missing command hints (krille-chan)
  • chore: Add pagekey to custom page builder (Krille)
  • chore: Adjust design of typing indicator (Krille)
  • chore: Adjust ticker of notifications for Android (Krille)
  • chore: Calc blurhash in other thread (Krille)
  • chore: Mark muted unread rooms with bold text (krille-chan)
  • chore: More minimal matrix pill (Krille)
  • chore: Try out CupertinoPage instead of custom transition in router (krille-chan)
  • ci: add a license compliance check (lauren n. liberda)
  • design: Connect bubbles from same sender (krille-chan)
  • design: Display images in correct ratio in timeline (krille-chan)
  • design: Make appbar in material you design for mobile mode (krille-chan)
  • design: New sticker picker next to emoji picker (krille-chan)
  • design: Nicer QR Code design (krille-chan)
  • design: Nicer reactions design with size animations (Krille)
  • feat: Add insert content via gboard (krille-chan)
  • feat: Reply with one button in desktop (krille-chan)
  • fix: Do not sync in background mode (krille-chan)
  • fix: FluffyChat should assume m.change_password capability is supported if not present per spec (krille-chan)
  • fix: never use root navigator for bottom sheets (The one with the braid)
  • fix: Remove pantalaimon message with normal error message (krille-chan)
  • fix: Search in spaces view (krille-chan)
  • fix: Set read marker on web (Krille)
  • fix: Point to correct path for auth.html so completing sso login flow no longer 404s (Gavin Mogan)
  • refactor: Better logic for removing outdated notifications (Krille)
  • refactor: Enhance logic when to mark room as read (krille-chan)
  • refactor: Remove old aliases workaround (Krille)
  • refactor: Sticker widget code (Krille)
  • refactor: Use dart blurhash (Krille)
  • Translated using Weblate (Basque) (xabirequejo)
  • Translated using Weblate (Interlingua) (Software In Interlingua)

Krille-chan reports

I found out that the flutter package sqflite_sqlcipher silently never encrypted the app database on iOS. This has now been fixed by using a new way to encrypt the sqlite file in an Flutter app, thanks to The One With The Braid. Also this version now supports database encryption on Linux and the desktop platform in general.

Element X iOS (website)

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

Mauro Romito reports

  • El-X-iOS version 1.6.1 has been released to the app store
  • Room Permalinks work has started both on the SDK and the iOS side
  • QR Code login work has started too, this will allow to login through your web Element client on El-X without the need of entering your password or using the OIDC flow directly.
  • Some bug fixes and improvements were made on the RTE

Dept of SDKs and Frameworks 🧰

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

Emma [it/its] announces

Finally pushed last week's changes, also took the opportunity to rewrite how homeservers are initialised.

Changes

  • Homeserver initialisation now makes less HTTP calls for well knowns, as this info is fetched once now, and passed down
    • Future plan: implement DNS server delegation resolution using DNS-over-HTTPS (DoH).
  • Homeserver implementation details (eg. synapse admin api client) have been moved to a separate directory rather than nested classes (also housing their request/response models)
  • Homeserver resolver service now takes a logger as a required parameter (simplifies code)
    • If you manually instantiate this class, pass a NullLogger, though this will print a console warning. If there is interest in silencing this, feel free to let us know in #libmatrix:rory.gay!
  • Some internal semaphored caches were abstracted to a new class in ArcaneLibs (SemaphoreCache<T>), this simplifies code greatly.
    • Still need to locate if we have any more of those.

Not sure if there's any more notable changes this week, they got drowned out by last week's changes

  • You can view the diff of the last 2 weeks of changes over at cgit.rory.gay!

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!

Matrix Rust SDK

bnjbvr announces

  • There's a new API to manipulate room breadcrumbs, aka a list of recently visited rooms. Rooms may be added manually to the breadcrumbs, and reloaded later. The information is stored in local storage (in the state store), so it can be reloaded across restarts.
  • Work on QR code login is still making progress in the shadows, with first runs fully working in example CLI programs 🥳
  • The FFI layer has been improved: more methods are async now, and methods to create permalinks with matrix.to have been exposed.
  • All the local echoes are now pinning at the bottom (end) of the timeline, including echoes for messages that failed to be sent.
  • And your usual load of smaller bugfixes and refactorings.

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict announces

After a more feature-rich release with Matrix 1.10 support last week, this week just a small bugfix release 4.3.1 for Trixnity:

features/improvements:

  • add more Mention-Regex types

bugfixes:

  • fix username collision calculation
  • fix NotificationService typo
  • fix retry on any HTTP-request exception

Dept of Ops 🛠

synadm (website)

Command line admin tool for Synapse (Matrix reference homeserver)

jacksonchen666 says

synadm 0.46 has been released with these changes and stuff:

Dept of Interesting Projects 🛰️

LDA [working...] reports

Whelp, to finally push off the week, I've finally ported my C proxy over to JS with WebUSB for Chrom(ium)

Mo says

Fractal Networks has developed a Matrix powered database replication extension for the Python based Django web framework called Fractal Database. Fractal Database leverages several interesting Matrix based “primitives” such as a distributed mutex (locking) mechanism in addition to a distributed task queue (think celery) based on the async Taskiq framework. Check out our hot off the press video overview of FractalDatabase at https://www.loom.com/share/7f4578d8ddef41a4838152f752b1b052?sid=47ff04be-1400-4dd7-a218-a2e6f80564af. Check out the code: https://github.com/fractalnetworksco/fractal-database

Matrix in the News 📰

First certified TI-Messenger

Nico reports

Famedly recently was certified by the Gematik as one of the first providers for the TI-Messenger service in Germany. TI-Messenger is a Matrix based messaging solution for the German healthcare service. Other providers are also expected to be certified soon.

With that certification first deployments can happen now, before a wider roll-out can happen later. This will ensure a secure and encrypted communication between doctors and other healthcare providers. Later on the messenger is expected to be extended to insurances, but also eventually to patients and other recipients of healthcare services.

Sadly the official announcement doesn't seem to mention Matrix directly, but Heise does: https://www.heise.de/news/TIM-Erster-Messenger-fuers-Gesundheitswesen-erhaelt-Zulassung-9676340.html (German article)

Official announcement from Gematik (in German as well): https://www.gematik.de/newsroom/news-detail/pressemitteilung-erster-ti-messenger-anbieter-zugelassen

Matrix Federation Stats

Aine says

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

As of today, 9494 Matrix federateable servers have been discovered by matrixrooms.info, 2861 (30.1%) of them are publishing their rooms directory over federation. The published directories contain 159968 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.

RankHostnameMedian MS
1doctoruwu.uk218
2uwu.sulian.eu241
3conduwuit.aguiarvieira.pt277
4aguiarvieira.pt279
5nerdhouse.io327
6matrix.org336.5
7rom4nik.pl411
8herkinf.de434
9littlevortex.net492
10pain.agency523.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.

RankHostnameMedian MS
1doctoruwu.uk102
2conduwuit.aguiarvieira.pt138.5
3uwu.sulian.eu154.5
4spritsail.io169
5aguiarvieira.pt199
6matrix.its-tps.fr217
7girlboss.ceo250
8transfem.dev252
9inu.is325.5
10littlevortex.net453

That's all I know

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

Open Source Infrastructure must be a publicly funded service.

04.04.2024 16:30 — Foundation Matthew Hodgson

Hi folks,

The events of the last week have been utterly terrifying as we’ve seen a highly sophisticated targeted attack on open source infrastructure play out in public, in the form of the liblzma backdoor. Matrix is not impacted by the attack (none of our code or infrastructure is using liblzma or xz 5.6), but it has been a massive wakeup call in terms of understanding the risks posed by overstretched open source maintainership.

Continue reading…

This Week in Matrix 2024-03-29

29.03.2024 19:30 — This Week in Matrix Thib

Matrix Live

No Matrix Live as your usual host Thib has been unavailable most of the week!

Dept of Status of Matrix 🌡️

Josh Simmons says

Our first ever Governing Board elections are approaching, with the nomination period set to begin in late April. If you want your organization or community to be able to nominate a candidate, or to vote in the election, the time to join as a member is now – same for individuals who want to participate!

This week we’re thrilled to announce three new members: two Ecosystem Members, Trixnity and Nheko-Reborn, and our first Platinum Member, Element!

Dept of Spec 📜

Andrew Morgan (anoa) [UTC-5] announces

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:

  • No new MSCs were created this week.

MSCs in Final Comment Period:

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

A reminder to teams working on Matrix 2.0 features to update their MSCs and send them for review in #sct-office:matrix.org soon to help bring them closer to release in the next couple of quarters.

Thank you to Kévin, Johennes and Rich for their PRs to the spec text this week!

Random MSC of the Week

The random MSC of the week is... MSC4018: Reliable call membership!

This proposal makes the case for putting the onus on homeservers for tracking whether a user is in a Matrix voice/video call, rather than relying on clients. Currently, clients must update the user's m.call.member state event in the room when they join/leave a call. This can be problematic if a user closes their client without giving it a chance to do so however (such as when a browser is force-quit). This can lead to other clients thinking the client is still in the call, when it left minutes ago!

A homeserver typically continuously remains online. If it were in charge of tracking call membership, then it could notice that a user's device has disconnected from all call streams, and could then update the m.call.member state event in the room itself for that user.

The MSC also proposes two new Client-Server API endpoints which instruct the homeserver to either add or remove a device from the user's m.call.member state event. This would prevent two clients attempting to update the state event at the same time, potentially resulting in the modification of one of the clients being lost.

The intention is that this would lead to more reliable Matrix voice/video calls! If any of that sounds interesting to you, please have a look and leave your thoughts on the MSC.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Andrew Morgan (anoa) [UTC-5] announces

This week the team released Synapse v1.104.0rc1, in preparation for the full release of v1.104.0. It contains improvements to OIDC support, as well as a few fixes for various bugs and to the Synapse Docker image.

Please test the release candidate if you're able to!

Dept of Clients 📱

iamb (website)

A Matrix client for Vim addicts

ulyssa reports

I've released and published iamb v0.0.9! 🎉 Since its last version, the client has gained support for:

  • Image previews through several different terminal image protocols
  • Threads, unread indicators, and notifications via terminal bell or desktop environment
  • Customizing keybindings, sorting for room and member lists, and other parts of the UI
  • Commands for importing and exporting room keys
  • Updated to use v0.7.x of the matrix-rust-sdk
  • SSO login, TOML configuration, fixes for Windows Terminal, improved manual pages, and many other fixes and improvements!

The online documentation has been updated to account for new configuration options and commands, and you can read the GitHub releases page for a full list of changes. I've also added a PACKAGING.md file to the repository to provide a place for notes useful to package maintainers.

Many thanks to all of those who have contributed to this release! :pray:

SchildiChat (website)

SchildiChat is a fork of Element that focuses on UI changes such as message bubbles and a unified chat list for both direct messages and groups, which is a more familiar approach to users of other popular instant messengers.

SpiritCroc reports

SchildiChat Next, our fork of Element X for Android, received some new experimental settings for managing your chat overview. You can now:

  • Sort favorite chats on top
  • Sort low priority chats on bottom
  • Filter by DMS/groups, unread chats, favorites, and rooms not added to any space, via dedicated pages from our bottom space navigation

Furthermore, you can now send freeform reactions again, if you want to react to messages with arbitrary text or just want to use your keyboard's emoji picker instead of the app's inbuilt picker.

Fractal (website)

Matrix messaging app for GNOME written in Rust.

Kévin Commaille reports

Spring is here in Fractal land. Birds chirping, flowers blooming, and a new beta for you to try!

Staff’s picks for Fractal 7.beta:

  • Encryption support has been extended, with server-side key backup and account recovery.
  • 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 version 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.
  • Many more improvements on the accessibility front, for better navigability with a screen reader.

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

It is available to install via Flathub Beta, see the instructions in our README.

As the version implies, there might be a slight risk of regressions, but it should be mostly stable. If all goes well the next step is the release candidate!

As always, you can try to fix one of our issues. Any help is greatly appreciated!

Element X Android (website)

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

benoit announces

  • Element X Android 0.4.7 is available on the PlayStore, for the tester. 2 features have been enabled "Room List filters" which let the user filter the rooms and "Mark as unread”. More details in https://github.com/element-hq/element-x-android/releases/tag/v0.4.7
  • This week we’ve done some preparatory work to support permalink navigation. In the meantime, the Rust team is actively working on exposing new API to support this feature.
  • Also working on a troubleshoot notification screen, as per what was done on Element Android. We will also work on adding a way to switch between available PushProviders in the coming week..
  • Last note: it will be more obvious that a poll is closed in the timeline, thanks to an enlightenment of the winning answer.

Dept of Non Chat Clients 🎛️

Circles (website)

E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.

cvwright announces

Circles is a secure social network app for families and friends, where every post is protected with Matrix's E2E encryption. We have recent releases of Circles on both Android and iOS.

On Android, v1.0.27 is now available on F-Droid.org and in beta on the Play Store. New features in this release include:

  • Improved email address management
  • Re-designed People tab to help you connect with friends of friends
  • Support for recovering your account when you forgot your password
  • UI for configuring the default power level in each room

On iOS, v1.0.1 is now available in the App Store, featuring:

  • New support for push notifications
  • Cross-signing for an account's 2nd/3rd/etc devices
  • Several bug fixes

Source code is available from the FUTO Gitlab (Android | iOS) and from our Github mirrors (Android | iOS).

If you're interested in trying the app, stop by and say "Hi" in #circles:futo.org.

Dept of SDKs and Frameworks 🧰

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

Emma [it/its] announces

Some rough changes that haven't been published yet, I'll have to work out the kinks first ^^

Changes

  • Rewrote client and server well known resolvers (currently broken if passing a full URI)
  • Added JsonSerialiserOptions to StateEvent.RawContent in order to remove nulls (oops ^^')
  • HSE: Small rewrite to reading of auth data, to deduplicate a lot of code
  • HSE: improved logic for detecting if a sync response is empty
  • HSE: now reports supporting all room versions over /capabilities (Element still won't shut up :c)

Additions

  • HSE: logging out has been implemented
  • HSE: Importing of external matrix accounts using nheko's config file format
  • HSE: Importing of external matrix rooms over client-server API (see previous)
  • HSE: fetching media from other homeservers
  • HSE: incremental sync! (at least for joined rooms)
  • HSE: /messages endpoint
  • HSE: /event/:id endpoint
  • HSE: estimation of position in time based off of pagination/sync tokens, and event IDs
  • HSE: chat commands for utility interaction (!hse x y z)
  • HSE: shorthand for calculating final state from a section of timeline (not state res!)
  • HSE: Support for read markers (top level only)
  • HSE: Added shorthand to get all rooms by member mxid, with membership

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!

Matrix Rust SDK 🦀

bnjbvr announces

It's been a quiet week, with the team merging the LinkedChunk data structure for efficiently storing events in the EventCache, a few bugfixes here and there, as well as a full investigation and fixing issues in integration tests.

The team keeps on working on the event cache (including matching known events against new events received from servers, and prepping for caching on disk) as well as the QR code login feature.

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict reports

I added support for Matrix 1.10 in Trixnity 4.3.0 this week. Changes since last TWIM:

features:

  • Matrix 1.10
  • move all room list calculation logic into RoomListHandler making it a lot faster due to less database operations
  • BREAKING: naming of files saved by client-media-okio has been changed. This means, that files may need to be redownloaded

bugixes:

  • fix, that sending keys to new members of an encrypted room may not have been triggered
  • handle redacted event in RoomEventEncryptionService

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi says

Thanks to Aine of etke.cc, matrix-docker-ansible-deploy now uses KeyDB (a drop-in Redis alternative), instead of Redis.

The playbook used to install Redis (and now installs KeyDB in its place) if services have a need for it (enabling worker support for Synapse, enabling Hookshot encryption, etc.) or if you explicitly enabled the service (redis_enabled: true or keydb_enabled: true).

This change is provoked by the fact that Redis is now "source available". According to the Limitations of the new license (as best as we understand them, given that we're not lawyers), using Redis in the playbook (even in a commercial FOSS service like etke.cc) does not violate the new Redis license. That said, we'd rather neither risk it, nor endorse shady licenses and products that pretend to be free-software. Another high-quality alternative to Redis seems to be Dragonfly, but the Dragonfly license is no better than Redis's.

To learn more, refer to our changelog entry.

Slavi announces

Thanks to Julian Foad, matrix-docker-ansible-deploy can now install the Pantalaimon E2EE aware proxy daemon for you. It's already possible to integrate it with Draupnir to allow it to work in E2EE rooms - see our Draupnir docs for details.

See our Setting up Pantalaimon documentation to get started.

Dept of Bots 🤖

Gnuxie 💜🐝 announces

Draupnir v1.87.0 was released, and this will be the final release before we merge our 6month in the making rework of the Draupnir core. We are advising anyone running against gnuxie/draupnir:develop to instead pin to gnuxie/draupnir:v1.87.0 as there is going to a significant drop in user experience as we integrate and gather more feedback on the rework. Those running against gnuxie/draupnir:latest will be unaffected, but we will advise you to read the v2.0.0 release notes as there will be dramatic changes in behaviour. If you're a confident system admin and you're happy with manually intervening then by all means continue to use develop and come talk to us in #draupnir:matrix.org.

Dept of Events and Talks 🗣️

Matrix User Meetup Berlin

saces announces

Next Matrix user meetup 3.4.2024, 8 pm @ c-base

Have you seen the weather forecast? Finally we can stop pretending to be interested in matrix and meet up for BBQ again :)

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.

And don't forget to 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 Interesting Projects 🛰️

Octoprint plugin

Cadair reports

I have for the first time in years pushed a release of my octoprint plugin which sends matrix notifications about the status of your prints with images. Thanks primarily to @Links2004 we now properly handle image transformations, upload images in a background thread and don't send markdown in the plain text body of the matrix message. If you run into any issues please open an issue on the github repo.

Moderator Tools for PubHubs

JulianF announces

This week I have put up a web site documenting my work on Moderator Tools for PubHubs.

PubHubs is a Dutch research project to enable citizen-facing organisations to provide online group communications, value-aligned with their real-world presence. It uses matrix protocol, combined with an interesting and different user identity model involving pseudonyms and selective cryptographic disclosure of identity attributes such as "is over 18" or "is a member of organisation X". Each hub is built around a non-federating Synapse server, with their own identity plugins and custom client. (All public-interest, open-source.)

I have been working on three aspects of introducing initial moderation tooling. Some of it crosses over with general matrix (this week's Pantalaimon role is a side product of the Draupnir part), while some is different (Attribute Disclosure), and the third part is general (research and planning for Civilised Discourse).

My funded stint is coming to an end and I am looking for ways to continue in any related area of work -- please matrix me @julian:foad.me.uk !

Dept of Guides 🧭

Matrix Codebrowser

Loren says

Some of you may be familiar with https://codebrowser.dev already. For those of you who aren't, it's a tool that parses compiled code in C++, Rust, or Dart and displays it as a webpage with full syntax highlighting, clickable links to symbols, searchable symbols, and a wealth of other features. It's very useful for browsing a library's source code to see what individual functions do (for example, here's QObject::connect() from Qt 6). The codebrowser software was originally built by Woboq, but as the maintainers have moved on to work on things like Slint, they have passed it on to KDAB.

I have spun up an instance of codebrowser at https://matrix.codebrowser.lorendb.dev, serving sources for mtxclient, libQuotient, and olm so far. If you want to see more projects added, please let me know and I'll add them if possible. I'm focusing on libraries for now, as they are the most useful for developers, but I'm not opposed to adding other Matrix projects either.

Please note that I currently can't support Rust or Dart code yet; while KDAB has implemented support for those languages, they haven't yet open-sourced their changes (though I can confirm that is tentatively in the pipeline). Once they open-source their changes, I'll be upgrading my installation to use that version and adding project like matrix-rust-sdk and vodozemac.

If you have any questions or feedback, come say hi in #matrix-codebrowser:nheko.im!

Matrix Federation Stats

Aine announces

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

As of today, 9531 Matrix federateable servers have been discovered by matrixrooms.info, 2844 (29.8%) of them are publishing their rooms directory over federation. The published directories contain 161695 rooms (gitter.im rooms are back)

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.

RankHostnameMedian MS
1fostered.uk229.5
2aguiarvieira.pt239
3maunium.net272
4075-141-169-120.res.spectrum.com:8447275.5
5nerdhouse.io299
6herkinf.de374
7transfem.dev391
8fx3.eu507.5
9pain.agency533
10littlevortex.net551.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.

RankHostnameMedian MS
1aguiarvieira.pt156
2075-141-169-120.res.spectrum.com:8447162.5
3nerdhouse.io164
4fostered.uk185.5
5spritsail.io192.5
6transfem.dev200
7herkinf.de244
8doctoruwu.uk247
9daedric.net274.5
10craftingcomrades.net302

That's all I know

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

This Week in Matrix 2024-03-22

22.03.2024 19:30 — This Week in Matrix Thib

Matrix Live

Dept of Spec 📜

Half-Shot announces

Great news everyone! As of Matrix 1.10, you can now specify more contact information about your homeserver via the new /.well-known/matrix/support endpoint.

This is useful because it allows other citizens of the federation to know who to contact if there is a problem, and it only requires you to fill in a few details to get going. This change has been on the go since 2019, so on a personal note I am thrilled to see this finally land. You can see an example on the foundation's very own server at https://matrix.org/.well-known/matrix/support

TravisR announces

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:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

We released version 1.10 of the spec today! Read the blog post for the full details. Many thanks to Kévin Comaille for writing many of the spec PRs that landed in today's release!

With the release of Matrix 1.10, we on the Spec Core Team are looking forward to Matrix 1.11 and Matrix 2.0. We are asking the teams working on Matrix 2.0 features to update their MSCs and send them for review in #sct-office:matrix.org soon to help bring them closer to release in the next couple of quarters.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by Element

Olivier 'reivilibre' says

This week we released Synapse 1.103.0, which includes a bug fix to lock-ups when joining some very large rooms, a bug fix to joining remote rooms when certain types of modules are installed as well as support for the Retry-After header (MSC4041) and a small handful of other things.

Other than that, we have been gradually working through the backlog of pull requests — thanks for sending those in and sorry for the delay! See you next week.

Dept of Clients 📱

Element X iOS (website)

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

Ștefan reports

Element X iOS version 1.5.12 is now available on the AppStore:

  • It's now possible to favourite a room so that you can keep track of the groups and the people you like to chat with the most.
  • If you read a room but you would like to come back to it later, you can now mark it as unread, making it similar to any room with unread notifications.
  • At the same time, if you feel a room's recent activity isn't interesting and you don't want the green badge on it, just mark it as read.

However these three amazing features are now also supported by another amazing quality of life feature, which is... drum roll ..filters! Is now possible to filter the room list by DMs (People), groups (Rooms), favourites, and unread, and any combination of these, allowing you full customisation over the content of the room list.

Meanwhile, on the normal development track, we've completely revamped our user onboarding flow and session verification is now mandatory either by entering the recovery key or by running the interactive emoji flow against an existing session. The new moderation options are close to making an appearance and we've improved overall error tracking and analytics.

Element X Android (website)

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

ganfra reports

Element X Android version 0.4.6 is now available on the PlayStore:

If you read a room but you would like to come back to it later, you can now mark it as unread, making it similar to any room with unread notifications. At the same time, if you feel a room's recent activity isn't interesting and you don't want the green badge on it, just mark it as read.

Room list filters and mark room as favourite are also finished, and will probably be enabled in the next release.

It'll be possible to filter the room list by DMs (People), groups (Rooms), favourites, and unread, and any combination of these, allowing you full customisation over the content of the room list.

We are also making progress on the room admin features.

Dept of SDKs and Frameworks 🧰

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

Emma [it/its] announces

Mainly homeserver emulator updates, with some bot SDK changes aswell :)

Changes

  • Made StateKey optional in events (given they may be null for non-state events)
  • Removed Event parameter from EventIdResponse constructor
  • HSE: work on partial sync, removed StatePosition because it doesn't make sense
  • HSE: Room internals: Abstract call to rebuild room state to dedicated function (so it can be called on load)
  • HSE: Room internals: Try to fix state rebuilding
  • Bot SDK: Use table for help command
  • Bot SDK: Cleaned up command parser

Additions

  • Added width and height to FileInfo in messages
  • Added UploadFile with byte arrays rather than streams to AuthenticatedHomeserver
  • HSE: Add sending events in, and leaving rooms
  • HSE: Add GET .../devices
  • HSE: Room internals: Add JoinedMembers accessor
  • Added table support to MessageBuilder

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!

matrix-rust-sdk (website)

Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM

bnjbvr announces

  • It's now possible to send media with captions using the SDK, thanks to @surakin!
  • Support for searching in the Room directory has landed in the SDK 🥳
  • The UI Timeline now uses a different algorithm to insert day dividers, which ought to be super robust and well-tested; this should prevent double day dividers in embedders of the SDK like the ElementX apps.
  • More work is being done on the Linked Chunks data structure, used to represent series of room events in the Event Cache. Actual integration in the Event Cache is looming.
  • As we investigate more unable-to-decrypt (UTD) events, more logs have been added in multiple places, the crypto crate tests got improved, and a few bugs related to key backups have been already fixed.
  • Work on login via QR code for OIDC sessions is ongoing 👀
  • We now have a CI check for the minimum supported Rust version that's used for the SDK. The new MSRV for the project is Rust 1.76.
  • And your usual load of small changes/refactorings/bugfixes: Ruma has been updated to the latest version to support time on wasm; new functions have been exposed to the FFI layer for use in other languages; dependencies have been updated, and so on…

Matrix Federation Stats

Aine says

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

As of today, 9546 Matrix federateable servers have been discovered by matrixrooms.info, 2855 (29.9%) of them are publishing their rooms directory over federation. The published directories contain 22719 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.

RankHostnameMedian MS
18447280
2nerdhouse.io263
3075-141-169-120.res.spectrum.com:8447269
4herkinf.de272
5aguiarvieira.pt291
6matrix.its-tps.fr404
7transfem.dev430
8shema.lv578.5
9pain.agency597.5
10computerlie.be607

#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.

RankHostnameMedian MS
18447218
2matrix.its-tps.fr116
3aguiarvieira.pt144
4nerdhouse.io154
5075-141-169-120.res.spectrum.com:8447154.5
6dendrite.s3cr3t.me191.5
7herkinf.de205
8transfem.dev210
9spritsail.io229
10inu.is230

That's all I know

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

Matrix v1.10 release

22.03.2024 16:52 — Releases Travis Ralston

Hey all,

Matrix 1.10 is here! We aim to release the specification once in each calendar quarter, and with Q1 wrapping up in a few days we’re due for this quarter’s release. It has been 5 months since the last release (Matrix 1.9) brought in some protocol maintenance for us though, and the implementation teams have been hard at work building the Matrix 2.0 stack concurrent to the Matrix 1.10 work released today.

A total of 9 MSCs are released in Matrix 1.10, covering a wide range of maintenance, Matrix 2.0 preparation, and features for clients to use. This post focuses a bit on the Matrix 2.0 front and what’s expected in Matrix 1.11’s release cycle, but read on to the changelog at the bottom for full details on the changes which make up Matrix 1.10.

MSC3077: Multi-stream VoIP

MSC3077 and its related proposal MSC3291 (muting in VoIP calls) lay some foundational groundwork for proper group VoIP to land in Matrix - an objective of Matrix 2.0. Currently this is taking shape at MSC3898 and MSC3401, though Element’s VoIP team is considering a possible third alternative which runs MSC3401 over something like LiveKit’s SFU - stay tuned for updates there. In the meantime, users in native 1:1 calls can enjoy proper screen sharing and mute capabilities ahead of the 1:N call support later this year.

As always, early review is appreciated though please note that MSC3898 and MSC3401 are particularly in flux at the moment.

Up next in Matrix 1.11 and beyond

Over the next 2-3 months, we’ll be focusing on the following MSCs:

  • Trust & Safety improvements (at the protocol level).
    • MSC3823 - Account suspension
    • MSC3939 - Account locking
    • MSC3916 - Authentication for media (time permitting)
    • MSC4117 - Reversible redactions (pre-implementation review)
    • MSCs around a “reporting v2” flow in light of various legislation and compliance requirements. These MSCs are currently being written and should be up for pre-implementation review within the Matrix 1.11 cycle.
  • Early review of Matrix 2.0 features as they become ready.
    • Sliding sync (MSC3575) + applicable extensions.
    • Group VoIP - Exact MSCs to be determined, as they may change following implementation.
    • OIDC Authentication - Exact MSCs to be determined.
  • Pre-implementation review of Extensible Events core content blocks MSCs.
    • Many of these MSCs require updates before they are ready for formal review.
    • MSC3954 - Emotes
    • MSC3955 - Notices / automated events
    • MSC3927 - Audio
    • MSC3551 - Files
    • MSC3552 - Images and Stickers
    • MSC3553 - Videos

Additionally, we’ll be continuing to define the expectations of a Spec Core Team member, particularly as it relates to the upcoming Governing Board for the Foundation. This exercise has been extremely valuable to us so far, and will help identify areas the Foundation and SCT may need support from each other.

The full changelog

Read on for full details of what’s in Matrix 1.10:

Client-Server API

Backwards Compatible Changes

  • Allow /versions to optionally accept authentication, as per MSC4026. (#1728)
  • Add local erasure requests, as per MSC4025. (#1730)
  • Use the body field as optional media caption, as per MSC2530. (#1731)
  • Add server support discovery endpoint, as per MSC1929. (#1733)
  • Add support for multi-stream VoIP, as per MSC3077. (#1735)
  • Specify that the Retry-After header may be used to rate-limit a client, as per MSC4041. (#1737)
  • Add support for recursion on the GET /relations endpoints, as per MSC3981. (#1746)

Spec Clarifications

  • The strike element is deprecated in the HTML spec. Clients should prefer s instead. (#1629)
  • Clarify that read receipts should be batched by thread as well as by room. (#1685)
  • Clarify that threads can be created based on replies. (#1687)
  • Clarify in the reply fallbacks example that the prefix sequence should be repeated for each line. (#1690)
  • Clarify the format of account data objects for secret storage. (#1695, #1734)
  • Clarify that the key backup MAC is implemented incorrectly and does not pass the ciphertext through HMAC-SHA-256. (#1712)
  • Clarify one-time key and fallback key types in examples. (#1715)
  • Clarify that the HKDF calculation for SAS uses base64-encoded keys rather than the raw key bytes. (#1719)
  • Clarify how to perform the ECDH exchange in step 12 of the SAS process. (#1720)
  • Document the deprecation policy of HTML tags, as per MSC4077. (#1732)
  • The font element is deprecated in the HTML spec. Clients should prefer span with the data-mx-bg-color and data-mx-color attributes instead. (#1739)
  • Disambiguate uses of PublicRoomsChunk in the GET /hierarchy endpoint. (#1740)
  • Clarify that sdpMid and sdpMLineIndex are not required in m.call.candidates. (#1742)
  • Fix various typos throughout the specification. (#1748)
  • Clearly indicate that each Content-Type may have distinct behaviour on non-JSON requests/responses. (#1756)
  • Clarify that the m.push_rules account data type cannot be set using the /account_data API, as per MSC4010. (#1763)

Server-Server API

Spec Clarifications

  • Clarify Server-Server API request signing example by using the POST HTTP method, as GET requests don't have request bodies. (#1721)
  • Disambiguate uses of PublicRoomsChunk in the GET /hierarchy endpoint. (#1740)
  • Clarify that the children_state, room_type and allowed_room_ids properties in the items of the children array of the response of the GET /hierarchy endpoint are not required. (#1741)

Application Service API

Spec Clarifications

  • Clarify that the /login and /register endpoints should fail when using the m.login.application_service login type without a valid as_token. (#1744)

Identity Service API

No significant changes.

Push Gateway API

No significant changes.

Room Versions

Spec Clarifications

  • For room versions 7 through 11: Clarify that invite->knock is not a legal transition. (#1717)

Appendices

No significant changes.

Internal Changes/Tooling

Spec Clarifications

  • Update the spec release process. (#1680)
  • Minor clarifications to the contributing guide. (#1697)
  • Update Docsy to v0.8.0. (#1699, #1762)
  • Fix npm release script for @matrix-org/spec. (#1713)
  • Add some clarifications around implementation requirements for MSCs. (#1718)
  • Update HTML templates to include links to object schema definitions. (#1724)
  • Factor out all the common parameters of the various /relations apis. (#1745)
  • Add support for $ref URIs containing fragments in OpenAPI definitions and JSON schemas. (#1751, #1754)

This Week in Matrix 2024-03-15

15.03.2024 19:30 — This Week in Matrix Thib

Matrix Live

Dept of Status of Matrix 🌡️

Josh Simmons reports

The wait is over! We are now accepting applications from projects and organizations that want to join the Foundation as Ecosystem and Associate Members.

You may recall that in December we announced two new membership tiers to ensure we have healthy community representation as we introduce more open governance for Matrix. Specifically, we created Ecosystem and Associate Member tiers. Ecosystem Members are open source projects that speak Matrix, and Associate Members are FOSS foundations, nonprofits, and academic institutions.

We’re excited to bring more folks into the fold, and thrilled to welcome Thunderbird, Draupnir, and Conduit as our first Ecosystem Members 🎉 Curious who else has joined as a member recently? Check out our Supporters.

We’d also like to recognize Thunderbird for sponsoring the Foundation, which helps us get a little bit closer to making the Foundation’s activities sustainable 🚀

Thib announces

There is a question we often get asked: why do you operate the Matrix.org homeserver, and why do you keep registrations open? We don't want to become the gmail.com of Matrix after all. We covered those in this post.

https://matrix.org/blog/2024/03/why-matrix-org/

Continue reading…

Why the Matrix.org Homeserver Exists?

14.03.2024 15:30 — Foundation Thib

Matrix self-defines as the go-to protocol for "open, secure, decentralised communications". The Matrix.org Foundation defines "maximising […] the number of online servers in the open federation" as a key objective in its mission. So why is the Matrix.org homeserver, probably the largest homeserver in the whole federation, still in open registration mode?

Let's dive into the technical, and user experience choices behind it.

Continue reading…