Matrix Live 🎙
Something different this week as we welcomed the community to submit their own demos!
- Oleg presents his Matrix home-automation setup, which uses Opsdroid, home-assistant and the reminder maubot.
- Nico gives presents a selection of small-ish new features in Nheko
- Timo gives a tour of the current state of the Conduit homeserver
- MTRNord (Marcel) presents the time-tracking bot used by Famedly
- Sorunome presents bootstrapping (creating cross-signing keys and online keybackup) in Fluffychat.
- Bala from Noteworthy presents Deploy a Matrix home server in 2 minutes with Noteworthy (set to royalty free music!)
Dept of Status of Matrix 🌡️
Bundeswehr deployment and app goes live
The Matrix deployment for the Bundeswehr (German Armed Forces) has gone live - details (in German) at https://messenger.bwi.de/ and https://www.bwi.de/news-blog/news/artikel/open-source-matrix-ist-einheitlicher-messenger-standard-fuer-die-bundeswehr and further coverage at https://www.egovernment-computing.de/bwi-und-bundeswehr-setzen-auf-open-source-a-980033/
Oleg (same fellow from the video - wow!) added:
Heise (German news portal) also quoted the news: https://www.heise.de/news/Matrix-steht-als-Messenger-fuer-Soldaten-und-zivile-Angehoerige-zur-Verfuegung-4963211.html
David Mehren linked to Element's own coverage:
Dept of Spec 📜
New spec platform
Demo site is at https://adoring-einstein-5ea514.netlify.app/1.1/
This week we have:
Migrated all spec documents into the new platform, updated all template calls to the new toolchain except those for versioning and changelogs.
Implemented basic support for representing spec versions in the new site, based on the global versioning MSC.
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:
- MSC1544: Key verification using QR codes
- This landed right after I wrote the first draft of this entry!
Personally I would find that last one quite helpful!
Spec Core Team
In terms of Spec Core Team MSC focus for this week, we're sticking with the same three MSCs: MSC2844 (global versioning), MSC1544 (QR code verification) and MSC2790 (modal widgets). MSC2844 in particular I personally found quite interesting.
Dept of Servers 🏢
Dendrite / gomatrixserverlib
Dendrite is a next-generation homeserver written in Go
Neil Alexander said:
I'd like to say thank you especially to our community contributors who have been adding new features and filling gaps!
Changes this week include:
Memory optimisation by reference passing, significantly reducing the number of allocations and duplications in memory
A concurrency bug has been fixed in the federation API that could cause Dendrite to crash
A hook API has been added for experimental MSCs, with an early implementation of MSC2836
Forgetting rooms is now supported (thanks to S7evinK)
The last seen timestamp and IP address are now updated automatically when calling
The last seen timestamp and IP address are now reported in
/_matrix/client/r0/devices(thanks to alexkursell)
An optional configuration option
sync_api.real_ip_headerhas been added for specifying which HTTP header contains the real client IP address (for if Dendrite is running behind a reverse HTTP proxy)
Partial implementation of
/_matrix/client/r0/admin/whois(thanks to DavidSpenler)
The error when registering a username with invalid characters has been corrected (thanks to bodqhrohro)
-versioncommand line flag has been added (thanks to S7evinK)
Backfilling should now work properly on rooms with world-readable history visibility (thanks to MayeulC)
Some more client event fields have been marked as omit-when-empty (thanks to S7evinK)
build.shscript has been updated to work properly on all POSIX platforms (thanks to felix)
Spec compliance is unchanged, although some Synapse-specific tests have been removed and some new tests have been added:
Client-server APIs: 58%, same as last week
Server-server APIs: 83%, same as last week
We released Synapse 1.23.0 on Wednesday! Read all about it on the Matrix Blog. Otherwise, we'd like to highlight a few developments over the past week:
We're discussing a policy for ending support for old versions of Python and PostgreSQL. If you have opinions, please let us know on GitHub.
Our initial implementation of MSC2403: Add "knock" feature is undergoing review, and will likely land soon.
We've been looking at ways to improve the efficiency of state resolution, and Erik has managed to devise some algorithmic improvements that yield an order of magnitude speedup for a handful of pathologic cases. We hope to have a better idea of how this might work for real world workloads soon.
Lastly, we'd like to take this opportunity to remind you to please regularly upgrade your Synapse. Especially if you're not yet on 1.20.0, as we'll be disclosing a denial of service issue which affects older versions on Monday.
mewmew wanted to use my fork of Synapse, so I made the changes there configurable (instead of hardcoding to my user ID) and even added a readme to list the features. It might also be useful for other people who want custom room IDs and other fun stuff.
The fork is available at https://mau.dev/maunium/synapse
Homeserver Deployment 📥️
Dendrite is a next-generation homeserver written in Go
I've updated the Dendrite ARM docker images to v0.3.0. They can be found at https://hub.docker.com/r/trslimey/dendrite-monolith & https://hub.docker.com/r/trslimey/dendrite-polylith
I have once again updated the Docker ARM Dendrite images for version 0.3.1.
Dept of Bridges 🌉
mx-puppet-discord is a (double)puppeting and relay bridge for discord, based on mx-puppet-bridge
sorunome told us:
Support for receiving EDUs from matrix (typing, read indicators and presence) has been added. Protocol implementations can start using the new events, if they want to. Version
0.1.0has been released along with this. You have to enable the
de.sorunome.msc2409.push_ephemeralflag in your registration file
Added support for bridging typing and presence matrix->discord
Eric Eastwood offered:
The native Gitter <-> Matrix bridge is in production! 🚀🚀 We're only testing it out in a single room but feel free to come by and send a message 😀
We also have edits from the Gitter side flowing to Matrix and soon to support edits from Matrix. You can track our full progress from the GitLab epic for the native Gitter <-> Matrix bridge.
Coma Grayce told us:
Hey, our team of colorful ponies proud to introduce you a new Matrix bridge to VK.com chats. It's powered by mx-puppet-bridge and so far supports almost all of core features people want to see, like replies, message edits and file attachments.
Project home: https://github.com/innereq/mx-puppet-vk
Video introduction: https://www.youtube.com/watch?v=nBRBUA9beXs
Dept of Clients 📱
Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at
Nico (@deepbluev7:neko.dev) announced:
Profiles should now open again on older versions of Qt.
I've been slowly rewriting the message are to be qml, to make it easier to do fancy styling. As a result emojis in the emoji-completer are now colorful and the avatars in the username completer now match the avatars used in the timeline. It also open up a few other improvements, like finally sending mentions as links instead of plain text.
We have now CI running on our self hosted gitlab instance. We will probably switch of the travis CI, once this is more battle tested. Repositories are now also automatically mirrored between gitlab and github.
Fixed a bug, where we tried to read the internal world group on your server instead of keeping that to ourself.
Nico (@deepbluev7:neko.dev) offered:
I released 0.0.3 a few days ago bundling a few smaller improvements like redactions, copying messages and the ability to click on more links as well as some visual cleanups. Nothing radical, but also nothing breaking (I hope).
Delight (Rich vdH, Michael (t3chguy), Valere, Steve, Nique, Nad)
- Observed user tests of people trying to use Element for the first time for personal and professional use cases
Began work on fixing several of the issues observed, like:
- adding an invite people button to new rooms, so users can more easily add people;
- changing copy to help people understand what DMs are
- Communities are coming back with a bang! Last week we said we renamed them to Spaces, and this week, we’ve started designing what MSC1772 would look like for users on Element, to start user testing next week.
- To make authentication easier, we’ve started initial implementations of SSO in Element, exploring how homeservers & Matrix clients can support multiple SSO providers. Most of the work so far is captured in MSC2858.
VoIP (Dave, Brendan, Ismail, Francois, Simon, Nad)
- PR up for new look in-call UI, now looking at line 1 / 2 support
- Work ongoing to update both platforms to v1 VoIP
- Some tweaks as implementation is ongoing
Web Platform (Ryan)
Element Web 1.7.14-rc.1 is now available at https://staging.element.io, including:
Several tweaks and improvements to the room list filter
Improved registration based on user feedback
Improved invite / create DM flow
iOS Platform (Manu, Gil)
The release has been blocked because a bug has been found in the end to end encryption module. It has been fixed but we want to fix damages it created on one time keys before releasing the new app version.
The new background sync service mechanism PR has been updated
We started to integrate tuist to stop to be annoyed with merge conflicts on the Xcode project file
- Merge the background sync service mechanism PR and make more people test it
Android Platform (Benoit, Onuray)
- We’ve just merged a lot of PRs, to improve room creation form and fix some bugs.
- SDK side, Dominaezzz is converting some of the Service API methods to coroutines, for a cleaner code. See for instance https://github.com/vector-im/element-android/pull/2414 . 9 out of about 45 services have been migrated so far. We have about a 45 services in the SDK (!)
- Release including a new way to invite friends to Matrix and to Element.
Released 0.1.30 with image uploads. There is also a new preference in the settings to scale sent images down.
Dept of SDKs and Frameworks 🧰
Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.
Since our last update four weeks ago,
iinuwa created issues for all of the identity service api endpoints (w/ suggested module names!) 🎉
I updated lots of enumerated types to allow unspecced values, for future compatibility & robustness
Devin R made sure a custom Content-Type in responses overwrites the default rather than creating a duplicate header. #339
gnieto fixed a bunch of bugs in ruma-federation-api
Alejandro Domínguez added support for deserializing string power levels (requires the
unstable-synapse-quirksfeature because these events are invalid according to the spec but Synapse used to (?) accept them)
Just released version 2.2.0 of the Matrix Ruby SDK with the help of the community, with this release support for JRuby is improved - though still not perfect, in the higher-level abstraction direct messaging rooms are now exposed for all users - as well as all that the current user has, and the lower-level abstraction sees the addition of the CS API method to get an event context.
And just to reiterate; if you're using the gem - or have questions/comments about it. please do drop into the discussion room at #ruby-matrix-sdk:kittenface.studio.
Dept of Bots 🤖
You can see demos of both bots in this section by watching Matrix Live \o/
Oleg told us:
Opsdroid bot for triggering home-assistant automations.
⚠️ Possible breaking change: change behavior how messages are matched
Before: messages were matched only if a message starts with
In this version: the whole message is matched. This means in v2.0.0 this will work
Hey, please !turnon light1
- You can override this by using
^in the config for. For example:
This allows one bot trigger another. See this TWIM video for details. 😉
Update Opsdroid to v0.19.0
Update opsdroid-homeassistant to 0.1.8
debugconfig parameter to display messages in the chat, that the bot is getting but, maybe, is not processing/matching
Famedly Timetracking bot
As seen in the video I am working at famedly on a bot to track our work hours.
Until this happens the video gives you a sneakpeak on the functions of that bot.
Current (implemented) functions
Tracking of time using
!outcommands with forced usage of a description as well as ISO 8601 timestamps.
Verification if a time is logical based on the known data
Saving the times tracked inside of postgresql
Tracking durations using a
Responding to only allowed users. (Including ignoring invites if a user is not allowed to use the bot.)
!deleteto remove entries from the database as needed
Handling of timezones based on users
!statscommand which prints you the tracked durations based on a predefined or custom range of time
CSV Export based on a defined range
!breakcommand. Putting a break in between a record or a in/out combination.
Better handling of multiple !in commands
Reminders to call !out and to take breaks
Fell free to join us at #timetracking-bot:famedly.de . As soon as the repo gets opened up to public we will announce it in TWIM. Feel free to give suggestions or wishes in our room :)
Get it at: https://gitlab.com/famedly/bots/timetracking
Dept of Ping 🏓
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server. Join #ping: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!