Matrix Live 🎙
Dept of Matrix.org?
Kudos to Aaron for adding a GitHub action to matrix.org's repository to check for typos, and taking the time to fix them all! Worry not fellow proofreaders, our post-publication TWIM proofreading tradition is not extinct: some typos are not caught by the CI, such as misspelling of proper nouns (e.g. Devianart) or articles (e.g. "an proofreader" won't make the CI upset)
Alexandre Franke says
May be worth mentioning that Aaron added the same thing to
matrix-docso spec changes and MSCs get the same treatment.
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://matrix.org/docs/spec/proposals.
In terms of MSC updates this past week:
- MSC3676: Transitioning away from reply fallbacks
- MSC3673: Encrypted ephemeral data units
- MSC3672: Sharing ephemeral streams of location data
- MSC3667: Enforce integer power levels
- MSC3666: Bundled aggregations for server side search
- No MSCs were merged this week.
MSCs currently in Final Comment Period:
The release of Matrix v1.2 is right around the corner, and is expected to go out on February 2nd. This is in line with our quarterly release cycle for the spec going forwards.
Please reach out to us in #sct-office:matrix.org if there are any last-minute MSCs that haven't started/finished Final Comment Period that you believe should be included!
Otherwise there was a lot of discussion surrounding MSC2781: Remove the reply fallbacks from the specification. I'll let the other spec updates in TWIM speak to that though :)
Random MSC of the Week
The random MSC of the week is... MSC2291: Configuration to Control Crawling!
A concept similar to robots.txt for the web, but for Matrix! Currently the way to inform room-crawling bots in Matrix today is by banning/kicking them from the room. However, this doesn't allow you to blanket prevent bots from joining - nor does it only inform bots that they should access some of the room's data. It's a binary switch.
Consider if you wanted your room to be crawled, but the room topic to not be indexed. This MSC could help with that! Give it a read/review if you're interested.
Have you ever pinged someone by accident, because you replied to a message with their name in it or maybe even a whole room mention? Or are you avoiding replies for that reason? Did the quote of a messages suddenly vanish when someone edited their message in a client? Or are you just in general unhappy with replies only showing what type of message was replied to, instead of showing the actual image being replied to (on mobile for example)? Were you annoyed, that you could only reply with a text message, but not an emote message, an image, a sticker or even a video?
I spent a bunch of time trying to remove the blocker for that in the Matrix specification, you can find the proposal here: https://github.com/matrix-org/matrix-doc/pull/2781
As it turns out, it is not quite as simple, because notifications for replies to your messages rely on a bunch of implicit interactions, which is why I also wrote another MSC to fix that: https://github.com/matrix-org/matrix-doc/pull/3664
I'm a bit unhappy with replies across the matrix ecosystem at the moment and I hope this is a small step towards improving things. It's certainly not as exciting as spaces, voip, threads or stickers, but it is something which affects me every day and I think those small papercuts need some attention too.
I hope some of you share my love for the less exciting stuff!
To add onto Nico's efforts, I think that mentions today are based on too many "false-positives" (ping on displayname or username mention), and i kinda wish for the "just mention them" UX of discord, telegram, whatsapp, and so many other messengers.
So I've also made a proposal that tries to bring some explicitness in that, a new push rule that'll fire on "mention"; https://github.com/matrix-org/matrix-doc/pull/3517
It'll look for any
@-MXID mention in the plaintext, or look for an
<a>-mention "pill" in the HTML. It is a hack, but it is the most correct way of determining if you've been pinged in matrix, at the moment.
In terms of reply fallbacks - the Spec Core Team gave an overwhelming thumbs up to removing reply fallbacks via MSC2781... but given practically this causes a cascade of other work (defining and implementing push_rules for replies, and defining and implementing push_rules for threads (MSC TBD)) and so as a temporary transitional measure we've instead made reply fallbacks best effort (MSC3676). This means that clients can now reply using non-textual events, and we can use replies as a fallback for threads for non-thread-capable-clients/ASes once MSC3440 lands. To be clear, the intention is still to incorporate all of Nico's excellent contributions on MSC2781 and MSC3664 however.
Dept of Servers 🏢
Synapse is the reference homeserver for Matrix
Hello TWIM! Last week we released Synapse 1.51. This is a great release which includes lots of performance work around sending aggregations down /sync. It also makes Spaces much more reliable: we tracked down a bug with caching which could cause some sub-spaces to randomly appear empty when queried over federation. We also removed the 50 result limit when listing the contents of a Space.
We're also starting to see some promising results experimenting with ways to make room joins faster (MSC2775). It's not quite ready to demo, but we should have something to show off before too long. 🤞
Last but not least, FOSDEM is in 8 days! The Synapse team will be giving a couple of talks during the day: Events for the Uninitiated by Shay at 10:10 UTC, and Beyond the Matrix: Extend the capabilities of your Synapse homeserver by Brendan at 15:40 UTC. Come say hi! 🙂
Second generation Matrix homeserver
We know that it has been a while coming but today we have released Dendrite 0.6! This version contains a number of significant changes, including switching away from Kafka to NATS JetStream and refactoring a number of other components. We have been making architectural changes recently to help Dendrite scale better in the future and to fix a number of race conditions that were present before. Federation in particular is much smoother and better behaved in this release, with overall lower CPU and memory usage and less resource spikes.
The full changelog is available on GitHub but the highlights are:
- NATS JetStream support, deprecating Kafka and Naffka
- The roomserver now being responsible for fetching missing events and state instead of the federation API, which fixes some race conditions
- Strict ordering and asynchronous input support in the roomserver input API, which smooths out incoming federation significantly
- Consolidated federation API, including functionality from the now-deprecated federation sender and signing key server components
- Database-backed device list synchronisation, which is now more reliable
- Correct gap checking when fetching missing events and state
- Better behaviour and lower resource usage by the
Spec compliance, as measured by Sytest, currently sits at:
- Client-server APIs: 65%
- Server-server APIs: 94%
This is a highly recommended update so if you are running a Dendrite server, please upgrade! As always, you can join us in #dendrite:matrix.org for Dendrite discussion and announcements.
Homeserver Deployment 📥️
Helm Chart (website)
Matrix Kubernetes applications packaged into helm charts
And this week has seen some updates to my Helm Charts as well, with matrix-synapse passing through 1.50.2 to end up on 1.51.0
Dept of Bridges 🌉
Hey folks, no releases this week but a general update on a little project of ours. I've been working through the problem of making bridges easier to use and supplimenting our command interfaces with pretty buttons and forms. To that effect, we've landed out first PR on adding widget communication support to the matrix-appservice-bridge library \o/.
You can see some of the details here https://github.com/matrix-org/matrix-appservice-bridge/pull/365
but that's not all. I'm doing a talk about this whole subject at FOSDEM which you can tune into! See the deets at https://fosdem.org/2022/schedule/event/matrix_next_gen_interfaces/
Dept of Clients 📱
Desktop client for Matrix using Qt and C++17.
Next to spec work, progress on porting Nheko to 100% qml continues. This week I ported the login and registration pages. I also did some minor cleanups on them and prep work for future improvements (like buttons for each SSO provider or providing email address and registration token inline instead of in a separate popup, if the server requires it). Logging in or registering is often the first thing a user does on a client or maybe even the first thing they do on Matrix! As such I should really spend more effort optimizing that feature, that usually falls off the priority list because I don't use it often!
Once Nheko is 100% Qml we should also see lower memory usage again, here is a screenshot from a Nheko instance with over 100 rooms, that's been running for a few days of active use on Windows:
We also fixed an issue where Nheko could crash the notification service, because it sent images not following the Freedesktop notification specification and tasty spent some time further improving the man page.
Matrix messaging app for GNOME written in Rust.
Julian Sparber reports
Hello folks, it's been a while since we last spoke! We have been focused on the code, but we're long overdue for an update. A lot has happened since November. Fractal-Next is getting closer to feature parity with current Fractal, and even supports new things:
Fractal-Next now allows you to open and save sent files
It also displays images, videos and stickers in the timeline
You can also get a better view of media send to the room thanks to the built-in media viewer
It (finally!) supports reactions (displaying them and sending new ones)
Fractal-Next now supports verification of other users by scanning their QR code, or via emoji
When a user is verified, an icon is displayed next to their username in the list of room members
- The room details show now the members of the room including the power level
Fractal-Next is better integrated with GNOME's secret management service Seahorse
It supports room upgrades
It also supports inviting users to a room
Users can change the category of rooms in the sidebar via drag and drop or by using the context menu
If you want a more lengthy writing about what we've been up to and a note about the NLnet grant, please head out to my blog post "A Long Overdue Update — Fractal Next"
Everything related to Element but not strictly bound to a client
Polls and location sharing
- Polls is coming out of labs with the next release on all three platforms
- Location sharing is coming out in mobile apps with the next release on Monday and will need to be enabled in labs
- Join #element-community-testing:matrix.org to help out with the testing
- Coming up this week:
- FOSDEM conferencing
- Threads with the new APIs
- The new search experience
- All dates and times to be confirmed, follow our channel for updates
- You can help us fix decryption errors by enabling automated error reporting
- On Android, enable “Auto Report Decryption Errors” in the settings
- If you are using Nightly or develop.element.io, you can help us fix decryption errors by enabling “Automatically send debug logs on decryption errors”
Element Web/Desktop (website)
Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!
- Release candidate was late as we have more regressions and release blockers than normal: last minute fixes include a couple of crashes when hanging up a call from the picture-in-picture view and in the appearance tab of settings, plus chasing a crashing bug on Linux.
- Metaspaces has landed in the release candidate: it will give you a new way to group your favourites, DMs and rooms outside of spaces. You can switch these on in the Quick Settings menu at the bottom left from Monday.
- Bubble layout for messages has landed for the upcoming release!
- This release will update to Electron 15 which uses a newer Chromium, so if you host your own Jitsi, please make sure it’s up to date, or you may find calls start breaking.
- Nightly testing went well on Tuesday, with 47 test cases showing up 15 new issues
- In labs (you can enable labs in settings on develop.element.io or on Nightly)
- New thread fallback using the reply chain
- Better stability when home server supports threads API defined in MSC3440
- We are intending to add the new and improved search to the next release candidate on 8th Feb, community testing planned for next week
Element iOS (website)
Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!
- Startup and resume times improved for upcoming release
- Xcode13 & iOS15 compatibility added for developers
- Release v1.3.17 coming out on Monday
- In development:
- Work continues on Spaces and Authentication
Element Android (website)
Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!
- Release v1.3.17 coming out on Monday, includes message bubbles, polls and location sharing
- In development:
- Message bubbles and Thread are progressing well and will probably be merged on develop next week
- Improved automated testing (more screened added to the sanity test, including all the Spaces screens)
Cinny is a Matrix client focused on simplicity, elegance and security
- Room settings
- Add support for room message search in unencrypted rooms
- Support options for Room visibility and Room addresses
- Manage room permissions
- Enable encryption and manage room history visibility
- Custom emoji
- Show user and room emoji in auto-complete cmd and emojiboard
- Show custom emojis in reactions
- Use jumbo emojis for emoji only messages
- Add toggle to use browser's preferred theme
- Show placeholder profile picture when it fails to load
- Show ban, kick, unban options in profile viewer
- Ability to change power level in profile viewer
- Fix loading all twemoji on startup
- Fix wrong read receipt count in encrypted rooms
- Reset scroll when switching Home/DM
- Fix gap under typing indicator in some device
- Fix username overflow in timeline change messages
- Fix message formatting
Find more about Cinny at https://cinny.in/ Join our channel at: https://matrix.to/#/#cinny:matrix.org Github: https://github.com/ajbura/cinny Twitter: https://twitter.com/@cinnyapp
Dept of Non Chat Clients 🎛️
Matrix Highlight (website)
A decentralized and federated way of annotating the web based on Matrix.
Matrix highlight got experimental support for Firefox! It's still a bit crashy, but it shouldn't be much harder to stabilize it, and get the tool working properly there, too. Firefox is my personal browser of choice, and others have requested it, so it's nice that it's on the horizon :)
Also, after the discussion in Matrix Live and with some minor tweaks, I was able to get the extension to play nice with conduit! So that's now a viable alternative if you want to use Matrix Highlight with your own, self-hosted server.
E2E encrypted social networking built on Matrix. Safe, private sharing for your friends, family, and community.
Circles is a project to build a secure, end-to-end encrypted social network using Matrix technology.
This week the primary focus was on updating Circles to work with the latest Matrix iOS SDK. I also successfully built and packaged the first beta release from an Apple M1 Mac.
The next step is to develop and integrate a new, more secure password-based login based on the BS-SPEKE protocol. This will replace Circles' current approach, which is described in MSC3265. Hopefully the new login flow will also be of interest to the broader Matrix community.
Our search continues for an Android developer to help us bring Circles to the world's largest mobile device platform. If you are excited about working with Matrix, Android Studio, and Jetpack Compose, send a resume and cover letter to [email protected].
Dept of SDKs and Frameworks 🧰
Multiplatform Kotlin SDK for Matrix
Trixnity version 1.1.0 has been released! It adds support for room key backup, which makes developing a matrix client a lot more comfortable.
Here is the changelog:
- Added key backup support!
- RoomService::getAll() returns a reactive list of reactive rooms instead of a reactive list of rooms. This allows to implement huge room lists without performance losses in the UI.
- Some reactive data can be accessed in a non reactive way. Note that you will then only get a snapshot of the data.
- Prevent sending room keys as to device messages, when they cannot be encrypted (e.g. due to missing one time keys).
Halcyon is an easy to use matrix library inspired by discord.py
Version 1.1.0 Released
Hello again! Halcyon is a python Matrix bot library created with the intention of being easy to install and use. With this release, we have reached our second release milestone! Check out the roadmap in notes.md (located in the repository), for what is planned for RC3! I'm really happy about the performance and functionality gains for this release. If you have any questions or bug reports, come and chat with us over in https://matrix.to/#/#halcyon:blackline.xyz
More info at on the project at https://github.com/WesR/Halcyon
- Detailed room info is here! The bot will now cache and provide room info with each message, automatically refreshing in the background. Check out usage.md for info on what is provided
- get room admin / moderators, topic, related groups and more
- Better polling through long polling (Thanks @forden:matrix.org for pointing out this improvement)
- send images with the new send_image() function. It includes simple toggles for blurhash and thumbnail generation
- More examples in /examples
- General roadmap and documentation updates
- A fix for the slow polling, which might have also caused issues on systems with frequent network drops (Thanks @octt:matrix.org)
Dept of Bots 🤖
Matrix bot to help with community management
Bubo is a friendly little owl (bot) that helps maintain your community. It's been over a year since cutting the last release, so the changelog contains a bunch of things, namely:
- Added command to set power levels in rooms.
- Added users command to list and create users in a configured Keycloak. Optionally send invites via keycloak-signup, a web app that allows self-registering with Keycloak via short lived tokens.
- Add logging to a Matrix room.
- Bubo admins and coordinators can now be set based on room memberships.
- Add command to make Bubo unlink and part itself from a room.
- Add command to list rooms Bubo maintains but is not admin in.
- Add command to recreate a room. This follows the upgrade room functionality, but does it without needing admin permissions (basically almost everything except a tombstone event). Useful if for example you have accidentally lost admin in a hundred or so rooms in your community. Which may have happened 😅
- The communities command is now deprecated (support for spaces coming in the next version).
Additionally some other changes and fixes, see changelog for full details.
Plans for next up features include syncing with Discourse to replicate spaces from Discourse groups and populate space members from Discourse group memberships (when Discourse shares the same Keycloak SSO provider with the homeserver).
Dept of Interesting Projects 🛰️
A Deviantart Fork based on Matrix
MTRNord (they/them) reports
Reaching another feature Milestone – Submitting images via Matrix Art.
Matrix Art now supports logging in with any account (well-known not supported yet. You need to provide the full server address) and submitting images through the interface. You can now either just log in (No benefit though at this time as comments and follows are missing) or create a Matrix Art Profile.
An Account can also be created later. An Account would create a Profile room at
#<mxid>on your server if it doesn't exist. This currently is only possible by doing a logout and login in again with the box checked. A better way will be added soon. Editing the Profile is not yet implemented at this time.
These 2 changes should allow some people to experiment with this. Mobile design is not tested at this time. Submits should work. If you were previously logged in, you will need to log out and back in for some variables to get set correctly.
Registration is still WIP as there is some more moderation prep needed before the server accepts the registrations.
I hope people cheer in and post their images :) (Also, please use the nsfw flag if required. This will make them hidden on the front page but shown in your profile page. I will block people that don't use it from the instance otherwise. Please be sensible.)
- Form readability increased
- Search engine getting filled in the background (Self hosted https://meilisearch.com instance gets used) when submitting
- Loading indicator gets correctly positioned
- Images without thumbnails or html caption don't break anymore
- Directory Database was switched to SQLite
- Roboto font was replaced with Inter font
- Directory Endpoint got secured using the OpenID module in Matrix
- "Devianart" typo got replaced with correct "Deviantart"
- Logout state management got improved
For more information, feel free to take a look at https://github.com/MTRNord/matrix-art Or join our room: #matrix-art:nordgedanken.dev
Matrix in the News 📰
Apparently, a German school forked FluffyChat and is using it for homeschooling: https://www.golem.de/news/matrix-grundschule-forkt-messenger-2201-162562.html (German only news article) Sources: https://gitlab.com/hermanncoders/hermannpost
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!