Friday, February 23, 2024

Joining the Matrix Spec Core Team

I was recently invited to join the Matrix “Spec Core Team”, the group who steward the Matrix protocol, from their own documentation:

The contents and direction of the Matrix Spec is governed by the Spec Core Team; a set of experts from across the whole Matrix community, representing all aspects …
read more →
Friday, February 23, 2024

Synapse URL Previews

Matrix includes the ability for a client to request that the server generate a “preview” for a URL. The client provides a URL to the server which returns Open Graph data as a JSON response. This leaks any URLs detected in the message content to the server, but protects the …

read more →
Friday, December 15, 2023

Matrix Intentional Mentions explained

Previously I have written about how push rules generate notifications and how read receipts mark notificiations as read in the Matrix protocol. This article is about a change that I instigated to improve when a “mention” (or “ping”) notification is created. (This is a “highlight” notification in the Matrix specification …

read more →
Friday, December 15, 2023

Matrix Presence

I put together some notes on presence when implementing multi-device support for presence in Synapse, maybe this is helpful to others! This is a combination of information from the specification, as well as some information about how Synapse works.

Note

These notes are true as of the v1.9 of …

read more →
Friday, October 6, 2023

Handling GitHub Notifications

Note

This was originally written for some coworkers and assumes a mostly GitHub-based workflow. It has been lightly edited to be more readable, but if your organization doesn’t use GitHub like we do then it might not apply great.

GitHub can generate a lot of notifications which can be …

read more →
Wednesday, October 4, 2023

Matrix Live demo on Linearized Matrix

I demoed some of my work at Element on Matrix Live back on August 4th’s This Week in Matrix (and failed to mention it here). I talked a bit about what Linearized Matrix, Element’s effort for the IETF’s “More Instant Messaging Interoperability” (MIMI) working group.

I demoed …

read more →
Friday, September 15, 2023

Celery architecture breakdown

The Celery project, which is often used Python library to run “background tasks” for synchronous web frameworks, describes itself as:

Celery is a simple, flexible, and reliable distributed system to process vast amounts of messages , while providing operations with the tools required to maintain such a system.

It’s a …

read more →
Monday, May 8, 2023

Matrix Push Rules & Notifications

In a previous post about read receipts & notifications in Matrix I briefly mentioned that push rules generate notifications, but with little detail. After completing a rather large project to improve notifications in Matrix I want to fill in some of those blanks. [1]

Note

These notes are true as of …

read more →
Friday, February 24, 2023

Python str Collection Gotchas

We have been slowly adding Python type hints [1] to Synapse and have made great progress (see some of our motivation). Through this process we have learned a lot about Python and type hints. One bit that was unexpected is that many of the abstract base classes representing groups of …

read more →
Thursday, January 12, 2023

Researching for a Matrix Spec Change

The Matrix protocol is modified via Matrix Spec Changes (frequently abbreviated to “MSCs”). These are short documents describing any technical changes and why they are worth making (see an example). I’ve written a bunch and wanted to document my research process. [1]

Note

I treat my research as a …

read more →