Matrix Live 🎙
Dept of Status of Matrix 🌡️
Room of the week
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
This week's room is: #art:matrix.org
"Share your artwork and drawings and chat about it. You don't have to be good!"
If you want to suggest a room for this section, send an email to
Yep, go ahead and email your suggested Matrix room-of-the-week to Timo!
Dept of Spec 📜
MSC3079: Low Bandwidth CS API now has an experimental implementation containing a proxy server and mobile bindings! In addition, there's a blog post explaining how to use this implementation to add low bandwidth support to your servers/clients! This implementation will use about 22% of the bandwidth that the normal CS API would use. Please be aware that low bandwidth Matrix is in its infancy and is subject to change without notice.
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.
- No MSCs were merged this week.
MSCs in Final Comment Period:
- MSC2778: Providing authentication method for appservice users (merge)
- MSC2732: Olm fallback keys (merge)
Mostly Spaces and E2EE work this week. New spec release is still in the works.
Graph will return in a future edition!
Dept of P2P 👥
Neil Alexander told us:
I have spent quite a bit of time lately working on Pinecone network convergence for P2P Matrix. There's still quite a bit to do in order to call Pinecone "complete", but a network of 50 nodes now bootstraps entirely from cold much more quickly and converges on full end-to-end reachability in roughly 6 seconds. This is a significant improvement to before! Keep an eye out for future P2P Matrix demo builds using these new protocol changes.
This chart also represents interest in Pinecone over time!
Dept of Servers 🏢
Conduit is a Matrix homeserver written in Rust https://conduit.rs
timokoesters told us:
Hello! The last two weeks I mostly tried to make our database backend swappable so we don't need to rely on the sled database anymore. I was able to try out rocksdb, but there were bugs in the rust bindings which required inefficient and unsafe workarounds.
If you know about other key-value databases that work better with Rust, please comment on the issue:
Feature: Swappable database backend
Improvement: Don't apply push rules for users of other homeservers
Fix: is_direct now works for locally invited users
Fix: Deactivated accounts are now actually deactivated (-> performance improvements for appservice puppets)
This week I implemented the remaining API route for URL previewing. Already has some nicer url preview results like showing images with Twitter posts and proper YouTube previews instead of the cookie wall text :)
With this, synapse-media-proxy should be a drop-in overlay for all Synapse's /_matrix/media routes. I don't really recommend using it in prod yet however, but I have a test instance that could use some responsible disclosure pentesting at https://media.pixie.town, please DM me @f0x:pixie.town if you find anything :)
synapse-media-proxy now has a room at #synapse-media-proxy:pixie.town
Synapse is a popular homeserver written in Python.
🚪 Knock, knock... It's Friday!
After over a year of work and over a hundred commits, we're now one major step closer to supporting MSC 2403: Add "Knock" feature, which allows users to request admission to rooms which would otherwise be invite-only. Specifically, last Wednesday we merged (#6739) which is an experimental implementation of the MSC, under an unstable prefix. Knocking is not available in any current room versions — we need to implement room version 7 for that — but the remaining work is minimal¹ compared to what it took to get to this point. 🙂 Major kudos to Sorunome, Anoa, and Clokep for their work on both the spec and implementation.
Otherwise we're looking forward to releasing Synapse 1.36 early next week, and we have some great things in store... but I'll not spoil them today! 🤫
From everyone on the Synapse team, have a great weekend!
¹: Well, on the server-side at least. No clients support knocking, yet...
Homeserver Deployment 📥️
This week too comes with an update on the Helm Charts I'm maintaining, with an update of element-web to 1.7.30
Docker-based development environment for Matrix
Hi folks. Some time ago I asked here about any projects that provided a local Matrix "node" through docker, and it seemed not much existed in that space, so I went ahead and created the following repo:
Docker-based development environment for Matrix. Provides a local sandbox with the following pre-configured services:
- synapse: the reference homeserver implementation
- synapse-admin: homeserver admin UI
- element: a web-based Matrix client
If this is something that would be useful to you, feel free to give it a try and send some feedback, either here or through GitHub issues. Thanks in advance! I hope this is helpful to some of you 🙇
Thanks uhoreg for passing this on! Looks like a really useful way to get a local env running
Dept of Bridges 🌉
Libera.chat IRC bridge work continues
Hi folks, just a quick update on the Libera.chat bridge situation. We're still rapidly working on the bridge, the milestone highlights for this week are:
Nearly 6k Matrix users are now connected to IRC and growing by the minute.
We're midway though our #matrix* Freenode to Libera channel/bridge migrations.
FOSDEM has been migrated over
We're still working through our backlog of migration requests from users, a lot of you phoned in!
We're still continuing to rapidly work on the bridge, with a release expected on Monday 🤞. For any of you who aren't in the know yet, you can start bridging to libera.chat by simply joining a channel like #libera-matrix:libera.chat or by searching the
I'm hoping we'll be nearing the end of our journey on this bridge, and it will settle into a natural stable state over the coming days! Anyway, thanks everyone for your patience and we hope to see you on Matrix or IRC!
IRC Bridge 0.27.0-rc1 leaps out of the gate
Hi bridge followers, today we've released 0.27.0-rc1 of the IRC bridge containing a huge number of changes following all the work we've been doing on libera.chat. Notable things to call out in this release are:
We've refactored the node-irc library to be typescripty and modern, rather than the quite old JS that it was.
SASL support for username/password auth has landed, which hopefully means a smoother login process for many. (We're aware of some issues around setting usernames, watch this space)
Allowing you to spin up the bridge with complete control over the alias namespace of a host (e.g. #libera:libera.chat links to #libera).
And finally, a privacy feature to block incoming IRC messages when Matrix users are not all joined which is requested by some IRC networks.
Please report bugs as you see them to https://github.com/matrix-org/matrix-appservice-irc, and let's all pray this will be a smooth release :)
matrix-puppeteer-line: A bridge for LINE Messenger based on running LINE's Chrome extension in Puppeteer.
Read receipt improvements are here! They are in temporary branches until they've been tested for stability:
better-receipts-dmbranch contains some smarts to prevent Puppeteer from having to "view" a LINE DM chat in order to sync it, which would make the contact you're DMing think you've read their messages when it was really Puppeteer that "saw" them. However, this doesn't work for non-text messages (like images) or messages in group chats.
better-receipts-msc2409branch (which extends the above branch) uses MSC2409 to detect when you read a bridged message on Matrix, so it can tell Puppeteer to view it on LINE on your behalf. This will let your LINE contacts know when you've read their messages.
After this, only a few read receipt improvements are left to be made:
Make Puppeteer check all LINE chats (not just the most recently-used one) to see if messages you sent have been read (in LINE). This will work by cycling through all LINE chats where the final message is posted by you and doesn't have a "Read" marker on it yet.
Use MSC2409 to avoid having to view a LINE chat when syncing non-text messages (like images). The idea is to send a placeholder message that will get replaced with the real message (which requires Puppeteer to view the LINE chat) only when you actually view the placeholder.
Issue page: https://src.miscworks.net/fair/matrix-puppeteer-line/issues
Dept of Clients 📱
Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE and intends to be full featured and nice to look at
Nico (@deepbluev7:neko.dev) reported:
I've been slowly refactoring the room and communities list to prepare it for spaces. This work is now mostly complete, changing ~4000 lines of code, of which 1500 just got deleted. All of the sidebars are now expandable and collapsible, so you can see the full name of your tags and communities and the lists should also update more dynamically now. Startup also only takes half as long as before on my system and Nheko uses 100MB less memory for my account. Next week I'll probably add spaces to the communities list as well as the room list.
Apart from that LorenDB has been rewriting the member list as well as the invite dialog in Qml and manu has been making progress on the room directory. All of that seems to be coming along nicely and behave much more reasonably than the old versions. There has also been a lot of progress on the Italian and Esperanto translations as well as a few smaller bug fixes and performance improvements.
I hope we will make it to space next week!
Updates from the teams.
Delight, a team aiming to delight users
- We’re making good progress on the ability to re-order Spaces on Web & Android, expected to land soon!
- We’re also adding aliases to Space creation, to make it easier to share and onboard other users
- On iOS, we recently merged a refactor with a new sidebar design which lays the foundations for iOS joining the Spaces beta
- We’ve also been working on adding pagination to the Space Summary API on Synapse
- Meanwhile, we’re also shepherding various MSCs through the spec process to improve private Spaces in the very near future
- 1.7.30 released on Monday
- On develop
- Upgraded to React 17
- First GitHub Actions pipeline for web
- In flight
- Continuing to improve application performance
- Adding dashboard for performance benchmarks
- Working on Apple silicon desktop builds
- Working on translation mismatch errors
- 1.4.1 released on Tuesday on the App Store
- The new side menu and voice messages are coming.
- We are setting up Towncrier to avoid merge conflicts on our CHANGES files. Those conflict prevent Github Actions, our CI, from starting
- We fixed several annoying bugs regarding VoIP and app stability
- Element Android 1.1.9 has been pushed to production
- We are working with the design team on the dark and light themes, not forgetting the black theme, to ensure some coherence across the application and also to clean up some legacy code. There were too many shades of grey… We will also do the same work on TextAppearance.
Carl Schwan said:
This week was a busy week for NeoChat. We added tons of cool stuff! We rewrote the setting page to add a bit of organization in the settings. This also pushed us to add new appearance options. You can now add a blur effect as background, change the color scheme of NeoChat and switch between bubbles and a more compact layout as you wish.
Another thing we worked on was spellchecking. NeoChat will now add a small red underline under misspelled words and will suggest corrections. This is using the Sonnet frameworks and will integrates perfectly with your personal dictionary from your other KDE apps.
Finally something we added two weeks ago but forgot to mention, we added a quick room switcher using the Ctrl + K shortcut.
Dept of SDKs and Frameworks 🧰
Another small release - libQuotient 0.6.7 is out, fixing an issue causing NeoChat to not add rooms to the roomlist after joining. Thanks to Carl Schwan for hunting the problem down!
Tobias Fella added:
Apparently my work-in-progress end-to-end-encryption implementation for libQuotient was bad enough to cause performance problems on my homeserver (Sorry about that!). This should be fixed now 🙂
Dept of Interesting Projects 🛰️
Server now uses warp instead of actix-web
/relations request instead of 10s now takes 2s overall
Added a /servers api endpoint which returns all servers based on the room_ids. (It splits of the server_name from room_ids and puts them into an array)
- Aliases with emoji will now get recognized.
Dept of Guides 🧭
A guide for creating simple Matrix bots with Python and Simple-Matrix-Bot-Lib
krazykirby99999 told us:
Simple-Matrix-Bot-Lib allows anyone who needs a bot in a Matrix Room to do so without having to spend unnecessary time learning a complex framework!
Dept of Grants 💰️
Code Lutin grant program
numéro6 told us:
If you live in France (or eurozone) and your Matrix-related project need some funds, you may candidate to the 2021 #MécénatCodeLutin grant program for FLOSS by Code Lutin. Candidates may fill the dedicated form before july 8th.
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!