Matrix Live

Dept of Status of Matrix 🌡️

Thib (m.org) announces

The Matrix Conference 2024 now has a schedule!!

With more than 60 very high quality proposals, it's been difficult to select talks that would make it to the conference. We are thrilled to announce the schedule of the conference, and we're looking forward to listen to that fantastic line up tell us about the future of Matrix, Matrix in the public sector, Matrix in the wild, or the social impact of Matrix!

Check out the full schedule at https://2024.matrix.org/schedule/

If you're an organisation and want to get some visibility in the Matrix ecosystem, we have a few sponsorship packages left at https://2024.matrix.org/sponsor/.

Don't forget to book your ticket to attend. Head to https://2024.matrix.org/register/ and tell us whether you want merch or not in addition to your ticket!

Dept of Spec 📜

Andrew Morgan (anoa) {he/him} 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:

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.

Random MSC of the Week

It's a fairly quiet week as far as Spec Core Team pings are concerned. Let's bring back the random MSC of the week!

The random MSC of the week is... MSC2949: Proposal to clarify "Requires auth" and "Rate-limited" in the spec!

This proposal seeks to clarify the sometimes vague "Requires auth" and "Rate-limited" labels in the spec. Both are defined as a simple true/false, yet some endpoints will accept both authenticated and non-authenticated requests - returning varying content if the request was authenticated. The recommendation instead is for clients to pass authentication for all endpoints. This will also help with backwards-compatibility, if an endpoint is updated to change its behaviour based on the user making the request.

As for "rate-limited", whether an endpoint should be rate-limited or not and by what amount is really up to the implementation. In practice a homeserver should really rate-limit all endpoints to some degree, but by how much will depend on the use case.

MSC2949 proposes to make it clear that these labels are simply recommendations and to not be treated as absolutes. Alternative solutions include simply doing away with the labels, and instead providing clear guidance for request authentication and rate-limiting that covers all endpoints.

If you're a client author and would like to see the spec improve in this regard, jump into the discussion on the MSC PR and have your say!

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

Mauro Romito says

  • RC 1.7.1 has been released
  • Fixed some potential crashes
  • Improved Element call video stability
  • Added some new languages
  • Message pinning work has progressed further

Dept of Non Chat Clients 🎛️

Circles (website)

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

cvwright (FUTO) announces

For the past 2.5 years the Circles team at FUTO has been pushing toward a big public launch of the app along with a paid subscription service for accounts. Unfortunately it was determined that this will not be feasible. The remaining work required to build the current app into a viable mass-market commercial product is simply much more than the team can handle in the remaining time available.

So instead, FUTO has handed the codebase back to the development team. Source code for the app has been transferred to https://github.com/circles-project, where Circles will live on as a community open source project under the leadership of the current development team. The license has also been changed, from the (fairly restrictive) AGPL 3.0 to the extremely liberal Apache License 2.0, in order to encourage and facilitate contributions from the community. In the days and weeks ahead, we will also be transferring the project web page, the Google Play Store app, and the Apple App Store app to the new ownership. The Circles app in the main f-droid.org repository will stay where it is, but will be updated to remove its current FUTO branding. The Circles app in FUTO's own F-Droid repo will be removed.

For users with accounts on the circles.futo.org servers, and for the handful of users still on the old circu.li servers, FUTO has committed to keeping those instances online through the end of 2024. In the meantime, registration of new accounts has been disabled. A future build of the app will include an in-app message for those on the affected systems. The dev team hopes to be able to provide a hosted service again in the near future, for those users who are new to Matrix and need an account to use the app; please be patient as this will likely take us a few weeks to sort out.

FUTO has generously committed to supporting the Circles development team for the next few months. By the end of August, we hope to have the app in good shape with everything that it needs, so that it is ready to enter a sort of maintenance phase if necessary. At that point, we will have the app that I originally set out to build in early 2020. We still have some exciting features on the roadmap, so stay tuned over the next weeks as we put the last major pieces in place.

Thanks to everyone in the Matrix community and in the #circles:matrix.org room for your feedback and encouragement as we built this thing from the ground up. Thanks to FUTO for their generous support over the past 2.5 years, and for allowing us to keep the app alive going forward.

tldr - FUTO Circles is dead. Long live The Circles Project.

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for developing Clients, Bots, Appservices and Servers

Benedict says

This week, the Trixnity project has seen several notable improvements. With a valuable contribution from David Phillips, several Endpoints have been fixed. Additionally, a new feature now allows for individual timeouts when calling getTimelineEvent in parallel, addressing the previous issue where the first call defined the timeouts for all subsequent parallel calls. The MatrixRegex helper-object for matching various Matrix identifiers has been cleaned up, too.

Several bugs have also been resolved. Parsing and scanning of mentions are now more reliable. The incorrect calculation of canLoadBefore and canLoadAfter in the Timeline, particularly in rooms with upgrades, has been fixed. Furthermore, JavaScript streams are now closed correctly.

simplematrixbotlib (website)

simplematrixbotlib is an easy to use bot library for the Matrix ecosystem written in Python and based on matrix-nio.

