This Week in Matrix 2022-12-02

2022-12-02 — This Week in Matrix — Thib

Matrix Live

This episode of Open Tech Will Save Us was a special on Moderation. Our guest was Jim from the Matrix.org Foundation's Trust & Safety Team.

Can moderation be automated? Can it be apolitical? How does it scale? Are decentralised systems inherently more insecure than centrlised ones? Let's find out!

Dept of Status of Matrix 🌡️

Thib says

You can now officially join the Matrix Foundation as an organisational or individual member in order to sustainably support core Matrix development, help steer the direction of the protocol and how best to fund it. In order to run the Governing Board and the overall work of the Foundation, we are also hiring an Executive Director.

Read the full blog post here

Dept of Spec 📜

Andrew Morgan (anoa) says

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Spec Updates

A lot of this week was spent on implementation by the SCT, hence little movement in the bullet points above. However, outside of label changes, we've seen lots of progress on Extensible Events work from Travis as we continue to lay the groundwork for the IETF MIMI initiative.

We also continue to receive lots of fixes to the spec text itself via PRs to https://github.com/matrix-org/matrix-spec. Shout outs to zecakeh, dylhack, and uhoreg for their contributions!

Random MSC of the Week

The random MSC of the week is... MSC3890: Remotely silence local notifications!

This MSC aims to provide a solution to remotely toggling do-not-disturb across your various Matrix clients without needing to set it on each device manually. It does so by using account data which is synced to each client. Upon a client seeing data intended for them, they will silence notifications locally until told to do so otherwise (either remotely or by the user interacting with the client directly).

Quite a neat idea, and adds more powerful functionality to the "device manager" of a client. Also handy if your other clients are things like embedded systems!

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Shay announces

As we barrel towards the end of the year, the Synapse team is hard at work making Synapse faster, more stable and filled with features! This week we released v1.73.0rc2. Notable work includes a significant speed-up to the /messages path. In addition you can find:

  • Improved DB performance by reducing amount of data that gets read in device_lists_changes_in_room.
  • Support for handling avatar in SSO login. Contributed by @ashfame
  • Unstable support for an Extensible Events room version (org.matrix.msc1767.10) via MSC1767, MSC3931, MSC3932, and MSC3933.
  • A bugfix for a long-standing bug where the List media admin API would fail when processing an image with broken thumbnail information

and a whole host of other bugfixes, features and improvements. Head over to https://github.com/matrix-org/synapse/releases to check it out.

Dept of Bridges 🌉

Slack Bridge (website)

A Matrix <-> Slack bridge

Andrew F reports

It's been a while since the last TWIM update, but the Slack bridge has been steadily improving! See https://github.com/matrix-org/matrix-appservice-slack/releases/ for a slew of updates.

Highlights include:

  • DMs are now consistently assigned with the name & avatar of the Slack user you're chatting with.
  • Display names of Slack users should be kept up-to-date more reliably.
  • Support is added for bridging Slack threads with MSC3440 m.thread relations.
  • The usability of bridge bot admin commands (like whoami and link) has been improved.
  • Some cases of inbound Slack messages being dropped have been fixed.

matrix-hookshot (website)

A multi purpose multi platform bridge, formerly known as matrix-github

Half-Shot reports

Hookshot 2.5.0 is now ready for your eyes and your processors!

