Matrix Live 🎙
Dept of Spec 📜
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://spec.matrix.org/unstable/proposals.
- MSC3644: Extensible Events: Edits and replies
- [WIP] MSC3639: Matrix for the social media use case
- MSC3635: Early Media for VoIP
MSCs with proposed Final Comment Period:
MSCs in Final Comment Period:
- MSC3567: Allow requesting events from the start/end of the room history (merge)
- MSC2675: Serverside aggregations of message relationships (merge) 🎉
- MSC2589: Improve replies
- Closed by the author in favour of MSC2781: Remove the reply fallbacks from the specification.
Hot on the heels (relatively speaking) of v1.1 of the Spec being released in November, v1.2 is now on the horizon! As a reminder, we're working towards quarterly releases of the spec going forwards - no hard dates yet though.
While this is certainly an improvement in speed, when it comes to writing software and updating implementations: quarterly spec updates may actually seem too fast. This is OK; implementations of the spec are not expected to update as soon as a new spec release is published. Rather, it is more realistic to expect that the ecosystem updates gradually over the course of the next few months/year after the release.
Look forward to more concrete dates soon!
Random MSC of the Week
The random MSC of the week is... MSC2702: Specifying semantics for Content-Disposition on media!
This looks like a small, but useful improvement to the spec that never really received much love. Feel free to give it some!
Dept of Servers 🏢
Synapse is the reference homeserver for Matrix
Happy Friday everyone! Today the Synapse team has released Synapse 1.50.0rc2. It fixes a particularly nasty federation-breaking regression that crept in during 1.50.0rc1. If you're currently running 1.50.0rc1, we implore you to update to 1.50.0rc2 as soon as possible!
In other news, a reminder that as of Synapse 1.50.0rc1, we have ended support for Python 3.6 and PostgreSQL 9.6 as per our dependency deprecation policy, as upstream has marked them as end-of-life.
We'll let the community test 1.50.0rc2 over the weekend to ensure that no other regressions have emerged (please test if you can)! If not, expect Synapse 1.50 to land sometime early next week.
Conduit is a simple, fast and reliable chat server powered by Matrix
Timo ⚡️ reports
It has been a long time since my last TWIM post, so here's a summary of all exciting news:
- We now support RocksDB as a backend. Migrating to RocksDB improved both my memory and IO usage a lot.
- You can select the database backend at runtime. No need to recompile a special version anymore.
- Lazy loading works. This means initial syncs are significantly faster (1-2 minutes instead of an hour!)
- Voice calls are now supported (requires configuring a TURN server)
- The report feature is now implemented and sends a report into the admin room
- Much faster state resolution
- Batch inserts for events
- Better appservice docs
- Lots of bug fixes
All of this is currently available on the
nextbranch. We are preparing to make a v0.3.0 release soon!
Join #conduit:fachschaften.org to help us test it.
Thanks to everyone who supports me on Liberapay or Bitcoin!
Dept of Bridges 🌉
Heisenbridge is a bouncer-style Matrix IRC bridge.
Release v1.10.0 🥳
- RELAYMSG sending support 🚀
- Allow forwarding all IRC noise to network room 🤫
- Support ZNC self-message caps ✅
- Support CHGHOST caps (prevents leave+join on host change) ✅
- Fix owner auto-registration (regression) 🐛
- Upgrade to Mautrix 0.14 ⬆️
Sending RELAYMSGs have been requested for a while so now we do support that if the cap is added to request list. This makes plumbs on networks that support it work nicer. Receiving RELAYMSGs has not been implemented yet so they show up as external like before.
If you prefer keeping your IRC rooms clean without any IRC noise (mode changes etc.) you can now use a new FORWARD command in the network room to make all such events happen in the network room instead. This affects in-room commands as well.
ZNC users can now enjoy messages coming from your own clone in IRC rooms (including PMs!) if you wish so by keeping the znc.in/self-message cap enabled. This isn't extremely well tested yet but feedback welcome.
Not a breaking change but the caps support will cause connections to networks that ignore CAP requests take a few seconds longer unless you remove all the default caps for said network and it will never try requesting them again.
Mautrix 0.14 upgrade bumps the minimum version as well so packages beware.
Dept of Clients 📱
Desktop client for Matrix using Qt and C++17.
We rewrote the whole settings page (as a stepping stone to 100% QML). Please test it and complain about everything I broke! We also tried to organize it a bit better so that similar settings are grouped together and tried to use the right controls for the right things. Best case you didn't notice anything. ;-)
And we also now show which profile a notification is for on KDE. I don't think other DEs have such a feature, so those will just show the generic Nheko as always.
Hydrogen is a lightweight matrix client with legacy and mobile browser support
We're about to release 0.2.23 after somewhat of a release hiatus. We've been working on two fronts:
- Get the SDK out! Hydrogen was always meant to be easy to embedded, reuse in parts, and make customized versions of. But until now, actually doing that was quite challenging. Now that the SDK is out, you can use the
hydrogen-view-sdkpackage in your projects and use parts of Hydrogen in your application. It's still early days, and we're still working out what symbols should be exported (finding a balance between APIs we want to support and utility), etc. Expect updates in the coming weeks. We're also not yet promising API stability for now, some APIs will very likely still change. Once we hit 1.0, we won't change things from underneath you anymore without increasing the major version.
- Rich reply previews: as part of providing minimal support for threads (representing them as replies), we're switching from using the embedded reply fallback and actually looking up the replied-to message. One benefit is that reply previews will now updated when they are redacted (and edited, once we support that :).
- Also fix some minor other things, like loading images when they are only partially visible, and a very basic location tile.
Everything related to Element but not strictly bound to a client
- Issue with thread panel rendering timeline has been fixed
- Reviewing plans for backward compatibility with clients that don’t support threaded messages
- iOS and Android starting on the next phase of development, look out for poll editing and other exciting changes! You can enable polls in the Settings, under Labs.
- 32 issues found during community testing! Join #element-community-testing:matrix.org to test the latest Element apps with us
- You can now opt in to sending anonymous analytics data in the user settings on all platforms. Please enable it in the “Security & Privacy” menu, under “Analytics” to help us understand better how Element apps are used.
- Mobile app users will see an opt-in screen on first startup on Android in 1.3.14 and iOS in 1.6.12
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- Maximised widgets merged into the release candidate and on track for the next release (see the Beyond Chat section for more info on this feature)
- Fix code blocks being wrongly wrapped causing the line numbers to misalign, this was a regression in 1.9.8
- Fixed ability to edit horizontal rules in markdown
- Fixed some edge cases around Spaces not updating properly causing rooms to show up in the wrong Space
- Add ability to cancel an outbound message during its encryption phase
- Fix wrongly sending typing indicator when restoring a draft when changing room
removeto be more inclusive
- In labs (you can enable labs in Settings on develop.element.io or on Nightly)
- Polishing bubbles layout
- Upgrade to Electron 16 for Element Nightly - we are expecting this to help resolve some of the issues caused by Electron. Intending to release to production in 1.9.10 (two weeks away)
J. Ryan Stinnett announces
The maximised widgets feature in Element Web that Timo K. has been working on is now available for everyone on develop, and it's on track for the next web release. 🚀 It's a great match for widget-based collaborative editors, dashboards, games, and more. The widget becomes the focus of the room. You can optionally show chat from the room in a side panel, allowing easy discussion of the document / dashboard / game.
To try it out, add a widget to a room in the usual way, then look for the new "maximise" button in the room info panel's widget section. Please let us know in #beyond-chat:matrix.org or in issues if you have any feedback. 😄
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- First time user experiences (FTUE) changes are starting to land, including changes to the login screen which will be available in next week’s release.
removeto be more inclusive
- Resolved issue with stuck event in the timeline, which will be released with 1.3.16
All you chats in one app.
Brad Murray announces
Beeper is a universal chat app built on top of Matrix. We've created 12+ open source Matrix bridges and integrated them into an easy to use all-in-one service which does not require setting up your own homeserver. You can learn more at beeper.com.
We are hiring many full-time remote roles including:
- Bridge developers
- iOS engineers
- Product designers
Learn more here and apply through that site, or message @eric:beeper.com
- We recently released a Beeper Desktop update with a new room list and a ton of UI improvements. Check out the video below!
- Made it easier to triage your inbox by moving unread dots to left
- Made the list of connected bridges more compact
- New link previews
- Loads of bug fixes including improvements to scrolling
We introduced a new version of our iMessage bridge designed for Mac OS computers with SIP disabled. https://docs.mau.fi/bridges/go/imessage/mac-nosip/setup.html Now includes support for:
- SMS via Continuity
- Threaded replies
- Synced read states to other iDevices and
Most importantly, we launched a cloud Mac service that allows you to use iMessage with Beeper if you do not have access to an always-on Mac computer. Included with your Beeper subscription!
Voice messages are bridged in native format in both directions for all Beeper bridges
Signal bridge now supports disappearing messages
All Instagram message types are now bridged
Added support for Telegram message reactions
WhatsApp bridge now backfills 3 months worth of chats
- Coming soon: A recent addition to our Android team has added encrypted search by massaging
seshatinto the app. Expect an upstream PR for this into Element Android as well!
Dept of SDKs and Frameworks 🧰
Multiplatform Kotlin SDK for Matrix
Trixnity version 1.0.0 is out! I decided to make it 1.0.0 not because it is out of beta, but because it has most features you need to build a usable client. That means: cross signing has landed into Trixnity! The next big features will be room key backup and push notification.
Here is the changelog:
- fully support cross signing
- load members of rooms in an async way (you don't need to catch errors anymore)
- reactive displayname and avatar url of the logged-in user
- reactive avatar url for rooms
- reactive is-direct-room state for rooms
- better Android support for thumbnails
- make part of device keys API public
- merge SecureStore into Store (encrypt your database if you want to keep secrets secure)
- move trixnity-client-api model-classes into separate module to use them e.g. for a matrix server implementation (thanks to @NicolasJouanin)
- fixed long standing bug of wrong room name calculation
- account data events are handled as if they have a key (like state events) to bypass inconsistency in the spec (maybe this will lead into a MSC)
Ruby SDK for the Matrix communication protocol
Just cut a new release of the Ruby Matrix SDK, with 2.5.0 there's some preliminary support for Matrix 1.1 and the
client/v3API, the information for room knocking is exposed properly, some threading issues have had workarounds applied, and a bunch of fixes have been applied.
Additional thanks go out to the nice people submitting PRs on GitHub and the members of the #ruby-matrix-sdk:kittenface.studio room.
Currently running my own ping bot with it, I'm doing the GitHub (and hopefully also GitLab at some point) releasetracker bot, I've got my definitely not suitable for production MatrixFS, there's a notification module for TheForeman which we use at the university. And I've got some MSC hacks as well, like the MSC2108 testbed.
Use Matrix as a backend for local-first applications with the Matrix-CRDT Yjs provider.
I just open sourced a library called Matrix-CRDT: https://github.com/yousefED/matrix-crdt - feedback very welcome! It allows you to use Matrix as a backend for decentralized, local-first collaborative apps. Above you see a collaborative rich text editor (like Google Docs) powered by Matrix!
You can try the Rich text editor here: https://bup9l.csb.app (see also the links in the repo, e.g. there is also a collaborative todo-list example)
J. Ryan Stinnett adds
If you have a distributed data structure and an algorithm that ensures all participants end up with the same result when their actions are combined, then that's effectively a CRDT as well. For Matrix, there a few research papers like https://arxiv.org/abs/2011.06488 which examine the CRDT-like properties.
Dept of Bots 🤖
The worst (according to its author!) but simplest webhook bot for GitHub and Matrix.
Jae Lo Presti announces
First stable release of the gh-bot which is a simple webhook to Matrix bot made in Python. As of now, the bot supports webhooks from Github, Gitlab and Gitea (although support for this one is very light). Some other projects might do that way better than this bot but this is a learning project, to learn step by step how client interact with servers. The next step would be to add a CRT.sh integration to get notified when a certificate is issued for a certain range of domains (which is something we want since we saw an IRC bot do the same).
Dept of Interesting Projects 🛰️
A Devianart Fork based on Matrix
MTRNord (they/them) says
Matrix-Art is a new social network prototype on Matrix.
It is a direct Devianart style clone. It currently has a focus on only images but is going to get extended to other media types eventually. I am doing this as a toy project, so it may sometimes have slow progress. The goal is covering the main functions Devianart provides (Posting, Sharing, Profiles, Following, Collections, Comments) as well as integrations to other social networks on matrix using MSC3639.
A lot of things are currently still missing, but I am trying to get uploading working next :)
An instance is hosted at https://art.midnightthoughts.space/ and the code is at https://github.com/MTRNord/matrix-art
Currently, the interface is limited to viewing basic data from a matrix room. In the future, there are plans to have an open registration as well as login with any account to use it. :)
Note however that I suggest against using your personal account just yet, even though the login works, as it may have unexpected room joins at this time. This is known and expected, but not production ready.
Also, at this time, there are no plans of e2ee support. This may get added after the main features are finished.
For questions, feel free to join #matrix-art:nordgedanken.dev :)
Dept of Guides 🧭
I just wrote an article about my experience using Matrix, and the question... is it worth posting in the news? The article is written in Russian and published on Habr... and since it's pretty big I'm not sure about translating it to English 😅
Here is the link: https://habr.com/ru/post/599777/ - it also mentions TWIM.
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!