imbev says

simplematrixbotlib v2.12.0

An easy to use bot library for the Matrix ecosystem written in Python.

Many thanks to saces, DavidCruciani, charlhakeem, Dreamsorcerer, subDesTagesMitExtraKaese, and others for their contributions!

Git repository: https://codeberg.org/imbev/simplematrixbotlib

Python package: https://pypi.org/project/simplematrixbotlib/2.12.0/

Matrix room: https://matrix.to/#/#simplematrixbotlib:matrix.org

  • Reexport typing via py.typed
  • Use Python 3.9 as minimum version
  • Add config option to not spam decryption error on invite
  • Add API for leaving and forgetting rooms
  • Add API for sending polls
  • Add API for administration
  • Add API for sending location
  • Add reply_to to send_markdown_message
  • Improve configuration for device_name
  • Add encryption support for send_image_message
  • Improve reply/formatted message match handling
  • Add config option to do the first sync full
  • Fix minor bugs

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 says

No updates for the last two months? Here comes a large one, then!

  • sdk: when using sliding sync, the rooms are now sorted client-side, instead of relying on the list of updated rooms returned by the server. This is more robust in the presence of encrypted rooms, for which the server cannot inspect rooms, and decide by itself whether an event is worth bumping a room to the top of the list or not.
  • sdk: we added an observable send queue to each room, available with Room::send_queue(). A send queue will retry sending events in the background, in the same order events were added to a room. It's also observable and will notify updates whenever it tried multiple times sending an event and failed (which could be a sign that network is down); in that situation, it will stop trying to send subsequent events. To-be-sent events are stored on disk and thus remembered across SDK restarts. Unsent events can be aborted and edited too.
  • sdk-ui: The Timeline API is now making use of this send queue by default. If you're using it, don't forget to observe the send queue errors at the global level!
  • sdk: experimental support for a simplified version of sliding sync is in. It's not ready for prime time yet, but expect to hear about it in the upcoming months!
  • sdk: add support for authenticated media requests. Huge thanks to @zecakeh for spearheading the implementation in both Ruma and the SDK!
  • sdk: A new Room API to save and restore message drafts has been added; follow the breadcrumbs around Room::save_composer_draft().
  • sdk: the Matrix server version and list of unstable features are now fetched at most once per week, and then cached on disk. It's also possible to force-empty this cache, using Client::reset_server_capabilities().
  • sdk: it's now possible to set a maximum number of concurrent network requests being carried over at the same time, using RequestConfig::max_concurrent_requests(). Thanks to @gnunicorn for this contribution!
  • sdk: the SDK is now compatible with the new MatrixRTC membership format (MSC4143).
  • sdk-ui: The unable-to-decrypt (UTD) hook now stops double-reporting events after the SDK restarted.
  • crypto: decrypted events now have a shield state that indicates whether they can be safely trusted or not.
  • sdk-base: pinned events can now be fetched in a room, using Room::pinned_events().
  • sdk: it's now possible to easily reset cross-signing keys with Client::encryption().reset_cross_signing().
  • And your usual big load of bug fixes (a lot of them in the crypto area, making it more reliable and more robust, which should help reducing unable-to-decrypt issues), refactorings, CI improvements, new capabilities at the FFI layer, you name it!

Now it's time for the Summer break for me. Have a nice one, and keep on supporting your local crab programming language 🦀

Elm SDK (website)

A more consistent alternative to the matrix-js-sdk, written in Elm.

Bram reports

Now that the major part of the API has been defined, smaller API endpoints are rolling out like cookies in a cookie factory! 🍪🍪🍪 This week's new SDK version comes with a load of new features. Using the Elm SDK:

  • You can now read & write global account data
  • You can now read & write account data per room
  • You can now send both message & state events to rooms
  • You can now invite, kick & ban other users

📰 View the docs 🐘 Share it on the Fediverse 🗨️ Join the conversation

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi reports

Thanks to Michael Hollister from FUTO, the creators of the Circles app, matrix-docker-ansible-deploy can now set up synapse-usage-exporter - a small Flask-based webservice which can capture usage statistics from Synapse (via HTTP PUT) and then make them available for Prometheus to scrape.

To learn more see our Enabling synapse-usage-exporter for Synapse usage statistics documentation page.

Matrix Federation Stats

Aine reports

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

As of today, 9676 Matrix federateable servers have been discovered by matrixrooms.info, 2959 (30.6%) of them are publishing their rooms directory over federation. The published directories contain 161397 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
1conduwu.it214
2girlboss.ceo217
3doctoruwu.uk220
4puppygock.gay302
5awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay314.5
6codestorm.net389.5
7sulian.eu400
8pussthecat.org420
9constellatory.net464.5
10nerdhouse.io509.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
1awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay96
2girlboss.ceo114
3doctoruwu.uk117
4conduwu.it141.5
5puppygock.gay217
6uwu.sulian.eu230
7gemeinsam.jetzt351
8inu.is357
9awawi.nexus414
10reallyaweso.me444.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.

Support us