πMatrix Live
πDept of Spec π
Andrew Morgan (anoa) [sick] reports
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:
- MSC3909: Membership based mutes
- MSC3908: Expiring Policy List Recommendations
- MSC3907: Mute Policy Recommendation
- MSC3906: Mechanism to allow sign in and E2EE set up via QR code
- MSC3905: Application services should only be interested in local users
- MSC3904: Room version 10 as the default room version
MSCs in Final Comment Period:
- No MSCs are in FCP.
Accepted MSCs:
- No MSCs were accepted this week.
Closed MSCs:
πSpec updates
With the Spec Core Team aiming for a most-bugfix/maintenance release for Matrix v1.5, I'd like to call out some of the fixes to the spec that have landed in the last two weeks:
- Fix definition of
data-mx-color
values by @progval- Receipts: Add
thread_id
to the/receipt
endpoint by @zecakeh- Aggregations: remove note about "future extensions" by @progval
- Remove reference to a
room_id
key for typing events by @anoadragon453- Fix naming of
device_one_time_keys_count
in/sync
by @erikjohnston- Clarify auth rules for
m.room.power_levels
events by @richvdh- Various clarifications to auth rules text by @richvdh
- Fix up description of
knock_room_state
field, which implied the required field was optional by @anoadragon453Thanks everyone! If you'd like to help get involved yourself with minor spec fixes, check out the list of clarifications on the matrix-spec repo.
πRandom MSC of the Week
The random MSC of the week is... MSC3873: event_match dotted keys!
This MSC aims to eliminate an ambiguity in the push rules portion of the spec. Specifically, that which arises from how to deal with event fields which have a dot (period) in them - such as
m.ts
. The problem is that a.
in the push rule definition is intended as a path-separator. For instance, if you want to match on the value of the "foo" field in the event below:{ "bar": { "foo": 123 } }
you'd write "bar.foo". But if instead of foo, we have
m.foo
, then you'd be stuck when trying to figure out what field to match against in the following case:{ "bar": { "m.foo": 1 "m": { "foo": 2 } } }
Are you matching against
1
or2
?This MSC tries to fix this by stating that "matching on a dot in a field name requires that dot to be escaped". So you'd write "m.foo" to mean the field
m.foo
, rather than a dictionary "m" containing a key "foo".Anyhoo, check the MSC out and voice your opinion if any of that seems interesting to you :)
πDept of Servers π’
cos reports
(Just saw this on mastodon) https://www.process-one.net/blog/matrix-protocol-added-to-ejabberd/
It is exciting to see more actors joining the Matrix ecosytem! We strongly encourage ejabberd developers to join #homeservers-dev:matrix.org and to open MSCs if they find clever ways to improve Matrix.
f0x announces
Out of curiosity I wanted to know which server discovery methods various homeservers were using. To get the data, I cobbled together my autodiscover-server-configuration library with a list of known servers from my homeserver's
destinations
table, which holds 14683 entries (although a few are clearly invalid). After following the discovery flow for every server on the list, it'd also checkHEAD /_matrix/key/v2/server
to see if the resulting (delegated) hostname is behind a reverse-proxy, or directly connecting to Synapse (or a proxy-server that doesn't set it's ownserver
header). Visualized are the results. Some favorite server names:
- a very large cheesecake shoved into a server rack
- you just got gnomed
πSynapse (website)
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
Shay announces
We've been working diligently to make Synapse faster and leaner this week. Some notable items in the release candidate this week are:
- Some legacy Prometheus metric names have been deprecated and will be removed in Synapse 1.73.0. More info can be found in the upgrade notes: https://matrix-org.github.io/synapse/v1.69/upgrade.html#upgrading-to-v1690
- Server admins can now require a manual approval process before new accounts can be used.
- Experimental support for thread-specific receipts has landed.
- DM room creation has been sped up.
plus many more bugfixes, features, and improvements. Check it out here: https://github.com/matrix-org/synapse/releases
πDendrite (website)
Second generation Matrix homeserver
neilalexander reports
This week we released Dendrite 0.10.3 with the usual dose of features and fixes, including:
- Event relations are now tracked and support for the
/room/{roomID}/relations/...
client API endpoints have been added- Support has been added for private read receipts
- The built-in NATS Server has been updated to version 2.9.3
- The
unread_notifications
are now always populated in joined room responses- The
/get_missing_events
federation API endpoint should now work correctly for rooms withjoined
andinvited
visibility settings, returning redacted events for events that other servers are not allowed to see- The
/event
client API endpoint now applies history visibility correctly- Read markers should now be updated much more reliably
- A rare bug in the sync API which could cause some
join
memberships to be incorrectly overwritten by other memberships when working out which rooms to populate has been fixed- The federation API now correctly updates the joined hosts table during a state rewrite
As always, please feel free to join us in #dendrite:matrix.org for more related discussion.
πConduit (website)
Conduit is a simple, fast and reliable chat server powered by Matrix
Timo β‘οΈ announces
Hey everyone, it's been a long time since my last TWIM post. I just want to tell you that the refactor branch was merged to next and a few useful fixes have already been merged:
- Fixed: Random rooms become historical
- Fixed: Profiles not loading when scrolling through history
- Fixed: Leaving rooms doesn't seem to do anything
- Fixed: E2EE finally works reliably
You can expect a new Conduit release very soon, if you have any last wishes for small features or bug fixes, please tell me now :)
I currently work on Conduit in my free time, you can support me on https://liberapay.com/timokoesters PS: I'm also looking for Conduit grants and jobs for when I finish university next year, contact me if you have ideas
πHomeserver Deployment π₯οΈ
πHelm Chart (website)
Matrix Kubernetes applications packaged into helm charts
Ananace reports
Haven't managed to report on these for a bit, but my Helm Charts have been keeping up-to-date nonetheless. Currently sitting on element-web 1.11.10 and matrix-synapse 1.68.0
πDept of Bridges π
πPostmoogle (website)
An Email to Matrix bridge. 1 room = 1 mailbox.
Aine announces
There is so much spam on the internet....
But no, that's not a new article on Medium with whining about modern society and technologies, it's Postmoogle v0.9.7!
It already had abilities to send and receive emails, had huge amount of customization options and permission management.
Now we added the anti-spam options, both "standard spamlist" things to reject emails by email address, domain name or even localpart and "advanced checks" to reject emails from senders without MX records or when the sender email does not exist for sure.
Yes, at etke.cc we don't like spam.
So, check out the source code and say hi in #postmoogle:etke.cc
πDept of Clients π±
πSyphon (website)
Chat with your privacy and freedom intact
0x1a8510f2 says
Another year, another Syphon release (I jest, but it has been a while)!
The long awaited
0.2.14
release has been cut last week. Unfortunately, due to CI issues, not all official builds are available yet. As most of the core team has been rather preoccupied with life lately, some delay is expected, but they are on the way!In the meantime, the GitHub release page contains the successful builds, including Android and MacOS x86, and the full changelog for this release. Some highlights from the latter include:
- Spec-compliant private read receipts (we've had private read receipts for a while, but now they're spec-compliant)!
- Device name editing, including a random name generator
- Additional text made copy-able in the UI (such as the session ID)
- As well as a huge amount of refactoring, bugfixes and general improvements
As always, massive thanks to all contributors, especially
@EdGeraghty
and@Florian-Sabonchi
who single-handedly accounted for more than 3/4 of the changelog!Finally, as a reminder, we now have a Syphon space. Feel free to join us for support, development discussion or just a friendly chat, at #syphon-space:matrix.org.
πNheko (website)
Desktop client for Matrix using Qt and C++17.
Nico says
r._.hit has been working on voip call v1 support as part of the Google Summer of Code. Calls v1 are an improvement over the existing v0 call spec, which should make the calling experience much nicer (however they are still an MSC). As part of his work Nheko now mostly supports the v1 signalling. There are some improvements still missing like allowing multiple streams for screenshare instead of compositing them locally and a few more things, but the bulk of the work is done now. Thank you very much for working on this.
In other news Nheko now evaluates pushrules locally, which means you can now get notifications on servers that don't support the /notifications endpoint properly and you can properly get notifications for encrypted messages. Since this is quite a large change, feedback is welcome. We also broke our dbus API to make it faster. When listing rooms they now don't include the avatar, but just an mxc uri and you need to manually query the avatar over dbus if you need it. Last but not least, Nheko now supports Unicode 15 in the emoji picker including πͺΏ!
πNeochat (website)
A client for matrix, the decentralized communication protocol
Tobias Fella says
This week, we have finally fixed one of my biggest annoyances with NeoChat so far: Mentioning a user will now be highlighted in the input field and more reliable, meaning you will no longer have to guess if writing a user's name will actually create a mention. While implementing this, I also added the ability to send room links in a similar way to user mentions.
- When switching between rooms, NeoChat will also remember the text you have typed so far and will restore it when you switch back to that room.
- When sending a video, the resolution will now be sent correctly
- Viewing of custom emojis has been fixed after it broke while implementing link previews
- The replied-to message is now shown in a nicer way for messages
The image viewer has also been improved significantly: It will now only cover NeoChat's window and includes quick actions to resize, rotate and save the image
πElement Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
Danielle says
- Weβre continuing to update the new device manager, introducing and perfecting features like:
- Sign out of multiple sessions
- And disabling notifications for other sessionsβ¦
- Updates and improvements to threads are well underway and this week: weβve been solely focused on performance and loading. You should start to feel the impact of this over the next few weeks so be sure to keep threads turned on, and your develop.element.io updated.
- Element Video rooms are also currently experimental but receiving regular updates, specifically integrating Element call.
- Thereβs a labs setting to start using Element Call from rooms and video rooms for group chats and (I might be biassed) but itβs just wonderful. Check it out!
πElement iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
Θtefan announces
- Itβs been a busy week for the Element iOS team - this week weβve been focussing on improving our accessibility on the navigation elements we introduced a few weeks ago, this includes the voiceover text on the filters.
- Weβre also making very good progress on the new login with QR code and device manager features and expecting them to be ready soon
- Other bug fixes include:
- Fixing a glitch in the header in the All Chats and Spaces home views.
- Fixing the freeze and crash that was occurring when searching in a room
πElement Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
benoit reports
- This week is a big week for the Android app! After being in Labs for a few weeks the new layout is finally here. We think the new layout simplifies the experience for users:
- The filters and recents help you get where youβre going faster (but itβs still configurable to your own workflow)
- The new spaces menu and access point is within reach, meaning you can separate your chats however you choose, suiting your daily work & play patterns!
- The team have also started back up on threads in full force this week so expect some improvements to land soon
- Itβs not only the fun stuff thatβs been worked on, weβre also squashing bugs. My favorite:
- Animated images now autoplay in the timeline
- If the emoji keyboard is disabled, itβs disabled everywhere (previously it would still show when sending a reply)
πDept of SDKs and Frameworks π§°
πlibolm
uhoreg reports
libolm 3.2.13 was released this week. This is mainly a maintenance release to fix compatibility with node 18. There was also: a minor change to the Python packaging, documentation updates, and a slight improvement to the pkgconfig file. Most people will not need to update.
πsimplematrixbotlib (website)
simplematrixbotlib is an easy to use bot library for the Matrix ecosystem written in Python and based on matrix-nio.
imbev reports
There is not a new release of simplematrixbotlib this week, however I would like to share some progress on the upcoming simplematrixbotlib version 3.
πNew matching system
Instead of the current implementation that uses the MessageMatch class with various methods such as
MessageMatch.command()
,MessageMatch.prefix
, etc., version 3 will be using a custom matching syntax. The following is a preview of the currently planned matching api for version 3:message = "!echo something Matrix" prefix = "!" rule = f"{prefix}echo <message *>" matched = botlib.match(message, rule) if matched: print(matched['message']) # "something matrix"
In this snippet, rules such as f"{prefix}echo <message *>" would be treated as required literals, with the usage of <> to denote arguments. The optional usage of python's f-strings feature also makes inclusion of variables such as prefix more intuitive and flexible. For more information on the simplematrixbotlib version 3 matching api, please checkout the relevant issue at https://codeberg.org/imbev/simplematrixbotlib/issues/4 or room at https://matrix.to/#/#simplematrixbotlib:matrix.org .
π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 reports
After the release of 0.6 a few weeks back, the team has removed a lot of legacy code that will be dropped by the next release. Most notably the previous experimental timeline API has been removed and was replaced this week with the new stateful-messages timeliness API, which will soon be available via FFI, too. Meanwhile the sliding sync extensions are still on-going as a recent rest showed that the internal test-client jack-in fails to pull events via the API - investigations are under way.
While iOS libdispatch integration work took place behind the scenes, the android team has shared their first steps for full sdk based element-x.
πDept of Ops π
πmatrix-docker-ansible-deploy (website)
Matrix server setup using Ansible and Docker
Slavi reports
matrix-docker-ansible-deploy now includes support for easily customizing the upstream Synapse container image, by adding custom build steps to its
Dockerfile
.Until now, people who wished to make additions to the Synapse container image had to make a fork and build it from scratch. This new feature makes things much easier. To learn more, see this changelog entry
This Synapse-customization feature was developed in an effort to assist another feature which we've landed today: synapse-s3-storage-provider support.
Users can now easily store their media repository files on Amazon S3 (or any other S3-compatible object store) using
synapse-s3-storage-provider
. To get started, see our Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider documentation.
πDept of Interesting Projects π°οΈ
πmxid-color-gen
0x1a8510f2 says
Have you ever wanted to have a specific color MXID in Element? I certainly have, and so I'm pleased to announce
mxid-color-gen
, a small utility which can help you predict what color your MXID will be assigned before creating your account. Gone are the days of creating accounts until you get a color you like (or is that just me?).The (whole 50 lines of) code is available here: https://github.com/0x1a8510f2/mxid-color-gen.
π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.
Rank | Hostname | Median MS |
---|---|---|
1 | maunium.net | 247 |
2 | conduit.rs | 344 |
3 | maescool.be | 495.5 |
4 | alemann.dev | 562.5 |
5 | nognu.de | 568.5 |
6 | matrix.org | 600 |
7 | matrix.netho.tk | 821 |
8 | neko.dev | 850 |
9 | asra.gr | 876 |
10 | mindlesstux.com | 1248 |
π#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.
Rank | Hostname | Median MS |
---|---|---|
1 | conduit.rs | 142 |
2 | joeth.uk | 221 |
3 | kernel-error.com | 251 |
4 | dendrite.s3cr3t.me | 354.5 |
5 | rustybever.be | 358 |
6 | willian.wang | 364 |
7 | dendrite.hazmat.jacksonchen666.com | 456 |
8 | zemos.net | 46686 |
πThat's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!
The Foundation needs you
The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.
It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.
Support us