matrix.org/content/blog/2024/02/2024-02-16-twim.md

434 lines
30 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

+++
date = "2024-02-16"
title = "This Week in Matrix 2024-02-16"
[taxonomies]
author = ["MTRNord"]
category = ["This Week in Matrix"]
[extra]
image = "https://matrix.org/blog/img/matrix-logo.png"
+++
## Dept of communities
### Ubuntu Matrix homeserver just went live 🎉
[Nils](https://matrix.to/#/@ravage:xentonix.net) announces
> Even if we are formally still in testing phase until the end of the Ubuntu 24.04 cycle, the Ubuntu Matrix homeserver reached a state in which we can consider it live.
>
> Although Ubuntu used to be IRC-only, we are now adopting Matrix to cater to a wider, diverse audience, including less technical users and younger generations. Matrix allows us to do so while staying true to the values that brought us Ubuntu, Linux and FOSS. When selecting the tools we use, we are always focused on open-source, privacy and freedom respecting software. We believe that Matrix offers all the modern features we need without compromising our values. Moreover, Matrix will make it easier for us to interact with neighboring communities such as Fedora and KDE.
>
> There is still a lot of work to do, but we want to take a moment to thank the Ubuntu and Matrix communities for their great effort and dedication to this project.
>
> You can read more about it on this [Discourse thread](https://discourse.ubuntu.com/t/modern-communication-platforms-call-for-feedback/36763/) and of course, you can now join our Ubuntu community from any Matrix federated server. A good start is the [Ubuntu Community Space](https://matrix.to/#/#community:ubuntu.com)
<!-- more -->
## Dept of *Status of Matrix* 🌡️
[Josh Simmons](https://matrix.to/#/@josh:josh.tel) reports
> We are bowled over by the level of support weve received since [launching our new fundraiser](https://matrix.org/blog/2024/01/2024-roadmap-and-fundraiser/)!
>
> Were now up to 162 Individual Members, 114 of which are brand new supporters. To top things off, weve [doubled the number of organizational members](https://matrix.org/support/), adding Fairkom, IndieHosters, and XWiki, and have received a donation from the Thunderbird project.
>
> This is extremely encouraging, though we still have a long way to go to fill the gap in our budget, and are looking forward to larger organizations stepping up to the plate.
>
> If your organization uses Matrix or believes in the values of open source, open standards, privacy, and decentralization: this is your call to action. Help us secure the future of Matrix and [join the Foundation today](https://matrix.org/membership/).
## Dept of Spec 📜
[Andrew Morgan (anoa)](https://matrix.to/#/@andrewm:element.io) 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:**
>
> * [MSC4103: Make threaded read receipts opt-in in /sync](https://github.com/matrix-org/matrix-spec-proposals/pull/4103)
> * [MSC4102: Clarifying precedence in threaded and unthreaded read receipts in EDUs](https://github.com/matrix-org/matrix-spec-proposals/pull/4102)
> * [MSC4101: Hashes for unencrypted media](https://github.com/matrix-org/matrix-spec-proposals/pull/4101)
> * [MSC4100: Scoped signing keys](https://github.com/matrix-org/matrix-spec-proposals/pull/4100)
> * [MSC4099: Participation based authorization for servers in the Matrix DAG](https://github.com/matrix-org/matrix-spec-proposals/pull/4099)
>
> **MSCs in Final Comment Period:**
>
> * [MSC4041: http header Retry-After for http code 429](https://github.com/matrix-org/matrix-spec-proposals/pull/4041) (merge)
> * [MSC2530: Body field as media caption](https://github.com/matrix-org/matrix-spec-proposals/pull/2530) (merge)
>
> **Accepted MSCs:**
>
> * [MSC2705: Animated thumbnails for media](https://github.com/matrix-org/matrix-spec-proposals/pull/2705)
>
> **Closed MSCs:**
>
> * *No MSCs were closed/rejected this week.*
>
> ### Spec Updates
>
> After [adding two new members](https://matrix.org/blog/2024/02/09/this-week-in-matrix-2024-02-09/) to the Spec Core Team last week, we had a number of tasks to ensuring our infrastructure and processes supported adding new members.
>
> At this point the GitHub team has the new members, updating the [matrix.org about page](https://matrix.org/about/) and all ongoing proposed FCP comments have been updated (so that they can vote for FCP!). Kudos to the team for making the process all relatively pain-free (and even documenting it!).
>
> Exciting things to come as folks get up to speed.
>
> ### Random MSC of the Week
>
> The random MSC of the week is... [MSC3468: MXC to Hashes](https://github.com/matrix-org/matrix-spec-proposals/pull/3468)!
>
> This MSC is working towards a noble goal; deduplicating media, as well as allowing a server-agnostic way to reference them (a hash). It does so by redefining MXC URIs as these hashes, rather than the `mxc://{serverName}/{mediaId}` format they are today.
>
> The proposal also adds two new endpoints to both the Client-Server API and the Server-Server API. One for asking the server for a hash given an old-style MXC URI, and another for "cloning" a remote piece of media (downloading it to your local homeserver instance).
>
> This work joins other MSCs in solving media retention, redaction, and resiliency, namely:
>
> * [MSC3911: Linking media to events](https://github.com/matrix-org/matrix-spec-proposals/pull/3911)
> * [MSC3916: Authentication for media](https://github.com/matrix-org/matrix-doc/pull/3916)
> * [MSC2846: Decentralizing media through CIDs](https://github.com/matrix-org/matrix-spec-proposals/pull/2846)
>
> So do check them all out if you're interested in the problem space!
## Dept of Servers 🏢
### Synapse ([website](https://github.com/matrix-org/synapse/))
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
[Andrew Morgan (anoa)](https://matrix.to/#/@andrewm:element.io) says
> This week [Synapse v1.101.0](https://github.com/element-hq/synapse/releases/tag/v1.101.0) was released. With it came [a fix](https://github.com/element-hq/synapse/issues/16893) for a performance regression in v1.100.0, as well as some other minor changes.
>
> Coming up are a few performance changes courtesy of @erikjohnston, stemming from work to continue scaling matrix.org as we take on new users. This includes:
>
> * Avoid dropping the entire event cache when purging room history ([#16905](https://github.com/element-hq/synapse/pull/16905))
> * Reducing duplicate server key requests over federation ([#16894](https://github.com/element-hq/synapse/pull/16894))
>
> ...and [more](https://github.com/element-hq/synapse/pulls?q=is%3Apr+author%3Aerikjohnston+is%3Aclosed). Smaller servers will benefit from these changes as well. Thanks Erik!
>
> Coming up are further performance fixes, along with more bugfixes, including [a potential fix](https://github.com/element-hq/synapse/pull/16927) for a class of stuck notifications related to threads.
>
> Thank you to all our contributors and those who test our release candidates! 🙂
### matrix-media-repo ([website](https://github.com/turt2live/matrix-media-repo))
Matrix media repository with multi-domain in mind.
[TravisR](https://matrix.to/#/@travis:t2l.io) reports
> MMR [v1.3.4](https://github.com/t2bot/matrix-media-repo/releases/tag/v1.3.4) has landed! The changelog is a bit longer than usual, but still very much worth the read. Here's the highlights:
>
> **Dendrite homeservers can now have their media imported.** This has only been tested on a monolithic setup so far, but folks have had success with the legacy polylith as well. Give it a go and please report bugs 🙂
>
> **Media can now be exported to Synapse.** If you're migrating from EMS to self-hosted and don't want to use MMR, run the `import_to_synapse` tool to recover your media. This is particularly recommended for the relatively small EMS hosts which are migrating, as MMR is more designed for large servers and hosting providers.
>
> **ARM Docker images are available from the new GHCR registry.** See changelog for details 😉
>
> **CDN support has started landing through media redirects.** Set `publicBaseUrl` on an S3 datastore and requesters will be redirected (if they opt-in to redirects). CDN support is planned to be expanded to include upload-to-url, authenticated media, and optimizations in thumbnail handling to reduce bandwidth usage. Stay tuned for updates!
>
> Plus the usual bug fixes and improvements. For community support on running MMR, please visit [#media-repo:t2bot.io](https://matrix.to/#/#media-repo:t2bot.io).
## Dept of Clients 📱
### Element X iOS ([website](https://github.com/vector-im/element-x-ios))
A total rewrite of Element-iOS using the Matrix Rust SDK underneath and targeting devices running iOS 16+.
[Doug](https://matrix.to/#/@douge:matrix.org) announces
> * Version 1.5.6 is available on TestFlight (with 1.5.7 due shortly).
> * Typing indicators have been added, with a combined Presence setting for disabling these and read receipts.
> * The app will now ask for your recovery key after you signed in but there are no other sessions to verify against.
> * You can now copy a link without copying the entire message.
> * We have improved our logic for sending read receipts when there are reactions and other hidden events.
## Dept of SDKs and Frameworks 🧰
### Rory&::LibMatrix (.NET 8 matrix bot/client library/SDK)
[Emma [it/its]](https://matrix.to/#/@emma:rory.gay) says
> Not much to report on this week (yet to be committed and pushed 😅)
> Mostly spent time working on LibDMSpace (abstraction for organising DMs into a space), see MatrixUtils repo for that!
>
> #### Changes
>
> * Fixed powerlevel checks
> * Bug fix in initial sync detection in order to fix all responses getting logged to console
> * AddChildById wrapper for spaces
> * Added syncfilter for command listener in bot extensions
>
> ***And, as always:***
>
> * The code is available at [cgit.rory.gay](https://cgit.rory.gay/matrix/LibMatrix.git)!
> * 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](https://matrix.to/#/#libmatrix:rory.gay) (Space: [#mru-space:rory.gay](https://matrix.to/#/#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 Widget Toolkit
[Milton Moura](https://matrix.to/#/@miltonmoura:matrix.org) announces
> After the cooldown from FOSDEM '24, where we presented [NeoDateFix](https://github.com/nordeck/matrix-meetings) in the [Matrix devroom](https://fosdem.org/2024/schedule/track/matrix/) and had a blast meeting and discussing awesome ideas with other Matrix-minded people, we at [Nordeck](https://nordeck.net/) have been busy working on new features for our Widgets.
>
> This week, we are excited to announce that the [Matrix Widget Toolkit](https://github.com/nordeck/matrix-widget-toolkit) now has support for accessing the [Media Repository](https://spec.matrix.org/v1.9/client-server-api/#content-repository) via the Widget API, aka, **File Upload Support**.
>
> The groundwork for this started midway last year, when we contributed the implementations for the [Matrix React SDK](https://github.com/matrix-org/matrix-react-sdk/pull/11311) and the [Matrix Widget API](https://github.com/matrix-org/matrix-widget-api/pull/86), based on our proposed [MSC4039: Access the Content repository with the Widget API](https://github.com/nordeck/matrix-spec-proposals/blob/nic/feat/widgetapi-upload-files/proposals/4039-widget-api-media.md), which were released in [Element Web v1.11.46](https://github.com/element-hq/element-web/releases/tag/v1.11.46) back in October 2023.
>
> #### Demo / Example
>
> As this feature now lands in the toolkit, we provide an [example widget](https://github.com/nordeck/matrix-widget-toolkit/pull/592) that you can try out for yourself by creating a new room and [following these instructions](https://matrix-widget-toolkit-demo.netlify.app/), which showcases how you can upload images and reference them in a room using custom events.
>
> This not only includes the media repository image upload example but also several other samples of what you can do with the [Matrix Widget Toolkit](https://github.com/nordeck/matrix-widget-toolkit), such as manipulating room state events, read, observe and send message events, search the user directory, etc.
>
> #### Features
>
> We use this toolkit as the basis for our widgets, as it provides several reusable packages that are specific to Widget development, such as:
>
> * a more [convenient wrapper](https://github.com/nordeck/matrix-widget-toolkit/blob/main/packages/api) for the Widget API
> * a set of [React components](https://github.com/nordeck/matrix-widget-toolkit/blob/main/packages/react) that make it straight-forward to integrate the Widget API in your web app
> * a [themable and accessible MUI package](https://github.com/nordeck/matrix-widget-toolkit/blob/main/packages/mui) for implementing Widgets that have a consistent user interface when embedded within Element Web
> * mocked objects for improved [testing support](https://github.com/nordeck/matrix-widget-toolkit/blob/main/packages/mui)
> * and finally, [a base container image](https://github.com/nordeck/matrix-widget-toolkit/blob/main/containers/widget-server) to host widgets in a production environment.
>
> Stay tuned for more exciting Widget-land updates from us in the following weeks! As usual, if you have any questions or feedback, you can reach us at [#nordeck:matrix.org](https://matrix.to/#/#nordeck:matrix.org).
### Trixnity ([website](https://gitlab.com/trixnity/trixnity))
Multiplatform Kotlin SDK for Matrix
[Benedict](https://matrix.to/#/@benedict:imbitbu.de) reports
> Another small release in Trixnity:
>
> features/improvements:
>
> * added MatrixRegex (currently containing user regex). Thanks to @adambrangenberg
>
> bugfixes:
>
> * fix missing RoomRoomUserReceiptsRepository declaration
## Dept of Services 🚀
### Matrix Room Search
[Aine](https://matrix.to/#/@aine:etke.cc) says
> Matrix Rooms Search got stats timeline!
>
> MRS is global Matrix Federation search engine we've built at [etke.cc](https://etke.cc).
>
> The `/stats` endpoint was updated - now it includes `details` with online/indexable servers, and parsed/indexed rooms. Plus, the new `timeline` key was added with `details` per date.
>
> The timeline is updated on each full reindex (on daily basis in case of the demo instance [matrixrooms.info](https://matrixrooms.info)).
>
> Alongside the new MRS endpoint, we've added visual representation on the [MatrixRooms.info/stats](https://matrixrooms.info/stats) page.
>
> Check the [source code](https://gitlab.com/etke.cc/mrs/api), and stay tuned in [#mrs:etke.cc](https://matrix.to/#/#mrs:etke.cc) room!
### 🎉 Today marks 3 years of [etke.cc](https://etke.cc)! 🎉
Your matrix server on your conditions
[Aine](https://matrix.to/#/@aine:etke.cc) announces
> The etke.cc managed Matrix hosting service was launched on the 12th of February 2021 and has turned 3 years old today!
>
> Below, we'd like to show you what improvements have happened over the last year and what's coming ahead for us.
>
> #### New payment model, more services, more server regions
>
> In case you've missed [our large news announcement](https://etke.cc/news/lnyorh4ggeh9xadrob_rtuuqu_jj-s-ojfvvfzlmxpm/) from December 2023, it's not too late to learn about it now.
>
> To summarize, we have:
>
> * switched to a **new payment/pricing model**, which is more sustainable
> * launched **many of new components and services** (see below) and will continue to launch new ones
> * **completely reworked** [**order form**](https://etke.cc/order/) - easier for you and for us - a quicker turnaround time when deploying servers
> * began offering **more powerful servers** (using [Hetzner Cloud](https://hetzner.cloud/?ref=1yg3ZZmtrg5A)'s CPX line) and **in more geographic locations** - **including the U.S.**
>
> We encourage you to read the [our original news announcement](https://etke.cc/news/lnyorh4ggeh9xadrob_rtuuqu_jj-s-ojfvvfzlmxpm/) for more details about these changes.
>
> ##### New component additions
>
> In the past year, we have launched many new Matrix-related and non-Matrix components.
>
> If you'd like to use one or more of the components seen below, [contact us](https://etke.cc/contacts/) and we'll install it to your existing server.
>
> ##### New Matrix-related components
>
> All of the Matrix components described below are **new additions** to our stack. **Some are installed by default** to all servers managed by us, as part of our [base Matrix components stack](https://etke.cc/help/faq#what-are-the-base-matrix-components-installed-on-the-server).
>
> * (free) [Sliding-sync](https://github.com/matrix-org/sliding-sync) - assists next-generation clients like [Element X](https://element.io/labs/element-x) in talking to the homeserver in an optimized manner. This component is installed by default to all servers as part of our [base Matrix components stack](https://etke.cc/help/faq#what-are-the-base-matrix-components-installed-on-the-server).
> * (free) Encrypted Bridges - we now offer a checkbox on our order form that globally enables encryption for all bridges that support it. This is experimental and may not work well for some bridges, so we don't recommend it to everyone.
> * (free) The [synapse\_auto\_compressor](https://github.com/matrix-org/rust-synapse-compress-state/#automated-tool-synapse_auto_compressor) tool, which runs in the background and periodically compresses the (Postgres) database for the Synapse homeserver, so that it runs optimally. This component is installed by default to all servers as part of our [base Matrix components stack](https://etke.cc/help/faq#what-are-the-base-matrix-components-installed-on-the-server).
> * (free) We've switched to [exim-relay](https://github.com/devture/exim-relay) for delivering emails (optionally via an [SMTP relay](https://etke.cc/help/extras/smtp-relay)) and wired all email-sending components (the Synapse Matrix homeserver and other addons) to it.
> * (free addition to our $5/mo bridge pack) a [Google Messages bridge](https://etke.cc/help/bridges/mautrix-gmessages) (powered by `mautrix-gmessages`). The old [Google Chat bridge](https://etke.cc/help/bridges/mautrix-googlechat) still continues to work.
> * (+$1/mo) the [SchildiChat](https://schildi.chat/) web-based Matrix client - an Element-web fork offering more customization.
> * (+$3/mo) [ChatGPT](https://etke.cc/help/bots/chatgpt/) - a Large-Language-Model (LLM) bot that you can talk to via Matrix, based on [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/chatgpt) (Requires a separately-obtained [OpenAI API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-api-key))
> * (+$2/mo) [S3 storage support for the Synapse homeserver](https://etke.cc/help/extras/synapse-s3-storage) - for infinite Matrix media storage (Requires a separately obtained AWS S3-compatible object store of your choice)
> * (+$5/mo) [Synapse workers](https://github.com/element-hq/synapse/blob/master/docs/workers.md) - a multi-process homeserver setup to more efficiently handle many users and large rooms (Requires a powerful server - 8+ GB of RAM)
>
> We've also replaced our [Signal bridge](https://etke.cc/help/bridges/mautrix-signal) (`mautrix-signal`) offering with the new bridge implementation (complete rewrite from [Python](https://www.python.org/) to [Golang](https://go.dev/)).
>
> ##### New non-Matrix-related components
>
> * (+$1/mo) \[previously-offered and making a comeback\] the [Miniflux](https://etke.cc/help/extras/miniflux) RSS reader
> * (+$1/mo) \[previously-offered and making a comeback\] the [Radicale](https://radicale.org/) CalDAV/CardDAV server
> * (+$1/mo) \[previously-offered and making a comeback\] the [Uptime Kuma](https://etke.cc/help/extras/uptime-kuma) monitoring system
> * (+$1/mo) \[brand new\] the [Linkding](https://github.com/sissbruecker/linkding) bookmark manager
> * (+$2/mo) \[brand new\] the [Vaultwarden](https://etke.cc/help/extras/vaultwarden) password manager (a lightweight [Bitwarden](https://bitwarden.com/)\-compatible server which can be used with the Bitwarden client apps)
> * (+$2/mo) \[brand new\] the [Firezone](https://www.firezone.dev/) - a VPN server based on [WireGuard](https://www.wireguard.com/) with a Web UI
> * (+$3/mo) \[brand new\] the [GoToSocial](https://gotosocial.org/) ActivityPub server (a lightweight [Mastodon](https://joinmastodon.org/) alternative)
>
> #### New or discontinued etke.cc services
>
> ##### Dedicated support
>
> On the services front, we're now offering a [Dedicated support](https://etke.cc/services/support) tier for $100/mo. This is an addition to the free Basic support tier that we offer to all etke.cc customers.
>
> The dedicated support tier is useful when your product relies on Matrix and you may require quicker help in case of outages. The main differences with the Basic tier are the **dedicated Matrix chat room** with etke.cc developers and the **higher priority of your requests** relative to others.
>
> ##### Matrix Rooms Search
>
> We've developed the [Matrix Rooms Search tool](https://gitlab.com/etke.cc/mrs/api) (naturally, as AGPLv3-licensed free-software). Anyone can run their instance and index the global Matrix Federation.
>
> MRS provides a search across room names, topics, etc., allowing for better discoverability of rooms across all of Matrix.
>
> We're making Matrix Rooms Search available to etke.cc customers in 2 ways:
>
> 1. The [MatrixRooms.info](https://matrixrooms.info/) website
> 2. Pre-configured as an alternative Rooms Directory in Element
>
> ##### More domain choices
>
> To those who don't wish to use their own custom domain for their server, we've been offering hosting on etke.cc-owned domains like `my-business.etke.host`.
>
> At the expense of some independence (afforded by having your own custom domain), using etke.cc-owned domains allows people to avoid dealing with domains, DNS, and the cost that comes with that.
>
> We now offer hosting on these additional domains:
>
> * `onmatrix.chat`
> * `kupo.email`
> * `matrix.town`
> * `matrix.fan`
> * `ma3x.chat`
>
> When making a [new order](https://etke.cc/order/), you can claim your subdomain on any of these domains and get your Matrix server deployed more quickly and easily (no DNS configuration required on your side).
>
> ##### Discontinuing our Custom Consulting/Development service
>
> We used to offer a Custom Consulting/Development service - helping people with custom deployments or integrations on top of Matrix.
>
> We have **discontinued this service in order to free up time and let us focus on improving etke.cc for everyone**. This is part of the reason why we have so many major improvements to announce in this birthday post.
>
> #### Improved internals
>
> Besides the many new components, services and tools, we've also done a lot of internal work - improving reliability and performance.
>
> Below are some of the important internal changes we've done:
>
> * [The Scheduler](https://etke.cc/scheduler):
> * Automatic HTTP, DNS, and port checks, including federation tests, on `run ping` and `run maintenance`
> * Cumulative alerts - we combine multiple failure alerts into a single message that we deliver via Matrix and email
> * Improved deliverability of emails, thanks to sending them via [Postmark](https://postmarkapp.com/)
> * Full overhaul of the agent/worker (injector) part making it blazing-fast and decreasing the delay (to milliseconds) between receiving a command from the user and executing it
> * Huge refactoring of the codebase
> * Many automation improvements, allowing us to more quickly and easily install new servers
> * Server Maintenance:
> * Automatic Postgres database vacuuming on each maintenance run
> * Automatic Postgres database tuning (based on [PGTune](https://pgtune.leopard.in.ua/)'s calculaton logic) which takes into account your server's configuration and installed components
> * Networking: reworked Matrix stack networking for improved security, performance and ease of plugging-in new services (we've migrated from [nginx](https://nginx.org/) to [Traefik](https://traefik.io/))
> * Emails: we've also configured [DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail), [SPF](https://en.wikipedia.org/wiki/Sender_Policy_Framework) and [rDNS](https://en.wikipedia.org/wiki/List_of_DNS_record_types#PTR) for customers hosted on our ([Hetzner Cloud](https://hetzner.cloud/?ref=1yg3ZZmtrg5A)) servers - this improves outgoing email deliverability for big providers like Google (see [New Gmail protections for a safer, less spammy inbox](https://blog.google/products/gmail/gmail-security-authentication-spam-protection/))
>
> #### Free-software work
>
> We've also done a lot of work on a new free-software (AGPLv3) Ansible mega-playbook - [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook), which currently includes 80+ components. Many of these began their life at etke.cc, while others were developed by us (or by the community) later on. Some of these components will be offered as addon components to etke.cc customers in the future. There are no technical difficulties to offering all of them immediately, but supporting a new component is not so simple - it requires documentation, commitment, support-staff training, etc.
>
> Components from mash-playbook and the [matrix-docker-ansible-deploy](https://github.com/spantaleev/matrix-docker-ansible-deploy) playbook are at the core of our automation ([etke/ansible](https://gitlab.com/etke.cc/ansible)), powering all servers managed by us.
>
> As part of our work over the past year, we have also developed and released as free-software (AGPLv3) the following new tools:
>
> * [MRS](https://gitlab.com/etke.cc/mrs/api) - Matrix Rooms Search, the backend that powers our [MatrixRooms.info](https://matrixrooms.info/) service (discussed above)
> * [A.G.R.U](https://gitlab.com/etke.cc/tools/agru) - a command-line tool like [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html), but faster
> * [ansible-ssh](https://gitlab.com/etke.cc/tools/ansible-ssh) - a command-line tool (wrapper around `ssh`) that makes it easy to SSH into hosts found in an [Ansible inventory](https://docs.ansible.com/ansible/latest/inventory_guide/index.html) file
> * [radicale-auth-matrix](https://gitlab.com/etke.cc/radicale-auth-matrix) - an adapter that connects [Radicale](https://radicale.org/)'s user authentication system to Matrix
>
> #### Numbers
>
> * We've **installed 243 new Matrix servers**
> * **Pushed 461 updates and enhancements** to the automation framework used as the service core
> * **Posted 60 updates** in the announcements room, so you're always up-to-date with what we're working on
>
> If you're curious to travel back in time, here are posts from previous etke.cc birthdays:
>
> * [*2 years celebration post*](https://etke.cc/news/upsyw4ykbtgmwhz8k7ukldx0zbbfq-fh0iqi3llixi0/)
> * [*1 year celebration post*](https://etke.cc/news/j-48qcbzgshru3ap7hictalntpwqtotgltct01mhrmw/)
## Dept of Guides 🧭
### Matrix Client Tutorial
[uhoreg](https://matrix.to/#/@hubert:uhoreg.ca) announces
> My [Matrix Client Tutorial](https://uhoreg.gitlab.io/matrix-tutorial/index.html) now has a simple demo program showing how to use the encryption routines. Non-encryption-related, I've also added support for the `Retry-After` header as per [MSC4041](https://github.com/matrix-org/matrix-spec-proposals/pull/4041), which is currently in FCP. Next up, I plan on going through the encryption section again to do some cleaning things up and filling in some missing details. After that, I'll probably write about the media repository, so that I can write about encrypted media.
## Matrix Federation Stats
[Aine](https://matrix.to/#/@aine:etke.cc) reports
> collected by [MatrixRooms.info](https://matrixrooms.info) - an [MRS](https://gitlab.com/etke.cc/mrs/api) instance by [etke.cc](https://etke.cc?utm_source=twim&utm_medium=matrix&utm_campaign=federation-stats)
>
> As of today, `8757` Matrix federateable servers have been discovered by matrixrooms.info, `2490` (`28.4%`) of them are publishing their rooms directory over federation.
> The published directories contain `20629` rooms.
>
> Stats timeline is available on [MatrixRooms.info/stats](https://matrixrooms.info/stats)
>
> [How to add your server](https://gitlab.com/etke.cc/mrs/api/-/blob/main/docs/indexing.md) | [How to remove your server](https://gitlab.com/etke.cc/mrs/api/-/blob/main/docs/deindexing.md)
## Dept of Ping 🏓
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by [pingbot](https://github.com/maubot/echo), a [maubot](https://github.com/maubot/maubot) that you can host on your own server.
### [#ping:maunium.net](https://matrix.to/#/#ping:maunium.net)
Join [#ping:maunium.net](https://matrix.to/#/#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|ari.lt|251|
|2|fostered.uk|276.5|
|3|maunium.net|278|
|4|nerdhouse.io|280.5|
|5|arva.net|382|
|6|matrix.its-tps.fr|448|
|7|aguiarvieira.pt|491|
|8|littlevortex.net|533|
|9|midnightthoughts.space|659|
|10|brothertec.eu|717.5|
### [#ping-no-synapse:maunium.net](https://matrix.to/#/#ping-no-synapse:maunium.net)
Join [#ping-no-synapse:maunium.net](https://matrix.to/#/#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|ari.lt|127.5|
|2|aguiarvieira.pt|142|
|3|nerdhouse.io|156.5|
|4|chatinamatrix.xyz|158|
|5|spritsail.io|179|
|6|fostered.uk|195.5|
|7|matrix.its-tps.fr|198|
|8|inu.is|206|
|9|dendrite.s3cr3t.me|226.5|
|10|littlevortex.net|471|
## That's all I know
See you next week, and be sure to stop by [#twim:matrix.org](https://matrix.to/#/#twim:matrix.org) with your updates!