And here is another update to your beloved Matrix homeserver implementation, Synapse 1.73.
Legacy Prometheus metric names removed
When releasing Synapse 1.69 a couple of months ago, we also announced the removal of old Prometheus metrics that have been replaced by more aptly named ones. he list of these metrics can be found here.
Synapse 1.73 implements the final phase of this plan and entirely removes support for those metrics. As a result,
enable_legacy_metrics configuration option, which was introduced in
Synapse 1.71, has also been removed.
Server administrators who are still relying on these legacy metric names are encouraged to update their dashboards at their earliest convenience. For more information, please refer to the upgrade notes.
The new stuff
A bunch of performance improvements have been included in this release, specifically around
Improvements to event filtering on the client-server API gave the matrix.org homeserver a first nice bump as visible on this graph:
Note that the graph from the first image, and the second graph from the second image are apdexes, which is a measure that shows improvement when it goes up (as opposed to e.g. response times, which improve when they go down).
Extensible Events experimental support
Experimental support for Extensible Events has landed in Synapse.
This is exciting since this global rework of events presentation has been in talks for a while, and having an implementation to experiment with greatly helps bringing the feature closer to completion.
Note that this support is still very much experimental as the related MSCs are still under review and could change at any time, and therefore not recommended for use in production.
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) schmop, Ashish Kumar, realtyem, and Brennan Chapman as well as anyone helping us make Synapse better by sharing their feedback and reporting issues.
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 :)
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
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.
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.