Matrix Live 🎙
Dept of Spec 📜
Hello everyone, normally anoa would be doing this update but today you get me (TravisR) instead. Luckily anoa has left me a script to run, so here's hoping I haven't completely messed up this week's update 😅
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.
- Nothing to report 😢
MSCs in Final Comment Period:
Spec Core Team
In terms of Spec Core Team MSC focus for this week, we're still focusing on the same MSCs from previous weeks to get widgets over the line. This includes MSC2774 to have widgets aware of their widget ID, MSC2765 so widgets can be pretty in clients like Element, and MSC2790 to support a form of user input with widgets.
Normally there would be a graph here of our MSC progress, however my machine refuses to accept that line graphs are a real thing today. As a replacement, here's a snowfall accumulation graph for Banff as reported by Environment Canada.
Dept of Servers 🏢
Tulir told us:
I made a simple room alias proxy: https://mau.dev/tulir/mauliasproxy. It can be used to create room aliases on custom domains without having to host an actual Matrix homeserver there. The proxy basically just responds to federation room alias queries using data from another homeserver (that data is fetched with the C-S API).
callahad reported: >
A new release candidate appears! Synapse 1.22.0rc1 was published yesterday and includes support for running background tasks in separate worker processes, as well as fixes to sharded event persisters which were first introduced in 1.21.0.
These changes significantly improved our client join Apdex score for matrix.org by making join performance both faster and less variable.
Synapse 1.22.0rc1 also includes support for a few experimental MSCs:
MSC2732: Supporting olm fallback keys
MSC2697: Supporting device dehydration
MSC2409: Allowing appservices to receive ephemeral events like read receipts, presence, and typing indicators.
In the coming weeks we'll focusing on improving Synapse's resilience in smaller to medium-sized deployments, primarily through improvements to state resolution. Stay tuned!
Today's update comes courtesy of Dan Callahan (@callahad:matrix.org), who joined Element on Monday as an engineering manager supporting the Synapse team. Dan previously worked in Developer Relations at Mozilla, and he's excited to help Matrix realize its ambitious vision for private, secure, and standards-based communication for all.
Dendrite / gomatrixserverlib
Dendrite is a next-generation homeserver written in Go
Neil Alexander offered:
Thanks to everyone who has been running Dendrite and reporting their findings, and also to contributors who have been submitting pull requests!
Changes this week include:
Dendrite no longer builds separate binaries for each polylith component, but instead has one multi-personality binary
Internal HTTP API calls are now made using H2C (HTTP/2) in polylith mode, which resolves some head-of-line issues with the connection pool
Forward extremities have been refactored, which should fix some cases where room state can end up corrupted
A couple of bugs when handling state rewrites have been fixed
The sync API no longer sends old state events to clients as if they were new
SQLite locking bugs around the latest events updater have been resolved
Notification levels are now parsed correctly in power level events (thanks to Pestdoktor)
Invalid UTF-8 is now correctly rejected when making federation requests (thanks to Pestdoktor)
Spec compliance for v0.2.1:
Client-server APIs: 57%, up from 56% last week
Server-server APIs: 81%, up from 80% last week
Timo stepped in to tell us:
This was another productive week:
- Improved thumbnailing algorithm (higher quality, less stored data, correct)
- Allow unjoined users to read state of world readable rooms (this makes shields.io work with conduit)
- Docs for cross compiling conduit
- Fixed stuck / double-join over federation
- Fixed random timeline reload bug
- Welcome message in admin room
- More frequent flushing
Some WIP things:
- Provide Conduit binaries for most platforms to make setting up or updating a Conduit instance even easier
- More reliable sending over federation
- Bring all features of our Ruma fork upstream
Thanks to everyone who supports me on Liberapay or Bitcoin!
Homeserver Deployment 📥️
Dendrite docker images
Dendrite is a next-generation homeserver written in Go
I built some unofficial Dendrite docker images for Linux/ARM64, for those trying to run Dendrite on a Raspberry Pi, RockPro64 or others. They can be found here: https://hub.docker.com/r/trslimey/dendrite-monolith & https://hub.docker.com/r/trslimey/dendrite-polylith.
Cool, we run Synapse on Pi0, Pi2 and Pi4 -- works reasonably well on each of them, i'm excited to try Dendrite
Synapse running on a Pi zero..?
Dept of Bridges 🌉
Eric Eastwood announced:
The initial iteration of
virtualUsersis in shape to merge(check out the flair 🔥) and will probably deploy in a release next week. We've split the rest of the
virtualUserwork into follow-up issues we can iterate on. We're working on adding room ban and spam detection support for
virtualUsersto stop any bad actors. Then want to start on the actual Application Service bridge (Gitter <-> Matrix).
If you're curious about more of the details, you can track the greater GitLab epic.
🌈🌉 Bifrost* 0.2.0 is (nearly) out
I couldn't really wait to talk about before we actually hit 0.2.0 so here is a sneak peek at what's happening. We've spent a ton of time working on ironing out the bugs and making the bridge more XMPP complaint. The major headlines are:
Support Matrix -> XMPP edits
Set XMPP user displayname in the room based on their nickname (thanks uhoreg for mucking in there)
Improve performance of Matrix -> XMPP gateway messages and joining
Improve support for multiple devices for XMPP users connected to the gateway
You can read about (and run!) the latest release over at https://github.com/matrix-org/matrix-bifrost/releases/tag/0.2.0-rc1.
Incidentally, if you've not yet, then try joining some rooms such as
#twim#[email protected]from XMPP and see it live!
*rainbum, as Mathijs prefers
Dept of Clients 📱
Hydrogen gained a settings panel this week with a better session backup UX and your end-to-end device information, which should make the manual verification easier. Messages with multiple lines are also rendered as such now, which makes a big difference in usability. The app also works offline again after session backup broke that. Apart from that, several smaller fixes also landed.
Also, image decryption is well on it's way with a prototype working. 🎉
Alexandre Franke reported:
The massive MR to switch to matrix-rust-sdk is still being reviewed and help is still welcome. We have been working on other stuff as well. Actually, since our last news piece for the release of 4.4, quite a lot happened (around 60 commits) that we haven’t reported here yet:
Users can now go to the room settings to toggle notifications for each room individually.
Rounded corners around everything to match the latest upstream design tweaks (in Adwaita, the official GNOME theme).
Many maintenance changes: several dependencies have been updated, cleanups in various places, tightened flatpak permissions for better sandboxing…
And that’s not all! Good progress has been made towards rendering
formatted_body. Hopefully that should be merged soon.
We released Element 1.7.10 on Tuesday with some high priority fixes:
Several bugs fixed for both all widgets as well as a few specific to Jitsi call widgets
Widgets are now working again in Safari 13.1 (regressed by 1.7.9)
Quite soon after that on Wednesday, Element Web 1.7.11-rc.1 made it's way to staging:
Improved state management for voice / video calls
Revamped pinned widget UI to support resizing and more flexibility
sorunome told us:
Fluffychat 0.20.0 is out! It should be available in fdroid, google play and on iOS soon!
Added translations: Arabic
Add ability to enable / disable emotes globally
Add ability to manage emote packs with different state keys
Add swipe to reply - Thanks @inexcode
Initial support for compiling to desktop
Initial snap metadata - Thanks @RAOF_47
Add latex parsing as per MSC2191 -
$tex$for inline and
Re-scale images in a separate isolate to prevent the UI from freezing
URLs without https:// now linkify
Parse all URIs, not just URLs
emails will linkify now
Make sure login to dendrite is working properly
Fix amoled / theme settings not always saving properly
Show device name in account information correctly
Fix tapping on aliases / room pills not always working
Link clicking in web not always working
Return message input field to previous state after editing message - Thanks @inexcode
perfect for university start. Finally I can write the thesis in the University matrix ;P
Element Android v1.0.9 is now available on the PlayStore. For the next release (1.0.10), we will optimize the performance (again!). We already have made some progress when sending a message to a room. We are now working on the crypto module and also we will probably upgrade the Realm database library, which seems more stable now. Besides that, we are still implementing the remaining features with the objective of getting a good feature parity with the other Element Matrix clients.
This week, we have been working to upgrade libs and tools to be compatible with Xcode 12.
We are making good progress to revive a kind of background sync so that a message appears quicker in the timeline when you tap on its notification. Authentication for widgets is still in progress.
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
Nheko now shows the filename of an image on hover. (Contributed by kamath_manu)
Nheko now shows the fontname in the font selection rendered using that font. This makes it easier to know, how the font will look, once you select it. (Contributed by lorendb)
Fixed a crash when closing Nheko. While this didn't really cause issues, since you were closing it anyway, it's just bad form to crash instead of exit properly.
Removed the membercache. Nheko used to load all members on startup and store them in memory. This made startup slower. Removing it sped up the start by a nice chunk and freed about 30MB of RAM on my system. One step closer to using reasonable amounts of RAM!
Fixed excessive clipping when rendering the timeline. This prevented all batching of text messages. Now it only clips the replied to message, which makes scrolling much smoother again!
Finally, some controversial change, which is currently in master but may be reverted at some point: Nheko now automatically forwards keys to verified devices, when they request the keys, without prompting you. While that can be toggled off in the settings, it currently defaults to on. This weakens backward secrecy of e2ee a bit, but it makes it possible to recover from e2ee issues much more easily. Currently I'd argue, that it is an acceptable tradeoff. It is very hard to verify room membership of users at any point in time but the current one and room membership is not verified end to end in any way, so you need to trust the server to provide you with the correct memberlist or you just send keys to verified users. While Nheko still sends keys to all members of a room, when creating the session, it only forwards your own keys to trusted users without prompting you. Currently I think this is an acceptable tradeoff, as opening a popup with "user x wants to have session y shared in room z" is unlikely to be understood by anyone properly either. I'd be glad to hear your opinions though!
That's it for this week, but next week will be interesting too. Lorendb has been hacking on profile support, allowing you to run multiple login sessions of Nheko in separate windows and some other UI features.
Dept of SDKs and Frameworks 🧰
In the past couple of weeks we implemented the last endpoint for the Federation
API. We are working on smoothing out some rough edges in the
ruma-federation-apicrate, like a few that @Timo addressed this past week, so it will be a little while
before it's completely finished.
We've also created a milestone to track implementation of Identity Service API,
the last Matrix API we have to complete.
Finally, we've created a new Matrix room focused on Ruma development,
kitsune told us:
Quotient 0.6.2 has been released, with a couple of minor bugfixes. This release is used as a foundation of Quaternion 0.0.9.5 beta that's also getting out today - with support of (proper Matrix subset of) HTML, rich text user links (like pills, only lighter), initial Markdown support (if you build with fresh enough Qt), reactions (thanks to Karel Kosek @krkk), navigation to earlier events (thanks to Roland Pallai @rpallai) and quite a few other improvements. To make this release Quaternion had to gain its own basic HTML parser and Matrix-to-Qt-to-Matrix converter, which is likely to end up being a separate micro-library, in the hope that it will be useful for other Matrix projects building on Qt (even non-Quotient ones). A separate call to translators - quite a few strings got updated, so please head to Quaternion project at Lokalise and push the numbers at least to 80%!
Dept of Events and Talks 🗣️
Three talks this week!
Matrix talk at Open Source Summit EU (virtual)
If you are visiting the OSS EU next week - come to the Matrix talk. 😉
Or join us at #welcome:osseu2020.fiksel.info !
dette er på utenlandsk
In august I held an introduction to and demo of matrix talk during a conference hosted by my local makerspace.
This week the talk was uploaded! (Norwegian) https://www.youtube.com/watch?v=s9Xd0Wg_XqA
AstriCon Plan (9) on building Omnichannel contact centers with Matrix (and other tech)
Jose Franco gave a great talk at AstriCon Plan (9) on building Omnichannel contact centers with Matrix, Asterisk, Kamailio and friends. You can see the video at https://youtu.be/7S6GZz8f91o?t=18558 and the talk details at https://astricon2020.sched.com/event/e0GA/blending-open-source-rtc-tools-to-build-an-omnichannel-contact-center
Dept of Interesting Projects 🛰️
Noteworthy (matrix powered distributed overlay networks via WireGuard)
balaa told us:
hey TWIM peeps! we’ve updated the README for our project Noteworthy (matrix powered distributed overlay networks via WireGuard) https://github.com/decentralabs/noteworthy - join us over in #noteworthy:tincan.community with questions / comments!
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!