Matrix Live 🎙
Matthew presents the MSC process! Get slides here.
Dept of Status of Matrix 🌡️
University of Innsbruck featured in heise.de
Oda Nobunaga said:
The German IT platform Heise has conducted an interview with the university of Innsbruck which chose Matrix/Element over Microsoft Teams. Reasons: it's free, decentralized/federated, expandable and secure.
"free, decentralized/federated, expandable and secure" sounds like a great set of reasons!
Heise article, naturally, is in German. Element have some content in English discussing the deployment, and how well-suited Matrix is for universities. Finally, the best kind of feedback: an Innsbruck professor cheers the utility of federation:
And the best thing: The federation across different institutions really works. I can still participate in project related chats with my former team @ETH_en while seamlessly supporting lectures at @uniinnsbruck. All out of one tool, one login. pic.twitter.com/6LXHcu7Jjf— Jan Beutel (@jan_beutel) April 30, 2021
Famedly Fellows on Linux Lounge
Btw if anyone wanted to hear Krille and me live, we are live at the linux lounge now. It's in GERMAN! https://theradio.cc/blog/category/shownotes/linuxlounge/
Exciting! Possibly. For the lucky few who can understand it anyway!
If anyone did miss the opportunity to listen to the live stream: Here you can find the recording, with show notes, as well: https://rec.theradio.cc/item/ll244/
We were happy to have Krille and Nico with us. 🥳
(website in german as well as the stream recording)
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.
- There were no new MSCs created this week.
MSCs with proposed Final Comment Period:
- No MSCs entered proposed FCP state this week.
MSCs in Final Comment Period:
- MSC1772: Matrix spaces (merge) (5 days remaining)
We've opened up a new room for MSC authors to come and ask about the MSC process, as well as for review and feedback on their MSC ideas over at #sct-office:matrix.org. If you're unsure what the next steps for your MSC are, or aren't sure whether an idea would make sense for inclusion in the Matrix Specification, then this room is the perfect place to ask about it. Come on by!
In terms of MSC work, Spaces remains one of the most active topics in the spec this week, with MSC1772 finally reaching Final Comment Period! A lot of work went into writing and reviewing the MSC, as well as crafting the implementation - so congratulations to everyone involved! Of course, any concerns can still be raised over the next 5 days by anyone before the proposal is ultimately merged to the spec.
There are a number of changes being merged to the spec as we move swiftly towards the next major Spec release. Those that have merged this week are:
Otherwise there's been a smattering of discussion and updates on various MSCs, such as MSC2730 (verifiable forwarded events), MSC2249 (requiring a user to be able to see an event to report it) and MSC2516 (voice messages).
Thanks for reading!
Also - knocking is now published to the unstable spec, check it out at: https://spec.matrix.org/unstable/client-server-api/#knocking-on-rooms
Dept of P2P 👥
Neil Alexander announced:
We've just released the first public P2P Matrix demo using the experimental Pinecone protocol. There are builds available for Android right now and iOS is following shortly via Testflight as soon as it passes Apple's beta review:
Android 10+: https://appdistribution.firebase.dev/i/394600067ea8ba37
iOS: https://testflight.apple.com/join/Tgh2MEk6 (wait for build 73!)
If you enable the static peer in the peer-to-peer settings, you can join us in the
The demo will attempt to connect to other devices using Bluetooth Low Energy, even if internet connectivity isn't available. Local connectivity over Wi-Fi is also supported. It's still very rough around the edges and there are lots of bugs, but feel free to give it a go!
Join #p2p:matrix.org for more chat and to provide feedback!
Dept of Servers 🏢
Conduit is a Matrix homeserver written in Rust https://conduit.rs
Feature: Implement /devices
Feature: Send invites over federation
Improvement: Verify signatures for incoming requests
Improvement: Room directory now loads a lot faster
Fix: Retrying transactions works correctly now
We managed to work on a few features the last two weeks, but there are some very annoying issues with major Matrix clients:
Synapse is a popular homeserver written in Python.
We expect to release 1.33 on Tuesday; more on that next week. But generally speaking, much of our development focus has been on profiling the memory usage of small homeservers joining large, highly-federated rooms for the first time. For example, we see a graph like this when joining Matrix HQ:
At a first pass, we're aiming to significantly reduce the initial spikiness of that graph, and we think #9910 will help with the subsequent slow ramp up in memory.
We've also been discussing how to balance our relatively rapid release cadence with managing low severity security issues. If you have any thoughts, preferences, or relevant experiences to share, please comment here!
Dept of Bridges 🌉
Announcing a new bouncer style Matrix IRC bridge to bridge the gap between IRC and Matrix in a way that's easy to configure and manage by homeserver administrators for small scale deployment.
Meet Heisenbridge https://github.com/hifi/heisenbridge 🥳 (it's a Breaking Bad reference 🤦)
It's written in Python and started off as an experiment if it's possible to create a somewhat well performing stateless IRC bridge that's practically almost zero configuration. It quickly found a use case of being able to join !channels on IRCnet that hasn't been possible in the past.
Intended target audience are people who run their own homeserver and would like to transition from a combination like ssh+irssi to pure Matrix (with weechat-matrix, of course!) but still keep IRC close without losing the "fine details" of the protocol that happens when plumbing a room properly.
As the bridge is written by someone who doesn't really know Python help is much appreciated in the form of filing issues, sending pull requests or just discussing about it on Matrix to tell how you would like to use it!
Development and support in #heisenbridge:vi.fi
matrix-puppeteer-line: A bridge for LINE Messenger based on running LINE's Chrome extension in Puppeteer.
Inbound read receipts! But with a view caveats:
Receipts are only fetched for the "most recently active" room.
Example: if you send a message in room A, then room B, receipts will only be fetched for room B and not room A, until you (or someone else, from LINE) posts in room A.
This will be fixed in the next update. I have an idea for some Puppeteer trickery to get it working.
Read receipts in group chats are bridged as annotations (reactions) instead of "real" read receipts, until all members of the chat have read a message.
- This is because LINE's read receipts for group chats don't tell show who read a message, but only how many people a message was read by.
- To capture this in Matrix, instead of sending read receipts for a group chat message, the bridge puts a reaction of "Read by #" on it, with "#" matching how many people read the message so far. Once everyone in the chat has read a message, the reaction is removed and a "real" receipt is sent for all users.
Internal changes to message syncing that should hopefully make inbound messages more reliable, or the very least improve code maintenance.
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) offered:
Hey there, it is your friendly neighborhood cat client! Pardon, chat client!
Jedi18 implemented forwarding of messages. Just select a message and press Alt-F or use the context menu to send a message to the room you select in the popup! This encrypts and decrypts messages and media appropriately, but be aware that sending an encrypted file to an unencrypted room uploads the file unencrypted. (In all other cases the media is not uploaded again.)
Furthermore matrix.to links are now rewritten to matrix:-URIs internally. This means joining rooms and such should now work the same across both of them. It also makes navigation to events work now and even has a shiny highlight effect now! You can also create links to events now from the context menu. These are generated as matrix.to links, since currently the onboarding experience should still be better. Once the next version of the matrix.to website gets deployed, you can even just click there to open the event in Nheko! (Instead of having to copy a
Since "Copy link to event" was confusing to people and AppAraat opened his present box, only to realize it did not contain "Copy link location", we implemented that too as well as a copy action, to copy the event body for good measure. I hope everyone who got confused will forgive me!
Apart from that we also updated our screenshots on https://nheko-reborn.github.io/ (and all AppStream based store pages) to be higher resolution and reflect the current design. Furthermore we fixed the login on conduit homeservers and that no rooms were shown, if the server didn't support the groups API.
That's all, and keep on c(h)atting! <3
Carl Schwan told us:
We rewrote the room managing code moving it from QML to C++ and unify how we manage rooms in NeoChat. This allowed us to support the matrix-URIs scheme, making it possible to open rooms and show user information when clicking on a matrix: link in your browser. Sverin Saji improved the look of the typing indicator and Jan Blackquill improved the keyboard navigation.
Watch The Matrix
This week I published the first public build on TestFlight:
There are a few reports of issues when signing in which I'm looking into. A few other changes include:
Round complications show [ ] instead of an empty icon (some have been disabled for now).
When signing in, the homeserver can be detected from the username.
Various performance and bug fixes for sync responses.
The app now has an icon and more purple accents.
As requested by benpa after my last update, here's a video of it running on a device:
/me doesn't need to buy an Apple Watch ... /me doesn't need to buy an Apple Watch
Updates from the teams.
- We’ve been maturing and iterating on MSC1772 in anticipating of wider testing of Spaces in the near future
- On Web, we’ve been iterating on designs & implementations for a beta, including tweaking filtering to display rooms from all Spaces
- On Android, we’ve been doing the same, and have merged the initial Spaces implementation onto develop
- On Synapse, we’ve been implementing restricting rooms based on the Space Summary API
- 1.7.26 released on Monday
- Added persistence of unsent messages across app restart
- Improved room list filtering performance
- Improved the image detail view
- On develop
- Element Desktop is now available for localisation in Weblate
- In progress
- Improving room join UX, ensuring you can get back to a room when it finally joins
- Converting more files to TypeScript, including key modules like EventTile and friends
- 1.3.5 has been published to the App Store on Monday.
- We have been polishing the new VoIP design this week. It should be merged into develop early next week and released in the App Store the week after.
- We want to focus on code quality. We set up GitHub actions in our 3 repos. They run both unit tests and integration tests. We need to fix some of our 600+ tests in the SDK but we now have a CI able to complain about test failures.
- The Spaces have landed on Element Android, on the develop branch. We are working to stabilize the feature before the release in beta next week.
- In parallel, we are working to stabilize the whole application, and provide a better support on Android 11.
- Also it will be possible in the next release to compress video before sending, which is a very expected feature.
A minimal Matrix chat client, focused on performance, offline functionality, and broad browser support. https://github.com/vector-im/hydrogen-web/
Invites and other goodies have landed in 0.1.46 & 0.1.47!
If you spend any amount of time with Bruno, eventually the topic of sourdough will arise - now it's even sneaking into his updates!
Dept of VoIP 🤙
KB1RD told us:
I announced this project last week. It's exactly what it sounds like: A puppetting bridge to puppet a telephone number from Matrix. It's currently pre-alpha and not ready for use on public-facing HSes.
Not too much has happened in the last week as I've been a bit busy. The main thing is that there's now a dev branch where outbound voice calls work. Other than the 2014 SIP experiment, I think this is the first bridge to make voice calls work?
I hope having a reference VoIP bridge can help pave the way for more VoIP bridging. I'm already looking into how code can be generalized for other bridges. For example, I've opened an issue in matrix-bot-sdk to add helper classes and stuff for VoIP support. I'd be curious to see how other bridge builders think this could be accomplished. 👀
If you're interested in PSTN bridging specifically, there's a room for that.
If you're interested in VoIP bridging in general, there's a room for that, too
Dept of Services 🚀
etke.cc - like Element Matrix Services, but on your servers, under your control and without restrictions
Some context: I like how simple EMS allows you to setup the Matrix homeserver, but it lacks any internal tuning or customization ability. Do you want more? OK, setup it yourself and try to stay normal while trying to configure coturn to properly run in docker cluster. Because of that, I did a service where you can order initial setup and configuration of homeserver (yes, with coturn in docker cluster!) and with full control of customization and fine-tuning of manual configuration (website even has step-by-step guide how the process works).
It's based on the amazing spantaleev/matrix-docker-ansible-deploy with additional stuff like system security hardening and maintenance
Source: https://gitlab.com/rakshazi/matrix-ansible/ It contains basic security stuff like ufw and fail2ban, system maintenance like updating packages, cleanup of old logs and docker images, configuration of swap, some additions like absurdly simply healthcheck page and website deployment to base domain. Documentation may be found in readme files for each role
GoMatrixHosting v0.4.5 is here!
GoMatrixHosting v0.4.5 is here!
The FLOSS Matrix hosting system built on AWX, it enables you to manage multiple Matrix servers for many clients in both a commercial or non-commercial context. We are currently doing a free giveaway of on-premises server plans, if you're an experienced user or Matrix admin you can receive a free on-premises subscription and hopefully provide us with some feedback.
For more updates on this project visit our Matrix room: #general:gomatrixhosting.com
GoMatrixHosting was previously Oasis Hosting - looks like they're making great progress improving their product, may be time to have another look.
Dept of Interesting Projects 🛰️
Matrix_Stats Discoverer (bot) ( @server_stats:nordgedanken.dev )
Some of you might already have seen that bot show up in rooms. To clear up some confusion around it I will briefly explain what it does and what it is supposed to do:
What does it do?
The Bot is simply existing to do the same task as Matrix Traveler (bot) already did for years now. It joins rooms, listens for an alias, tries to join it.
The main difference between these 2 bots is that my bot also searches for aliases in old messages.
What does it save?
It only saves the relations between rooms. This means it knows which room was posted where. It doesn't know who posted it, when it was posted, why it was posted or any other content of messages.
However due to matrix' nature it does need to get the data once onto a synapse to read trough it. This means it has the data on my synapse. (Running in helsinki at hetzner).
What can I do if I do not want it?
The easiest way is to just ban it. It will fully forget that room.
Kicking works too but it might again join if it gets found again.
Where is the source?
The source code is available at https://git.nordgedanken.dev/MTRNord/server_stats/-/blob/main/src/bot/mod.rs
For further questions feel free to join #server_stats:nordgedanken.dev
Also note this bot is still very early in development which is why it does not respond to you yet on any commands. This will be added in the near future as well as a readme in the repository
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!