Dept of Status of Matrix 🌡️
Back in July I started a discussion on wikidata for adding a matrix space property, after much discussion in the wikidata community (lead mostly by tgr) we instead landed on a Matrix room property. This now enables slightly more accurate semantics when describing matrix rooms belonging to organizations, projects, and people on wikidata.
Wikidata is a knowledge base available under a free license and using standard machine-parsable data to add information to what is known as the "semantic web", this allows querying for information like for example: Organizations with matrix rooms
As the rest of wikimedia's projects it's open for contributions!
Dept of Spec 📜
Andrew Morgan (anoa) announces
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.
- [WIP] MSC3956: Extensible Events - Encrypted Events
- MSC3955: Extensible Events - Automated event mixin (notices)
- MSC3954: Extensible Events - Text Emotes
- MSC3953: Server capability DAG
- MSC3952: Intentional Mentions
MSCs in Final Comment Period:
- No MSCs are in FCP.
- MSC3852: Expose user agent information on
- MSC3517: "Mention" Pushrule
- Deprecated in favour of MSC3952: Intentional Mentions.
As you can tell from the above MSC list, Extensible Events continues to charge forwards, with Travis working busily away at replicating all of the existing event functionality (plus new functionality - image albums anyone?) in a world containing Extensible Events. As always, take a look at the core MSC (MSC1767) for a background on what Extensible Events is, and why it's so exciting.
This week has also seen room version 10 become the default recommended room version in the spec! As a reminder, v10 brings the ability to have a room that's both knockable and restricted at once, as well as more strictly enforces the types of power level values.
Otherwise we've seen lots of movement in other areas of the spec. Expect to see some work done around push rules (which have historically been rather complicated and fiddly...) and notifications in the days to come.
Random MSC of the Week
The random MSC of the week is... MSC3779: "Owned" State Events!
I remember this MSC fondly. It was originally born out of MSC3489's need to allow any user in the room to send
m.beacon_infostate events. This can easily be achieved today by lowering the required power level of
m.beacon_infoto the default user level. However, you then run into the issue of any user being able to edit any other user's
Thus this MSC attempts to modify the state events permission model so that users can "own" certain state events that they send. We already somewhat have this functionality - if you put your Matrix ID as the state ID for any state event, only you or users with a power level higher than you can edit it.
Sadly this little trick (which we use for
m.room.memberevents) doesn't work in the case of live location sharing, as the feature demands the ability to share location from multiple devices at once. Hence, trying to send two
m.beacon_infoevents with the same state key would overwrite each other.
This MSC attempts to expand the functionality by modifying the definition so that a user "owns" a state event if the state key starts with their Matrix ID. Problem solved... for the most part!
Do check out the MSC if you have some use cases in mind that would benefit from something like this.
Dept of Servers 🏢
Synapse is a Matrix homeserver implementation developed by the matrix.org core team
A new year, more improvements to Synapse! We are back at work and have released Synapse v1.75.0rc2, with a host of features, bugfixes and internal changes to make Synapse faster and more stable. Some notable changes are:
- Experimental support for MSC3391 (removing account data)
- Support RFC7636 Proof Key for Code Exchange for OAuth single sign-on
- Fixed a bug introduced in Synapse 1.70.0 which could cause spurious UNIQUE constraint failed errors in the rotate_notifs background job
- Removed the unspecced device field from /pushrules responses
- Declared support for Python 3.11
And much more! If you'd like to learn more, head on over to https://github.com/matrix-org/synapse/releases and take a look.
Dept of Bridges 🌉
A multi purpose multi platform bridge, formerly known as matrix-github
Evenings greetings! It's been a while since we've done a Hookshot release, so this one is pretty large. We've got two major features this time around, Encrypted Room Support and Service Bots. The former now allows you to invite the hookshot bot to encrypted rooms and issue commands to it as normal, it should work entirely transparently. It currently requires a homeserver with MSC3202 support, such as Synapse. One final note is that it's extremely experimental and beta-y, so please do not run this on your production instances or it might format your cats. However, plaese do report all your findings to us. We love fan mail 📧
Service bots is another great feature that now allows you to split hookshot into several different bots, so you can have a GitHub bot, a GitLab bot, a JIRA bot and so on. It's extremely flexible, so please have a go and let us know what you think.
You can find this release at https://github.com/matrix-org/matrix-hookshot/releases/tag/2.6.0, or by doing
docker pull halfshot/matrix-hookshot:2.6.0.
Finally, the highlights are:
Add support for end-to-bridge encryption via MSC3202. (#299)
Add support for additional bot users called "service bots" which handle a particular connection type, so that different services can be used through different bot users. (#573)
Add new GitHubRepo connection config setting
workflowRun.workflowsto filter run reports by workflow name. (#588)
Parent projects are now taken into account when calculating a user's access level to a GitLab project. (#539)
Ensure bridge treats published and drafted GitHub releases as different events. (#582)
Remove support for Pantalaimon-based encryption. (#299)
Increase maximum size of incoming webhook payload from
Dept of Clients 📱
Desktop client for Matrix using Qt and C++17.
You know the custom of having a cheesy goal for the next year? Well, I had Raclette for new years, so my only goal was to have at least one Nheko release! And for that reason and to get all the planned things out of the way for this year, it is my pleasure to announce Nheko 0.11.0!
It is packed with contributions and translations from way too many people for me to count on one hand! You can find it eventually in all the usual places, for example our releases list: https://github.com/Nheko-Reborn/nheko/releases/tag/v0.11.0
If you hate clicking links, here is a small spoiler of some of the ingredients (apart from the cheese):
- Search in your timeline 🔍
- Works in encrypted rooms.
- Search is entirely local.
- It might be a bit slow on some systems, since it needs to paginate the room to search instead of relying on the server.
- Pushrule support!
- Notifications should now be faster and not rely on the server.
- Notifications should work properly in encrypted rooms.
- MSC3664 is supported for pushrules for reply (needs server support).
- Mentions get highlighted in the timeline.
- Decrypting notifications can be disabled for improved privacy.
- Threads 🧵
- Threads are a simple way to structure large rooms.
- Start a new thread from any event.
- Focus on a specific thread by clicking on the colored thread button next to any event from this thread.
- Replies automatically land inside the thread.
- Remember where you left off using the new unread indicator! ---
- Navigate to space when selected in quick switcher or via link.
- (Re-)Add an AppImage build. (Zhymabek Roman)
- Render and send confetti! 🎉 (LorenDB)
- Focus text field on most key presses.
- Show link to next room for tombstone events.
- macOS: Only play notification sound when pushrule says so.
- macOS: Builds for Apple Silicon.
- macOS: Allow quick replies from notifications.
- Completer for /commands.
- Allow opening room settings from room list. (LorenDB)
- Allow setting the status message via the dbus API. (LorenDB)
- Check out this for one possible usecase: https://schlomp.space/tastytea/dotfiles/src/commit/485aa7103c4f414ce0731804acf34a65a772fd28/.local/bin/mpd2nheko (Setting your currently playing song as your status)
- Allow swapping Enter and Shift-Enter. (LordMZTE)
- Preliminary support for VoIP v1. (Rohit)
- Allow applying permission changes in spaces recursively.
- Allow modifying permissions of users not in the room.
- Prompt before deleting the database when the error could be resolved by the user.
- Improve logging in particular for sync or registration errors.
- Speedup quick switcher.
- Prune image cache in the background.
- Store all secrets encrypted in the database (apart from the pickle).
- Speedup fetching olm sessions from the database.
- Increase database resiliency at the cost of a lot of performance.
- Rename spaces to communities.
- Handle some rate limiting better in some cases.
- More fine grained control over logging. (Forest)
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- You can try out the upcoming release on staging.element.io! Threads is now on by default, so take it for a spin
- Meanwhile, we’ve made some improvements to the polls dialog, including better scaling
In labs (you can enable labs features in settings on develop.element.io or on Nightly):
- We’ve added more features to the rich text editor, including support for lists
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- Welcome to 2023, a new year, a new you and a new version of Element for iOS! This upcoming release includes many small changes and bug fixes, the highlights of which are:
- You can now create links and code blocks with the Rich Text Editor.
- The final results of a Poll will be shown when it ends so you don’t need to scroll back to find them.
- Both Threads and Voice Broadcasts have been improved and are more reliable.
- Meanwhile ElementX is slowly making its way towards a public appearance:
- We have improved how we handle multiple sliding sync windows and implicitly the room list
- Better room message backpagination
- Improved video playback and timeline media handling
- And it’s all running on the latest version of the RustSDK which brings a slew of bug fixes too
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- Element Android 1.5.18 is now full prod, and 1.5.20 should follow at the beginning of next week. Threads are now enabled by default. We are now working to be able to display all the polls of a room. Also the RichTextEditor is getting more and more features. Do not hesitate to give it a try after enabling it from the labs!
- On ElementX, we are making progress to set up the global architecture of the project.
Dept of SDKs and Frameworks 🧰
Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM
Even though the end of the year is usually a quiet time, big steps forward have been made in the last couple of weeks on many important areas of the rust SDK.
With Sliding Sync being tried out in Element-X a few more bugs and edge-case scenarios have been uncovered, where it doesn’t play well yet. For example resending the correct extension settings on session restart including to-device-tokens, invalidation indexes, or incorrectly skipping to-device processing and various other smaller fixes. The latter PR also contains a first set of integration-tests running testing the SDK against synapse and the sliding-sync-proxy. We intend to expand on that and include it in the CI as soon as github actions are unblocked for it.
Similar has been done on the Timeline feature, with a better more flexible timeline pagination implementation, a new virtual loading indicator item, improved logging and date dividers and read markers. All good stuff, making it easier to implement a useful chat UI on top of it.
On async UniFFI we see the same picture: with Swift, Kotlin and Python now executing rust futures as well as handling their error results properly. And time couldn’t be any better as we can hear the creaking of the blocking-runtime we currently have under the hood in Element-X and it is starting to show the limits of what we can implement in a useful manner. We are confident we can start experimenting with it in live apps fairly soon.
️👉 Wanna hack on matrix rust? Go check out our
help wantedtagged issues and join our matrix channel at Matrix Rust SDK. join our matrix channel at Matrix Rust SDK.
A Qt5 library to write cross-platform clients for Matrix
It didn't take long for the first bugfix release in libQuotient 0.7.x to come out - meet libQuotient 0.7.1! Now the library actually compiles with E2EE on Windows, correctly exposes QtKeychain dependency to the clients, and can handle SSO even in the presence of proxies. Read all of it (delightfully short, after a long read of 0.7.0 release notes) at the usual place.
Dept of Ops 🛠
Matrix server setup using Ansible and Docker
Thanks to Cody Neiman's efforts, matrix-docker-ansible-deploy now supports bridging to Slack via the mautrix-slack bridge. See our Setting up Mautrix Slack bridging documentation page for getting started.
The playbook still retains Slack bridging via matrix-appservice-slack and mx-puppet-slack. Playbook users are free to use the bridge that serves them better, or even all three of them (for different users and use-cases).
Dept of Events and Talks 🗣️
Matrix Salon Podcast (German)
Meet Kim (aka HarHarLinks) who learned about Matrix in 2017 while studying. He's now managing Matrix projects professionally and attends conferences about the protocol and other open source software.
Learn about him and how you could land a Matrix job. See you at #FOSDEM2023!
Episode link: https://anchor.fm/matrix-podcast0/episodes/Kim---Vor-der-FOSDEM-2023-e1teh6l Mastodon post: https://mastodontech.de/@jaller94/109682609755003775
Dept of Interesting Projects 🛰️
matrix-social is a social media client powered by Matrix.
- Posts (messages) can be sent
- Redaction of upvotes/downvotes is now possible
- Several bugs are fixed
- We're currently working on per-room views and sending replies
Preview matrix-social at https://imbev.codeberg.page/matrix-social/
All are welcome to join us at #matrix-social:matrix.org!
Dept of Ping
Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
That's all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!