This week we bring you the very last (all fingers being crossed) hookshot release not to support e2ee encryption. Our resident expert is busy working away on supporting it and is a couple of bugfixes away from providing it to you all (https://github.com/matrix-org/matrix-hookshot/pull/299#issuecomment-1327124799).

In the meantime, this release was so good we couldn't keep it from you any longer. This release is packed with quality of life improvements, and general bugfixes / stability. Deploy away!

The highlights are:

  • GitHub assign command now automatically chooses the top issue and/or authenticated user if not provided.
  • The RSS feed connection no longer feels the need to spam you when GitHub fails to respond within 10s. It now waits for 30s.
  • Hookshot now supports creating GitLab connections without automatically provisioning a webhook. When this happens, the bot will tell you to talk to your admin to setup the webhook manually.

Checkout the rest here

Dept of Clients 📱

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

Version 1.5.8.sc62 of SchildiChat-Android got released this week, which adds a few new interesting features on top of Element:

  • Reworked reply rendering, to follow the rich replies specification. This improves the following:
    • Update the replied-to message in case the original message gets edited or deleted
    • Fix replies edited on desktop not being shown as replies on Android
    • Fix replies edited on Android being shown on Desktop with the replied-to event twice
    • Fix some weird rendering issues, like lists in a reply being completely broken
    • Nicer design, using the original sender's color, and a maximum height for the replied-to event
    • Render the replied-to event also for media replies, for example when the mautrix-telegram bridge sends an image reply
    • In the future, this will also allow us to render replied-to images instead of just writing "Image" in there, but this one is still on the TODO-list since I didn't want to delay a release further.
  • Render captions as per MSC2530.
  • We now allow sending all kinds of room-specific or account-specific global custom emotes as per MSC2545 (but you still need to configure them with a different client before sending).

For those about to ask if I'll upstream these changes to Element: I'm currently not planning to do so, but you are free to pick my changes yourself and create a PR. For rich replies, see also here.

Element (website)

Everything related to Element but not strictly bound to a client

Anthony Hughes reports

Community Testing

Help us test Threads on Wednesday December 7th from 15:00 to 16:30 GMT! We need the most help testing on Android and iOS but if you can help test on Web/Desktop that's cool too! And don't worry if you can't make it, we'll have folks around most of the day so please come out and help us test whenever you can manage. See you in the community testing room at #element-community-testing:matrix.org!

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

kittykat says

We’ve made improvements to replies, search, notifications, user verification and DM creation over the last week

In labs (you can enable labs features in settings on develop.element.io or on Nightly):

  • Voice broadcast is continuing to receive more updates and bug fixes!
  • Threads is nearing release, thank you all who have been trying it out! You can still join the Beta testing in Settings -> Labs to give it a spin!
  • Also, screensharing in Element Call has had a fix!

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Doug reports

  • 📬 Useful feature time: The spaces button is now badged whenever you have unread messages or invites that aren’t visible in the current space.
  • 📝 The Rich Text Editor has seen more bugs and edge cases fixed and support for links and lists is underway.
  • 🏗️ On the ElementX side we have been working on a Reactions picker, the timeline rewrite is almost finished, work on a split view layout for iPad continues and we’re finishing up a shiny new Room Details screen.

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

benoit announces

  • Element Android 1.5.10 has been released for testers on the PlayStore (still in review by Google at this time). It should be pushed to production next week. It includes a new full screen mode for the Rich Text Editor and lots of other changes. The full changelog is here.
  • The team is making progress to integrate the Crypto Rust SDK in the main project and generate the application ElementR.
  • On Android Element X, which is the new Android app written with Jetpack Compose on top of the Matrix Rust SDK, it is now possible to edit events and to reply to events. Html is also now rendered in the timeline. We will define in the coming weeks what will be the plan for the future regarding this project.

Dept of Non Chat Clients 🎛️

Feline Matrix Assistant (website)

Cat says

Announcing Feline Matrix Assistant. This is a PowerShell 7 cross platform script that aims to gather a few somewhat common matrix tasks in one place with a somewhat user friendly interface.

It was designed to enable users on Windows to easily access things like custom powerlevel rooms and manual room upgrades that normally require using Linux to run bash scripts if one does not want to figure out how to make the web requests using their preferred method themselves.

One of the other reasons i made this is just because i wanted to get more familiar the CS API and because i needed it my self because im currently a Windows user.

Third Room (website)

Matthew reports

The Third Room team have been invited to present Third Room at SIGGRAPH Asia 2022 next week! https://sa2022.siggraph.org/en/presentation/?id=realcur_102&sess=sess143

Dept of SDKs and Frameworks 🧰

Yet Another TypeScript Bot SDK

As named per the author, don't blame Thib for this name!

prefix reports

Why? As an alternative to matrix-bot-sdk, this library will be strongly typed with simplicity in mind to make sure there is no overhead to writing the perfect Matrix bot.

  • This library also focuses on having browser support and no dependencies around NodeJS (and least amount of dependencies in general)
  • AppService functionality will be shipped in a separate package as an extension of this base package.
  • There is plenty of dependency injection for: Logging, how HTTP comms are done, and caching (come ask about the Redis cache layer!)

Come join our Matrix room to help this library grow and give input!

https://github.com/CatEngineer/matrix

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict reports

Trixnity 3.0.0 is released. This release contains all changes of the beta versions. We additionally fixed two bugs regarding encrypted edited messages.

I'm currently working on vodozemac integration. For this I implemented uniffi-kotlin-multiplatform-bindings to bridge Rust and Kotlin Multiplatform.

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

ben says

The last few weeks of Sliding Sync in the various mobile clients is showing its fruits: Sliding Sync offline caching and session recovery was merged this week, giving you the latest state of your sliding sync in milliseconds without ever having touched the network now. You need to activate it via a setting on the SlidingSyncBuilder - FFI is exposed as well. This PR also adds recovery when the server rejected our request upon a failing position, indicating our session was reset. Previously, you needed to reconstruct the entire sliding-sync with all its state yourself, now this does it internally and transparently for the API user. Additionally, we merged a fix for invited rooms, which caused a panic on FFI usage, and have one other fix to the sliding-sync state post cache coming up.

Talking about fixes, the retry code path had a bug, which caused retries even when the API clearly stated we needed to change request, which is fixed now, and the memory store won't continue to keep all media cached anymore. More fixes are being pulled out of the demo branch and coming up as PRs next week.

We can also report amazing news from the Async-UniFFI-front: we have the first async-uniffi-swift code running now. Exciting times!

👉 ️ Wanna hack on matrix rust? Go check out our help wanted tagged issues and join our matrix channel at Matrix Rust SDK.

Dept of Ops 🛠

Synapse Operator for Kubernetes (website)

mgoerens announces

Introducing a new way to run Synapse on top of Kubernetes !

The current capabilities of the Synapse Operator:

  • Deploy Synapse: the operator can generate a default homeserver.yaml, or it can work with a custom homeserver.yaml, provided by the user.
  • Deploy the Heisenbridge and the mautrix-signal bridge: the operator automatically (re)configures Synapse to add the corresponding app_services.
  • Deploy a PostgreSQL database for Synapse (depends on the postgres-operator).

Once the operator is deployed, the Synapse resource becomes available. Deploying a basic instance goes as simple as:

$ cat << EOF > synapse.yaml
apiVersion: synapse.opdev.io/v1alpha1
kind: Synapse
metadata:
  name: my-synapse
spec:
  homeserver:
    values:
      serverName: example.com
      reportStats: true
EOF
$ kubectl apply -f synapse.yaml 
synapse.synapse.opdev.io/my-synapse created
$ kubectl get pods
NAME                          READY   STATUS    RESTARTS   AGE
my-synapse-84d56d54df-c699k   1/1     Running   0          63s

The operator takes care of the deployment and lifecycle management of the Synapse instance. Similarly, the Heisenbridge and MautrixSignal resources can also be deployed alongside Synapse and are managed by the operator.

This operator is written in Go. To know more about the project, please visit https://github.com/opdev/synapse-operator, there are explanations on how to deploy the operator, and examples demonstrating the main features. Or ping me on Matrix if you want to have a chat about it ! I'd love to collect some feedbacks !

Dept of Events and Talks 🗣️

Matrix FOSDEM Devroom

Thib announces

The clock is ticking! We're already in December, only a few days left to submit your talk proposal for our in-person Matrix devroom at FOSDEM. All the details to answer the call are in our FOSDEM 2023 CfP

Matrix User Meetup Berlin

saces announces

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

Meet other matrix users, chat about Matrix, the rest, and everything else, discuss your Matrix ideas, sign each other in persona, and maybe spice the evening with a good mate or beer.

Every first Wednesday of the month in the c-base at 8pm ('til the next pandemic).

Matrix room: #mumb:c-base.org

jaller94 reports

Matrix Community Summit Berlin 2022 Podcast (English episode)

Meet Charles (cvwright), Project creator and Lead engineer of Circles. He and I spoke about how he got to know about Matrix, how encryption became more common on the Internet and how he started Circles – an app, built with Matrix, to privately connect with family and friends.

Same website and RSS feed as last week.

Mastodon toot: https://mastodontech.de/@jaller94/109445133197729074

I hope you enjoy this week's interview and learn what other people in the community are up to. From next week on we're back to episodes in German – but another English episode is on its way!

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
1wcore.org403
2veri.dev483
3ruiter.me523
4nognu.de664
5willian.wang676.5
6kittenface.studio833
7coolegrane.farm1053.5
8trygve.me1067
9justinruiter.nl1191.5
10rom4nik.pl1291

#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
1dendrite.matrix.org217
2kumma.juttu.asia234
3wcore.org238
4willian.wang310
5forlorn.day687
6matrix.milkte.ch1346
7frai.se11439

That's all I know

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

Funding Matrix via the Matrix.org Foundation

2022-12-01 — General — Matthew Hodgson

TL;DR: you can now officially join the Matrix Foundation as an organisational or individual member in order to sustainably support core Matrix development, help steer the direction of the protocol and how best to fund it! Organisations can join by filling this form and we will get back in touch, or individuals can now donate directly here (as a more efficient alternative to Patreon, which remains online for Patrons used to it).

Hi all,

Only two days late for Giving Tuesday (and 4 years late on the Foundation scale), we are super excited to announce that we are finally expanding the Matrix Foundation into a fully-fledged non-profit fund-raising organisation to help support the core Matrix development and the wider open source Matrix ecosystem!

Has your organisation been using Matrix to communicate via the open source server and clients and you want to ensure that improvements and features still keep coming? Become a member, and feed into the roadmap.

Has your company been building on top of Matrix, making the most of its openness and flexibility, but you’ve never figured out how to contribute back in order to ensure the resilience of the tech which you rely on for the success of your business? Become a member, and ensure the core development is funded and that Matrix is here to thrive.

Are you about to be designated a gatekeeper by the EU, and have to rapidly figure out how to implement DMA-compliant interoperability (complete with end-to-end encryption compatibility) into your services? Become a member, and discover how Matrix can solve all your problems, while providing your input too.

Are you looking to implement DMA interoperability but don't fall into the gatekeeper designation? Become a member, and help ensure Matrix fits your needs too!

Are you a non-profit organisation with a mission to provide secure and sovereign communications to those who need it the most, providing an alternative to the current players? Become a member, and help us take our mission forward.

Are you an individual who strongly supports the mission of Matrix and wants to see it thrive and become the open backbone of the world’s communications? Become a member, and support the future of Matrix.

In short, this finally gives the wider world a way to contribute concretely to the significant costs of funding folks to work fulltime on core Matrix development - which now covers over 243(!) projects in github.com/matrix-org. Core Matrix work ranges from:

  • managing the Matrix spec itself
  • maintaining the reference client SDKs and encryption and getting them independently audited
  • maintaining example server implementations in the form of Synapse and Dendrite
  • writing the test suite
  • publishing the matrix.org website
  • promoting awareness of Matrix
  • running the matrix.org homeserver
  • and so much more...

In exchange for supporting the Foundation, and beyond providing certainty that our work can continue, organisations and individuals who contribute financially will be able to directly provide input to the trajectory of the core Matrix developments by becoming official members of the Matrix.org Foundation.

Introducing Foundation Memberships and the Governing Board

Practically speaking, this means that we are going to create a "Governing Board" to the Matrix.org Foundation: a new team, made up of members voted by the overall membership, a subset of the Guardians and a subset of the Spec Core Team. The Governing Board will have the responsibility of determining how Foundation funds are distributed and used, how the Spec Core Team roadmap is prioritised, how to best grow Matrix awareness, etc.

In other words, we are literally expanding the day-to-day steering of the direction of the Matrix Foundation to the wider community. In order to run the Governing Board and the overall work of the Foundation, we are also hiring an Executive Director, so please get in touch via [email protected] if you’re a non-profit foundation-running expert! In the interim, while this search proceeds, Matthew and Amandine will fill the role with the support of the other Guardians of Matrix. The Guardians themselves retain their existing function as the Foundation's non-executive board - responsible for safeguarding the overall mission of Matrix, appointing the membership of the Spec Core Team, approving membership applications, and defining the overall changes we’re outlining here.

Membership comes at various levels, each with different rewards:

  • Individual memberships (i.e. today’s Patreon supporters):
    • Ability to vote in the appointment of up to 2 ‘community representatives’ to the Foundation's governing board.
    • Name on the Matrix.org website
  • Silver member: between £2,000 and £80,000 per year, depending on organisation size
    • Ability to vote on the appointment of up to 2 ‘Silver representative’ to the Foundation's governing board
    • Supporter logo on the front page of the new Matrix.org website
  • Gold member: £200,000 / year, adds:
    • Ability to vote on the appointment of up to 3 ‘Gold representatives’ to the Foundation's governing board.
    • Press release announcing the sponsorship
    • 1 original post on the Matrix.org blog per year
    • Participation in the internal Spec Core Team room
    • Larger logo on the front page of Matrix.org
  • Platinum member: £500,000 / year, adds:
    • Ability to vote on the appointment of up to 5 ‘platinum representatives’ to the Foundation's governing board.
    • 1 sponsored Matrix Live episode per year
    • Largest logo on the front page of Matrix.org

As the activities of the Foundation increase, we expect to add more benefits to this list, for example discounts on sponsoring a future Matrix Conference, or similar.

Governing Board elections will occur yearly, with the first election planned towards the end of this year once we’ve gathered together the first wave of members and candidates have proposed themselves for election.

For anyone building on Matrix, memberships are a no-brainer as they will ensure the perpetuity and future-proof-ness of the standard. But for anyone supporting the mission of Matrix, this membership can be key to define its future.

Meanwhile, with Matrix looking increasingly integral to implementing interoperable communication for compliance with the EU’s Digital Markets Act (whether that’s as pure Matrix, or as part of the IETF MIMI initiative), this is an incredible opportunity for the organisations impacted by DMA to get a front-row seat within the Foundation to ensure that Matrix thrives and solves the challenges posed by the act. To get involved, please apply via the membership application form.

So, why is this all happening?

Since 2017, core Matrix development has been funded primarily by Element - the company founded by the team who created Matrix. Over the years, Element has put tens of millions of dollars into Matrix - which in turn has come from both selling Matrix hosting (EMS), on-premise Matrix solutions, and VC investment in Element. To put it in perspective, even though there are over 5000 contributors to github.com/matrix-org - over 90% of the actual committed lines of code come from Element employees. Similarly, while we are enormously thankful for the past and existing generous donations from the wider Matrix community, today they only come to $6,000 a month, relative to the $400,000 a month that Element has been funding.

Over the last year, we’ve seen a palpable shift within the Matrix ecosystem. Matrix is growing faster than ever. Synapse has improved immeasurably, using less RAM than ever and even sprouting Rust to optimise its hot paths. Element has improved immeasurably too, with an entirely new design on mobile, and tons of new features including threads, voice messages, location share, video rooms and more. Monthly active users reported via Synapse’s phone-home stats have almost doubled and are growing at their fastest ever rate. The number of servers has increased equivalently. We hear about major new commercial Matrix deployments almost every day. However, while usage is going through the roof - we haven’t seen a matching increase in players looking to support the project.

In fact, we’ve seen the opposite: commercial vendors forking the protocol while trying to break up the core team. Matrix tenders lost to “preferred” vendors who know absolutely nothing about Matrix. Vendors selling Matrix hosting or services without contributing anything back to the project at all. Organisations with huge amounts of money (governments, $$B massive enterprises) have enthusiastically launched proprietary Matrix solutions by building on the liberally-licensed Apache reference Matrix implementations… while contributing back nothing. Now, we are enormously grateful for the commercial Matrix deployments who do actually work with Element to fund core development or contribute code themselves - but this is very clearly the minority. Obviously it’s great to see folks building on Matrix - but it’s rather galling if it ends up with insufficient funding trickling down to the core Matrix team to be able to build the foundational technology that everyone else is relying on.

Element in particular has staffed up in order to both support the core Matrix ecosystem (the spec, Synapse, Dendrite, Client SDKs, Encryption implementations etc) as well as Element-specific work (the Element apps, EMS, the Element Enterprise Installer, etc). As a result, Element employs roughly twice as many developers as you might expect, and while Matrix is here to stay, this turns out not to be sustainable for Element unless the wider ecosystem helps support the foundational work

We believe the world needs secure decentralised communication more than ever, and ensuring the Foundation can distribute funding to those contributing to the core platform (be that Element or individuals or other organisations) is key to that. So: please consider this a call to arms - if you believe the world needs Matrix, and particularly if you depend on it for your business, please join the Foundation and participate!

Fill in the form to apply for membership, or if you are not acting on behalf of an organisation, you can go straight to our donation page.

Matthew, Amandine & the whole Matrix.org Foundation

This Week in Matrix 2022-11-25

2022-11-25 — This Week in Matrix — Thib

Matrix Live

Dept of Status of Matrix 🌡️

Matthew says

Interesting paper analysing the impact of decentralisation (and particularly Matrix) on legislation around content moderation: https://www.thecgo.org/research/the-decentralized-web-and-the-future-of-section-230/

Dept of Spec 📜

Andrew Morgan (anoa) says

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://matrix.org/docs/spec/proposals.

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Spec Updates

Off the back of the release of Matrix v1.5 last week (see the blog post if you missed it), work on the next release has now begun.

Continued review on MSC3706 (extensions to /send_join for partial state) and MSC3852 (user agent information on /devices) by the SCT was seen. MSC3743 (standard error responses for unknown endpoints) was also merged to the unstable spec!

Special thanks to several contributors of fixes to the spec this week; including zecakeh, HarHarLinks, sumnerevans, johannescpk and DMRobertson!

Random MSC of the Week

The random MSC of the week is... MSC3896: Appservice media!

This MSC calls out the issue that today application services, especially those that bridge third-party networks, need to re-upload all bridged media to the homeserver in order for users to view it. This can create a large strain on disk resources for homeservers that bridge third-party networks and is a problem that is worth considering.

The approach the MSC takes to solving this is to allow application services to reserve an exclusive namespace for MXC URL's, such as mxc://example.com/_discord_.*. When a user's client attempted to request a media item that falls within the exclusive namespace, the homeserver would request the media from the application service (which in turn could pull it from the third-party network's CDN) rather than the homeserver's local media repo.

Seems like a cool idea! Check out the MSC and leave your thoughts if you're interested or have suggestions.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

dmr announces

It has been a busy week for the Synapse team.

On Tuesday we released Synapse 1.72, including

plus a batch of bugfixes. As ever, we aim to cut the next release candidate for Synapse 1.73 on the coming Tuesday. It should include the work that landed on develop this week. Of note:

Dept of Bridges 🌉

Postmoogle (website)

An Email to Matrix bridge. 1 room = 1 mailbox.

Aine says

Postmoogle v0.9.9 is here!

The biggest release so far. Hmm... let me try again

THE Biggest Release (so far)!

The last few weeks we at etke.cc enhanced and optimized Postmoogle to make it as close to common email services as possible (it's not a full Gmail/Outlook/%You-name-it% replacement for a regular user yet, some features are missing, but we're pushing it towards that goal!)

The most notable changes:

  • automatic ban list (can be enabled by postmoogle admin) - no more nasty spammers will ever bother your host and if they will - Postmoogle will cut the wires drop TCP connections before even talking with them
  • automatic greylisting (can be configured by postmoogle admin) - good SMTP software must resend emails (and 99.99% of them do), RFC said.
  • internal email queue to re-send failed emails (with 45x errors) automatically - because Postmoogle is good SMTP software and it follows RFC
  • bridging email threads ⇿ matrix threads/reply-tos (for new emails) - that's a hard one. TL;DR: reply to email in matrix room (either by matrix thread or matrix reply-to) = email reply on email side, works both ways
  • multi-domain mode with the ability to select a domain for sending emails per room/per mailbox (all other domains will act as aliases)
  • !pm send and thread replies send multipart emails by default (both HTML from formatted markdown and plaintext in the same email)
  • lots of other enhancements and fixes under the moogle

Source code and don't forget to say hi in #postmoogle:etke.cc

Dept of Clients 📱

Nheko (website)

Desktop client for Matrix using Qt and C++17.

Nico says

You may have noticed it has been a bit quiet from our side lately. Partially that is because I was just busy fixing issues in our new features on the Synapse side (or implementing MSCs in Synapse). But we also just have been fixing boring old issues in our project, that have been not annoying enough to get attention. For example there was a warning when configuring the project with CMake, which now shouldn't happen anymore, but also is just really boring to talk about.

So maybe some more exciting stuff, in theory, if your distribution builds curl with the correct flags, Nheko now supports connecting to servers over HTTP/3. This in itself is not that useful, but it might improve how Nheko behaves when switching connections or when using mobile data.

Nheko now also shows a completer for /commands (stuff like /me, /react or /sovietflip).

You can also now invert the Enter setting, so that you can send using Shift+Enter (thanks to LordMZTE) and you can update your status message over D-Bus (thanks LorenDB), which allows you to show what song you are listening to or what project you are working on, if you enable the D-Bus API and implement that as an addon in your music player or IDE.

Also lots of boring cleanups going on behind the scenes still, so expect cool stuff to be slower for the next few weeks.

Neochat (website)

A client for matrix, the decentralized communication protocol

Tobias Fella says

You might be aware that we, the NeoChat team, are currently working on implementing end-to-end encryption in NeoChat. If you're interested in that work, you should read the blog post i've written about it at https://tobiasfella.de/posts/neochat-e2ee/

Hydrogen (website)

Hydrogen is a lightweight matrix client with legacy and mobile browser support

Bruno says

Back after a bit of a hiatus working on call support (coming soon!) and non-hydrogen things which we're wrapping up now. Today and last Friday we've added sticky date headers to the timeline, which just got released in 0.3.5. Check it out if you haven't already at https://hydrogen.element.io

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

Danielle 🦺 announces

  • We’ve recently made improvements to the password recovery flow, meaning that you no longer choose your password before verifying your email… We now follow a more conventional approach (and have parity with mobile flows) that will make it easier for those struggling to sign in.
  • We’ve also continued to add tests and increase overall test coverage!

In labs (you can enable labs features in settings on develop.element.io or on Nightly):

  • Rich text editor: We’ve been working on lists and ‘ctr+backspace’ support
  • Threads: Improvements to performance and notifications continue but this week we’ve mostly put our efforts on testing as we’re prepping for the release of Threads out of Labs!

Dept of SDKs and Frameworks 🧰

Trinity (website)

Trinity is an experimental bot framework written in Rust and using matrix-rust-sdk, as well as commands / modules compiled to WebAssembly, with convenient developer features like modules hot-reload.

bnjbvr reports

This week, a tritiny update:

  • we have experimental support for using Trinity as a library, thanks to @gnunicorn! So experimental that the public API may break at any point without warnings, and it hasn't even been published, but if you feel adventurous, take a look.
  • Flaki from Suborbital and Yours Truly have had a small and cozy chat about Trinity, where we talk about WebAssembly and Matrix, try to set up a new instance of the bot (!), find a bug (!!) but at the end it works (!!!). Youtube link if you're teased!

If you're interested to follow the project, feel free to join #trinity:delire.party or get the code on Github.

Matrix-Webhooks (website)

Matrix-Webhooks goal is to provide Rich, Embedded webhooks for Matrix as an alternative to Discord Webhooks, it's compatible with discord payload and API, so very easy to integrate into services like github, gitlab, grafana, uptime kumi etc ...

rednaks reports

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

ben announces

It's been a busy week for the matrix-sdk team. As the week before, a lot of time was (well) spent on fixes and smaller improvements for mobile integration, during which a few bugs and problems where discovered and squashed. While this is ongoing, some of them already found their way back into mainline or at least have PRs pending for it: Like the bug in the read marker tracking which sometimes caused a crash 1 2, a problem with timeline construction being async or some minor fixes on the new xtask for swift. We've also noticed a significant regression in the automatic retry mechanism, which would just continue to spin for ever if the server gave a fully warranted error code back - if you experienced this, this PR should be solving it for you.

A significant milestone was achieved this week on Async UniFFI. After getting a first PoC ready the week before, Ivan packaged it all up and sent a draft PR upstream with async python code calling an async rust code over FFI and interpreting the rusty result. So cool! Swift and kotlin targets are next.

👉 Wanna hack on matrix rust? Go check out our help wanted tagged issues and join our matrix channel at Matrix Rust SDK.

libQuotient (website)

A Qt5 library to write cross-platform clients for Matrix

kitsune announces

As that blog post by Tobias mentions, releasing libQuotient 0.7 is the immediate next step - and in line with that, 0.7 RC has been published! Not much has changed since two betas; despite a very big piece of E2EE introduced in 0.7 release cycle, things have been mostly ironed out earlier in the year. Packagers are welcome to try their tools on the new release. Be mindful though that E2EE has just been introduced and wasn't widely tested; besides, a few pieces are still missing (read the blog post!); so while it's probably reasonable to switch E2EE on for packaging libQuotient, it's NOT recommended to do the same in client applications, unless accompanied by warnings and disclaimers all over the place. The release notes are still shallow and boring - the longer text will come with the final release.

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi says

matrix-docker-ansible-deploy has received lots of optimizations to cut down playbook runtime, sponsored by the etke.cc managed Matrix hosting service. The etke.cc Ansible playbook (which is an extension of matrix-docker-ansible-deploy) is growing to support more and more services (besides just Matrix), so the Matrix playbook being leaner prevents runtimes from becoming too slow and improves the customer experience.

The playbook now runs about 2x-5x faster, thanks to:

  • various optimizations (using include_tasks instead of import_tasks in all Ansible roles)
  • the introduction of additional install-only tags (--tags=install-all or --tags=install-COMPONENT) which skip slow and often unnecessary to run uninstall tasks

To learn more, see this changelog entry

Dept of Bots 🤖

Mjölnir (website)

The moderation bot for Matrix

Gnuxie announces

Hi everyone, we have released Mjolnir v1.6.1 (via v1.6.0)

Which includes:

  • Always echo policy list changes. List changes are now always enabled, whereas before they where only shown with config.verboseLogging. Mjolnir now no longer hides changes made by the same mjolnir account, providing the user with feedback for changes they have made to policy lists after using the ban/unban commands.

  • Policy lists created by mjolnir will now be done so with support for MSC3784.

  • Mjolnir now supports specifying the config file with the argument --mjolnir-config. It is highly recommended that you do this as opposed to relying on the environment variable NODE_ENV. The documentation for running with docker and from source have been updated accordingly.

  • Fix the WordList protection which was matching every message.

  • Rework the banning and unbanning of entities in PolicyLists.

    • Unbanning no longer searches for rules by state_key but by entity.
    • Users with longer mxids can now be banned.
    • Mjolnir no longer waits for the next client sync before applying server ACL and member bans after using the ban command
  • Improve the clarity of the unban command. Users marked as banned by the Flooding and FirstMessageIsMedia protections can now be unbanned with the ban command. Using the unban command without true will now warn the user that room level bans will not be overridden.

  • Replaced acceptInvitesFromGroup with acceptInvitesFromSpace.

  • Fix config.protectAllJoinedRooms leaking into explicitly protected rooms and mjolnir trying to protect watched lists in some circumstances. You would only have been impacted by this if you ran latest.

Dept of Events and Talks 🗣️

Matrix Community Summit Berlin 2022 Podcast (German)

jaller94 reports

The Community Summit 2022 in Berlin was a lot of fun and we've gotten to know a lot of community members and their projects. Some of these people we were able to interview and will release the recordings as a weekly podcast. From now on, each Friday an episode will be released for a total of 8 episodes.

Today (18th November), we're starting with Alex and Valentin. We talked about the summit, what went well and what activities to add next time. Furthermore, the two shared their passion for home server performance. Give it a listen!

Website: https://anchor.fm/matrix-podcast0

RSS feed: https://anchor.fm/s/cdb34188/podcast/rss

If you don't speak German, stay tuned for English episodes in some of the following weeks, Yan and Christian

Chaos communication family

Yan reports

Hacking in Parallel ////

December 27-30 2022

A part of our chaotic decentralized intergalactic community will be a meeting in the rooms of "ETI Schauspielschule Berlin" at Hacking in Parallel//// this year.

There are several units and indiduals who will be there spread (into) the matrix ... You can enter proposals until 2022-11-27 23:42 (Europe/Berlin). https://pretalx.c3voc.de/hip-berlin-2022/cfp

The Matrix space for the event is a good general place to get in touch. https://matrix.to/#/#hip-space:1312.media

We also prepare for having a Matrix Operation Centerhaos at the Chaos Communication Camp in Summer. This will take place from August 15 to 19, 2023 at Ziegeleipark Mildenberg near Berlin, Germany. If you want to join forces of the and need a ticket voucher for the HIP. Drop in at: https://matrix.to/#/#matrix-moc:datanauten.de

If you can / will not make it with you physical body to Berlin. No worries. You should start connecting the dots.

The XRevent.Labs Operation Group invites you to xrelog22. Discussions, lectures, music, art, performance and the joint creation of independent multiverses will take place from December 28 to 30, 2022. We not only want to raise socio-political, ethical and creative questions, but also actively develop own spaces and content for an interactive, cross-reality live experience.

Anyone who is interested in joining or visiting us can do so either with pre-registration for the real stage at FTZ - Digital Reality at HAW in Hamburg or virtually in the digital-twin at XRevent platform, or the Intergalactic-Chaos-Communication-Broadcast-Studio, aka icc|bs. Your contributions can be pre-recorded, streamed live via a conference tool or presented in the real space on site. Either way, get in touch and we’ll find a solution. Please test yourself and wear a mask if you visit us in person.

Furthermore we offer:

  • weekly workshops in advance
  • recordable LED pixel walls
  • Thirdroom Research Lab

Contacts …

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
1babel.sh429
2wcore.org434
3alemann.dev474.5
4nognu.de593
5chat.nerdhouse.io595
6dendrite.babel.sh690
7babel1.eu843.5
8willian.wang911
9jeroenhd.nl929
10kittenface.studio971

#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
1babel.sh120
2conduit.hazmat.jacksonchen666.com145
3dendrite.babel.sh188
4wcore.org348
5willian.wang391
6jacksonchen666.com749
7valha.la828
8forlorn.day922
9evilcyberhacker.net1629
10frai.se41508

That's all I know

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

Synapse 1.72 released

2022-11-22 — Releases — Mathieu Velten

It's not Christmas yet, but it's time for a new release! Say hello to Synapse 1.72.

It seems like this blog didn't self update through AI for the 2 preceding updates so this post will cover 1.70 to 1.72, sorry if this is a bit long but it's been a while :)

Announcements

Dropping support for PostgreSQL 10

PostgreSQL 10 has reached End Of Life: Synapse will no longer support it beginning with version 1.72 so please upgrade your database if you have not already done so.

Legacy Prometheus metric names disabled and to be removed

In previous versions of Synapse, some Prometheus metrics were emitted under two different names, an older name that was non-compliant with OpenMetrics and Prometheus conventions and a new compliant name.

Synapse 1.71 and later have the old metric names switched off by default.

For now it's still possible to get them by using enable_legacy_metrics: true, however server administrators still using legacy metric names are highly encouraged to migrate, as they will be removed in 1.73.

You can find the full list of renamed metrics here.

Changes to the events received by application services (interest)

Following the implementation of MSC3905, Synapse now only considers local users to be interesting to application services. In other words, the users namespace regex in an app service's registration file is only applied against local users of the homeserver.

Please note, this probably doesn't affect the expected behavior of your application service, since an interesting local user in a room still means all messages in the room (from local or remote users) will still be considered interesting.

You can find a bit more info in the MSC and in the upgrade notes.

The new stuff

Threads, threads, threads!

Several MSCs related to threads got implemented:

  • MSC3856 provide an API to fetch threads and related metadata.
  • MSC3771 and MSC3773 implementing per thread read receipts and per thread notification counts.
  • MSC3874 allows to filter out messages belonging to threads from the main timeline (still considered experimental). Along with MSC3856, this should noticeably improve performance of rooms that use threads heavily.

This should significantly improve user experience related to threads, being through behavior or performance impact.

Linking events together

Relationships are great, even more between events than humans!

MSC3664 allows Matrix clients to be notified in real time of related events, so you can now be made quickly aware of this cat emoji reaction that your cat photo clearly deserved.

Additionally, Synapse 1.72 includes an implementation of MSC3912, allowing users to redact the relations of a message alongside the message itself. This is particularly helpful in cases like edits, where users usually want to see their edits redacted at the same time as the original message. Note that this implementation is currently incomplete and still experimental, though, so watch this space!

Faster joins, continued

We continue our journey to get everything going as transparently as possible when doing fast remote room joins.

If you missed it you can refer to this previous blog post to get a lot more infos, and feel free to grep Synapse changelog and the numerous related issues/PRs for all the gory details.

Everything else

See the full changelogs (1.70, 1.71, 1.72) for a complete list of changes in the releases. Also please have a look at the upgrade notes for this version.

Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including (in no particular order) Nico, sando38, realtyem, aceArt GmbH, Tuomas Ojamies, Ashish Kumar, asymmetric, Beeper, Ryan Miguel, Paul Tötterman, Abdullah Osama, Finn, Ivan Shapovalov, Dirk Klimpel, Jonathan de Jong, MichaIng and Aaron Raimist as well as anyone helping us make Synapse better by sharing their feedback and reporting issues.

This Week in Matrix 2022-11-18

2022-11-18 — This Week in Matrix — Thib

Matrix Live

Dept of Spec 📜

Andrew Morgan (anoa) says

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://matrix.org/docs/spec/proposals.

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Merged MSCs:

  • No MSCs were merged this week.

Spec Updates

Matrix v1.5

Matrix v1.5 was released on November 17th, 2022! 🎉

While not as feature-packed as previous releases (v1.5 was intended as a maintenance release), it's still worth checking out! Included are two new MSCs that have landed, as well as loads of little bugfixes and clarifications to the spec text itself. Thanks to all who helped fix issues since v1.4!

See the Matrix v1.5 blog post for all the juicy details.

Extensible Events are Shaping Up!

As may be apparent from the new MSCs this week, the SCT has been looking at extensible events to iron out some of the finer details of the system. They're not necessarily in the best position to review at the moment, but keep an eye on this space for when review would be most welcome 🙂

Random MSC of the Week

The random MSC of the week is... MSC2705: Animated thumbnails for media (and thumbnail content-type requirements)!

This MSC attempts to define a method for clients to indicate to their homeserver that they would like to have animated version if possible when requesting a thumbnail of some media. This would allow clients to provide a toggle to the user for whether media in the timeline should be animated, or whether room and user avatars should be animated, etc. Potentially separate options for each!

Today, there is no way for the client to indicate per-request whether they would like to receive an animated version of a thumbnail. This leaves the choice up to the homeserver, which gives individual users much less control.

The MSC also defines mimetypes that animated thumbnails should return. And it has an implementation in matrix-media-repo!

Check it out if animated avatars/thumbnails peaks your interest.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Shay says

Another week has gone by and we here at Synapse Inc have been working hard on faster room joins, bugfixes, and other fun items to make Synapse faster and better, in addition to releasing v1.72.0rc1. Just a few highlights of the release are:

  • Adding experimental support for MSC3912: Relation-based redactions.

  • Adding an Admin API endpoint for user lookup based on third-party ID (3PID).

  • Fixing a background database update, introduced in Synapse 1.64.0, which could cause poor database performance.

  • Improving the performance of /context in large rooms.

In addition, please note that we now only support PostgreSQL 11+, as PostgreSQL 10 has reached end-of-life. As always, if you'd like to know more about this release, hop on over to the release page (https://github.com/matrix-org/synapse/releases) and take a look!

Dept of Clients 📱

Neochat (website)

A client for matrix, the decentralized communication protocol

Tobias Fella says

It's been a few weeks since the last update on NeoChat and we've been working hard on bringing new features and fixes. Some notable ones include:

  • Porting our settings to a nicer style
  • Various UI Improvements in the Room list and Timeline
  • Added the ability to configure a Proxy
  • Creating a significantly nicer UI for switching accounts
  • Improved the room search, with a more obvious way of searching on a different server
  • Viewing and Answering polls
  • The ability to change your display name for a single room
  • Correctly escaping HTML characters in various places
  • Fixed file sending on android
  • Fixed reactions sometimes not showing up
  • Fixed some problems with viewing custom emojis
  • Fixed the external room window blocking the main client window
  • Implemented showing animated images in the timeline

FluffyChat (website)

Krille Fear announces

FluffyChat 1.7.0 has been released. It features a new way to work with spaces via a bottom navigation bar. A lot of work has also been done under the hood to make the app faster and more stable. The main color has slightly changed and the design got some finetuning. Please be aware that it can take some time until it receives all app stores. The Snap Store currently waits for a review, while the arm64 version of Flatpak has recently failed to build. Read the full changelog here: https://gitlab.com/famedly/fluffychat/-/blob/main/CHANGELOG.md

Ement.el (website)

Matrix client for Emacs

alphapapa announces

Ement.el, a Matrix client for the GNU Emacs text editor and Lisp environment, has been updated to v0.5. Since the last version announced in TWIM, these improvements have been made:

Additions

  • Present "joined-and-left" and "rejoined-and-left" membership event pairs as such.
  • Process and show rooms' canonical alias events.

Changes

  • The taxy.el-based room list, with programmable, smart grouping, is now the default ement-room-list. (The old, tabulated-list-mode-based room list is available as ement-tabulated-room-list.)
  • When selecting a room to view with completion, don't offer spaces.
  • When selecting a room with completion, empty aliases and topics are omitted instead of being displayed as nil.

Fixes

  • Use of send-message filter when replying.
  • Replies may be written in compose buffers.

Feel free to join us in #ement.el:matrix.org!

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Ștefan reports

  • This week has been exciting for ElementX (our brand new Element iOS client based on the Matrix Rust SDK) which gained a brand new navigation system and a new user notification system, support for displaying file messages in the timeline and playing back video ones, as well as sending states for new messages and an improved bubble layout.
  • We have also started working on an iPad specific layout, improved our logging components, improved hardware keyboard handling and fixed a few annoying issues
  • In Element land we have a made a handful of bug fixes which will hit the store next week and work has been continuing on threads, the new rich text editor, the device manager and our new crypto stack

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

benoit announces

  • Element Android 1.5.8 RC is available on the PlayStore for testers.
  • The team is working on the device manager, the Rich Text Editor (to add more edition options: links, quote, etc.), and the voice broadcast.
  • On the Element Android X side, we are also making progress. We can now change the server (the server has to support sliding sync though). The room list is displayed and the timeline with the Rich Text editor too. We are now working to add more features such as supporting more Event types in the timeline, etc. And the app got a new monochrome icon!

Dept of Non Chat Clients 🎛️

Populus Viewer (website)

A Social Annotation Tool Powered by Matrix

gleachkr says

Since our last update, Populus viewer has added two features, both a bit overdue:

  1. Populus viewer now supports .well-known discovery, so you just need to know your matrix server name, rather than the full subdomain in order to connect.
  2. Populus viewer now supports the "restricted" join rule for annotations, so that annotation membership can be restricted to members of the underlying resource space. This will likely be the default for newly created annotations in the future.

Our server (at populus.open-tower.com) has also been rebuilt and reconfigured a bit, and will likely be converted from a test-bed to a stable home for annotation-based discussions in the coming weeks. As always, if you want to give us feedback, keep track of progress, or talk about the future of social annotation on Matrix, join us at #opentower:matrix.org!

Dept of Encryption 🔐

uhoreg announces

As many of you know, we are working on using MLS, an upcoming IETF standard for end-to-end encryption, in Matrix. We've set up a page, Are We MLS Yet to track the progress of this project.

Dept of SDKs and Frameworks 🧰

Matrix SDK in Elm (alpha)

Bram reports

Elm is a functional programming language that compiles to JavaScript with the promise that their generated JS code will NEVER raise any runtime errors and show high performance.

Despite the fact that certain implementations like Cactus Chat already use Elm, I could not find an SDK for it. That's why I've started to write one: https://git.noordstar.me/bram/Elm-Matrix

The SDK is currently in early development. The /v3/sync endpoint is functional and there are already a few other ways to interact with the API, so the repository can already be tested by developers who are familiar with Elm. If you aren't that familiar with the language, it is better to wait until I release the first complete version.

libcmatrix

Matthew announces

Purism has been chipping away at libcmatrix for their chat app: https://puri.sm/posts/toward-matrix-support-in-chats/

trinity (website)

bnjbvr reports

Trinity is an experimental bot framework written in Rust and using matrix-rust-sdk, as well as commands / modules compiled to WebAssembly, with convenient developer features like modules hot-reload.

Two weeks of updates, because I've been slightly late last week:

  • Trinity now uses WebAssembly components as created with cargo-components and wit-bindgen under the hood for the Matrix modules. This is quite experimental and early stage, but this allows multiple exciting things in some not-so-distant future: switch API implementations at runtime, more security by isolating specific APIs, using source languages for the modules that can be compiled with wit-bindgen, etc.
  • In particular, we've made a proof-of-concept for a bot module written in C (!) and compiled to WebAssembly, and we've been very close to having a bot module written in Java using the excellent TeaVM project.
  • New APIs have been added for the modules:
    • a simple key-value store, that is backed by the redb pure Rust project, which comes with great performance.
    • modules can now specific help messages as well as admin commands (that will be available only to a predefined admin user).
  • Which then allowed to write a shiny new Mastodon module: configure it in a room with a set of credentials, a Mastodon URL instance, define which users are allowed to use it, and then post statuses from the room using !toot message.

If you're interested to follow the project, feel free to join our Matrix room or get the code on Github.

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

ben announces

Major breakthroughs have happened behind the scenes this week: we were able to get a simple python3-asyncio to poll our rust-side future and receive its result via uniffi. While there isn't much to show for the outside world, this is a major step towards having async-uniffi. The team is super excited about this development.

Meanwhile in Sliding-Sync-Land, we have debugged the session reset and added transparent session recovery to the offline-caching PR. Together with the latest PR that hands over the already received timeline events to the new Timeline API, this should visibly speed up things and improve overall performance across all major clients using both of these. Further more, the Timeline API has UTD decryption retry support now. The client interfaces are moving ahead fast.

On the always-on-going-improvement-front, we have upgraded to ruma, merged the component generation for swift in xtask, switched to custom cargo build profiles, have a signaling mutex for crypto now, moved large parts of deserialized_responses to matrix-sdk-base and made the sync_token accessor private.

👉️ Wanna hack on matrix rust? Go check out our help wanted tagged issues and join our matrix channel at Matrix Rust SDK.

Dept of Ops 🛠

ML model for Matrix Spam Detection

MTRNord says

A few weeks ago I started experimenting with extending my moderation tools with a basic ML model that can give me early warnings on common spam.

As a result https://github.com/MTRNord/matrix-spam-ml was made. It contains a basic ML model using tensorflow based on telegram spam from matrix and a standard SMS dataset. It provides a HTTP api which can also be found at https://spam.midnightthoughts.space and a Synapse and mjolnir integration for both sampling training data and using it as automated spam reactions and is planned for the future.

Feel free to hop by in #matrix-spam-ml:midnightthoughts.space for any further questions :) also please note that the repo is using LFS and as it contains trained models it is pretty huge when cloning with LFS data.

axon.sh

An interactive command-line administration tool for Synapse written in Bash. Better than typing curl requests!

joe says

axon.sh version 0.22.0 has been released, adding support for retrieving event reports from your homeserver, and looking up local users by third-party ID (requires Synapse 1.72.0rc1 or later). Please try it out and report your experience in #axon:matrix.thisisjoes.site!

Dept of Events and Talks 🗣️

FOSDEM

Thib reports

This year, the Matrix.org Foundation is excited to host the first ever Matrix.org Foundation and Community devroom in person at FOSDEM. Half a day of talks, demos and workshops around Matrix itself and projects built on top of Matrix.

We have a physical devroom on Sunday 5 morning, and will follow with details for the online devroom as soon as we get them! You can read the CfP for the physical devroom here: https://matrix.org/blog/2022/11/16/call-for-participation-for-the-fosdem-2023-matrix-devroom

Dept of Interesting Projects 🛰️

Matrix plays GameBoy games once more

Bram announces

Last week's TWIM presented a GBA emulator that was written and implemented in JavaScript. Due to some obscure Rust dependencies that weren't compatible with my server setup, I decided to rewrite the program in Python.

The Python implementation can be found at bram/pyboy-to-matrix. It only supports GameBoy games (no GBA), but it only needs one process (or Docker container) to run both the emulator and the Matrix bot.

If you're unfamiliar with last week's post, the GameBoy emulator is a program that emulates games and then interacts with you on Matrix. You can send commands and the emulator will show you what happened in the game.

Send me a DM at @bram:noordstar.me if you want to see a live demo.

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
1dmnd.sh270
2joeth.uk439.5
3matrix.org483.5
4babel.sh617
5willian.wang731
6babel1.eu738
7cezeri.tech741
8kittenface.studio906
9wcore.org993
10keks.club1435

#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
1dendrite.matrix.org130
2babel.sh214
3willian.wang289
4wcore.org297
5frai.se301
6forlorn.day572
7grin.hu612
8valha.la796.5
9rustybever.be869
10matrix.milkte.ch911

That's all I know

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

Matrix v1.5 release

2022-11-17 — Releases, Spec — Travis Ralston

Hey all,

We’ve just released Matrix 1.5, a largely maintenance update for the spec. We intentionally haven’t landed any major features in this release as Matrix 1.4, just shy of 2 months ago, had introduced fairly large features for clients and servers to consider. As with all spec releases, we encourage implementations to gradually update over the next few months rather than expect them to have support for everything on release day.

Matrix 1.5 sees just 2 MSCs get merged, though this is to be expected from a maintenance release. We expect that the next release (in Q1 2023) will have a few more exciting features to it :)

We’ve covered both MSCs below, but read on to the full changelog for the full picture.

MSC3267: Reference relations

Already supported implicitly by the spec up until now, reference relations are a way to simply reference another event. Usually these sorts of relations are used for events which need to be related to each other, but a dedicated relationship type doesn’t make a lot of sense.

In-room verification and MSC3381: Polls are examples of how these relations get used.

MSC3905: Clarify appservice interest in user IDs

MSC3905 fixes an issue in the specification where appservices (usually bridges) specifying a users regex without homeserver domain would end up receiving far more event traffic than they would have intended. With the MSC, appservices are now only considered interested in “local” users, regardless of how vague their users namespace is.

Overall this should have no effect on most bridges/appservices, however if an appservice in the wild really does need to listen to all users on all homeservers, it can specify a non-exclusive namespace on all rooms instead.

While writing this MSC into the spec we took some time to clarify the appservice registration requirements more generally: check them out here.

The full changelog

MSCs are how the spec changes in the way it does - adding, fixing, and maintaining features for the whole ecosystem to use. Check out the full changelog below, and the Spec Change Proposals page for more information on how these MSCs got merged (hint: they submitted a proposal, which anyone can do - take a look at the Matrix Live episode where Matthew covers the proposal process).

Client-Server API

Backwards Compatible Changes
  • Add m.reference relations, as per MSC3267. (#1206)
  • Add missing documentation for m.key.verification.request msgtype for in-room verification. (#1271)
Spec Clarifications
  • Fix various typos throughout the specification. (#1260, #1265, #1276)
  • Fix naming of device_one_time_keys_count in /sync. (#1266)
  • Improve display of event subtypes. (#1283)
  • Improve documentation about ephemeral events. (#1284)
  • Define a 400 response from /_matrix/client/v3/directory/rooms/{roomAlias}. (#1286)
  • Clarify parts of the end-to-end encryption sections. (#1294, #1345)
  • Various clarifications throughout the specification. (#1306)
  • Replace set_sound push rule action by set_tweak. (#1318)
  • Clarify the behavior of PUT /_matrix/client/v3/pushrules/{scope}/{kind}/{ruleId}. (#1319)
  • Clarify that .m.rule.master has a higher priority than any push rule. (#1320)
  • Require request field refresh_token at endpoint POST /_matrix/client/v3/refresh. (#1323)
  • Fix a number of broken links in the specification. (#1330)
  • Add example read receipt to GET /_matrix/client/v3/sync response example. (#1341)

Server-Server API

Spec Clarifications
  • Fix a number of broken links in the specification. (#1330)

Application Service API

Spec Clarifications
  • Clarify that application services can only register an interest in local users, as per MSC3905. (#1305)

Identity Service API

Spec Clarifications
  • Fix a number of broken links in the specification. (#1330)

Push Gateway API

No significant changes.

Room Versions

Spec Clarifications
  • Reword the event auth rules to clarify that users cannot demote other users with the same power level. (#1269)
  • Various clarifications to the text on event authorisation rules. (#1270)
  • Fix a number of broken links in the specification. (#1330)

Appendices

No significant changes.

Internal Changes/Tooling

Backwards Compatible ChangesSpec Clarifications
  • Improve error messages emitted by resolve-additional-types template. (#1303)
  • Fix link to API viewer. (#1308)
  • Stop rendering the subsections of the Client-Server API and Room Versions specs as their own separate pages. (#1317)
  • Use a link checker to ensure that we do not have broken links. (#1329, #1338)
  • Update instructions to preview Swagger definitions. (#1331)
  • Make definition anchors more unique. (#1339)
  • Generate the unstable changelogs with towncrier, for consistency. (#1340)
  • Update CONTRIBUTING.md to mention that non-content changes to this repo should have an "internal" changelog entry. (#1342)
  • Update module summary table with new modules: Event Replacements, Threading and Reference Relations. (#1344)
  • Disable RSS generation for the spec. (#1346)
NextPage 2