Category – This Week in Matrix
245 posts tagged with "This Week in Matrix" (See all categories)

This Week in Matrix 2023-02-03

2023-02-03 — This Week in Matrix — uhoreg

Matrix Live

No Matrix Live today, but there will be a lot of Matrix content this weekend at FOSDEM in the Matrix devroom, and Matthew's main-track talk.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

dmr announces

I managed to find some time to commit lnav configuration files for Synapse this week. lnav is a log-viewing tool with too many bells and whistles for its own good. I particularly like it because it can interleave multiple log files by timestamp, and highlight log lines based on their severity. If you spend a lot of time looking at logs, these things can lower your blood pressure. Take a look if you think you'd find it useful.

Shay announces

Hello TWIM! It's another week and here at Synapse we released v1.76.0. The big news for this release is that faster joins are now enabled by default. It has arrived 🚀! In addition, some other notable features are:

  • Updated the default room version to v10
  • Added a set_displayname() method to the module API for setting a user's display name
  • Implemented support for MSC3890: Remotely silence local notifications
  • Implemented experimental support for MSC3930: Push rules for (MSC3381) Polls
  • Add index to improve performance of the /timestamp_to_event endpoint used for jumping to a specific date in the timeline of a room

and much more! You can read all about it here. Also, please note that the upgrade from 1.75 to 1.76 changes the account data replication streams in a backwards-incompatible manner. Server operators running a multi-worker deployment should consult the upgrade notes.

Dept of Clients 📱

Nheko (website)

Desktop client for Matrix using Qt and C++17.

Nico reports

Nheko

We did a lot of work on our markdown input this week. mauke finally fixed those pesky links with a closing parenthesis at the end from dropping that when linkified, without breaking links inside parentheses. Yes, it is still a regex and possibly outlawed in many civilized countries for having detrimental side-effects on society, but it works, so who am I to argue! Additionally we changed the newline behaviour (and fixed a bug related to line-breaks as well). A single line-break now corresponds to a line-break. You can find more about that decision here and here. You can opt out of that behaviour and other changes we do to the default cmark/commonmark behaviour using the new /cmark command. Speaking of other changes, we now support ||warning|spoiler|| as a way to enter spoilers, with the warning being optional as well as ~~text~~ for strike-through.

There is also now a workaround for Wayland users, who were bothered by stuck menus. This still needs to be fixed in Qt eventually, but in the meantime you can now close menus by clicking somewhere inside of Nheko thanks to a contribution by enigma9o7. Decodetalkers also made Nheko clean up notifications on exit and the fullscreen image overlay hide, when the save dialog is open. You can create DMs by pasting an mxid again now. Previously you needed to delete and re-enter the last character... The username completer should also now open around twice as fast and clicking notifications now once again restores Nheko from the tray. The last goodie was contributed by Malte. The invite dialog inside a room can now search for users you have a DM open or the server side userdirectory for suggestions.

Also, I am attending FOSDEM, so let's see if you can find me!

FluffyChat (website)

Krille reports

#fluffychat 1.9.0 has been released with some bugfixes, performance improvements and more Material You design. It now even uses the accent color on Ubuntu.

FluffyChat now is built with Flutter 3.7

  • Translated using Weblate (Czech) (Michal Bedáň)
  • Translated using Weblate (Czech) (grreby)
  • Translated using Weblate (Dutch) (Jelv)
  • Translated using Weblate (Estonian) (Priit Jõerüüt)
  • Translated using Weblate (Galician) (josé m)
  • Translated using Weblate (German) (Christian)
  • Translated using Weblate (German) (Vri 🌈)
  • Translated using Weblate (Indonesian) (Linerly)
  • Translated using Weblate (Korean) (Youngbin Han)
  • Translated using Weblate (Polish) (Wiktor)
  • Translated using Weblate (Turkish) (Oğuz Ersen)
  • Translated using Weblate (Ukrainian) (Ihor Hordiichuk)
  • chore: Change invite link textfield label (Krille)
  • chore: Remove unused dependency (Krille)
  • chore: Remove unused translations (Krille)
  • chore: Update Matrix SDK and refactor (Krille)
  • chore: Update dependencies (Krille)
  • chore: Update flutter_map (Krille)
  • chore: add integration tests (TheOneWithTheBraid)
  • chore: add integration tests for spaces (TheOneWithTheBraid)
  • design: More clear chat background and rounded popup menu (Krille)
  • design: Nicer navigationrail (Krille)
  • design: Upgrade to Flutter 3.7
  • feat: Bring back disabling the header bar on Linux desktop (q234rty)
  • feat: Nicer design for abandoned DM rooms (Christian Pauly)
  • fix: Archive (Krille)
  • fix: Shared preferences package for flutter 3.7 (Christian Pauly)
  • fix: permission of web builds (TheOneWithTheBraid)
  • fix: Notification Settings (Krille)
  • refactor: Migrate to Flutter 3.7.0 (Christian Pauly)
  • refactor: Same animations everywhere in app (Krille)
  • refactor: Stories header with futurebuilder (Krille)
  • refactor: disable some redundant tests (TheOneWithTheBraid)
  • style: Animate in out search results (Krille)
  • style: New modal bottom sheets (Krille)
  • style: Redesign public room bottomsheets (Krille)

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

Johannes Marbach says

Element Web/Desktop

  • Further progress on MSC3946 (Dynamic Room Predecessors), expecting to wrap the majority of work up next week
  • Continued progress on improving our packaging progress across macOS, Windows and Linux to simplify future releases
  • Stuck notifications increasingly turn into a problem. So we've adapted our roadmap to prioritize fixing them, starting with adding tools for easier debugging of the issue.
  • Even more news on notifications: We started implementing MSC3952 (intentional mentions) and continue to iterate on the design for a new settings page and defaults

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Ștefan says

Element iOS

  • This week the team has been preparing for FOSDEM. It’s on this weekend and there will be lots of exciting things happening so don’t miss out!
  • In Element X our focus has been on speed. We want the new app to be so fast you’ll blink and miss any loading. That’s being baked in right from the start and we’re really pleased with where we are today.
  • We’ve also been working on improving the polls and rich text editor features.

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

benoit says

Element Android

  • Our Android team has been preparing an Element X: Android demo for this week’s FOSDEM conference. There will be developer access available too so come along to the talk and check it out!
  • Polls and the rich text editor (labs) features have also been getting some love this week so keep a look out for those improvements.

Dept of Non Chat Clients 🎛️

imbev says

matrix-social

matrix-social is a social media client powered by Matrix.

  • Posts can now be viewed per-room
  • Commenting (replying) from matrix-social is now possible
  • Optimizations to binary size
  • We are now working on joining rooms

Preview matrix-social at https://imbev.codeberg.page/matrix-social/

All are welcome to join us at #matrix-social:matrix.org!

Cactus Comments (website)

Cactus Comments is a federated comment system for the web, based on the Matrix protocol.

JulianF reports

Today I set up Cactus Comments on my WriteFreely blog, and posted a detailed article about it: https://wrily.foad.me.uk/cactus-comments-in-writefreely. Thanks to the creators of the Cactus Comments integration in matrix-docker-ansible-deploy and the kind help of folks in the #cactus:cactus.chat room.

Dept of VoIP 🤙

Element Call (website)

Native Decentralised End-to-end Encrypted Group Calls in Matrix, as a standalone web app

MTRNord says

Matrix Call Multitrack recorder

Resulting from some past discussion of how matrix live may be improved, I did open https://github.com/vector-im/element-call/issues/789 to support multitrack recordings of participants. However, it turns out this can quite easily be solved using a bot:

Therefor https://git.nordgedanken.dev/mtrnord/matrix-call-multitrack-recorder has been created. This is an early alpha bot using matrix-nio which can participate in both legacy WebRTC matrix native calls and Element-Call style calls. Its purpose is to record each stream of a user to either a WAV or mp4 file.

However, since this is very early, it should be noted there currently exist some UX issues and some features are missing.

Feel free to give it a try or just join the Room: #matrix-call-multitrack-recorder:midnightthoughts.space

Many thanks to tulir for https://github.com/maubot/echortc which helped to get a basic MVP rather quickly.

Dept of SDKs and Frameworks 🧰

td [m] reports

Dart matrix sdk

This week the team released v0.16.0

This could sound more like a changelog, but we fixed a couple of voip issues last week and have been working actively on calls in general.

  • upgrading 1:1 audio calls to video calls is in review stage.
  • active speaker for group calls based on audioLevel is a thing in the sdk now.
  • we finally merged the expires_ts move to devices part in the event which fixes group calls with element.
  • attempt at fixing some glare cases
  • rejecting own call when needed, sending all ice server urls, tweaks in group call code to all on onboarding pages (turn off cam/mic before joining calls), etc.

Ittekimasu :3

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict reports

Just again a new version of Trixnity (v3.3.0):

features:

  • Support room upgrades. They are "invisible" so you don't need to do anything to support them, the timelines are just merged.
  • add return value to RoomService::sendMessage to abort or retry sending messages easier.

bugfixes:

  • Revert logging upgrade to stay compatible with logback-android
  • Remove experimental measureTime because it causes issues with other kotlin version than 1.7.22
  • fix missing usage of syncResponseBufferSize in getTimelineEventsFromNowOn.

matrix-rust-sdk (website)

Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM

ben says

Matrix Rust SDK

The last two weeks have all been under the rising star of FOSDEM this weekend and presenting the latest cool sh… stuff on Element-X. As such, the team has been busy—like really busy—improving the existing API for Sliding Sync and Timeline, adding fixes, like duplicate message prevention, various sliding sync internal fixes, timeline reset, fixes in the VecDiff generation or proper retries on decryption errors, and performance improvements, like defer loading tracked users or reducing the cold cache size and time and not the least adding support for tracing via OpenTelemetry.

Most profoundly sliding sync has been upgraded to the latest JSON schema with named views giving the team time to test that before shipping it to a wider audience post FOSDEM. In spirit of that, a first version of the sqlite-based crypto-store has also been merged.

👉 Wanna hack on matrix rust? Go check out our help wanted tagged issues and join our matrix channel at Matrix Rust SDK.

Dept of Bots 🤖

HER0 reports

flip-matrix-bot

The bot now publishes a iCalendar feed with all of the scheduled gaming events for the Friendly Linux Players community. Subscribe to events with your favorite calendar application here:
webcal://flip.earth/feed/events.ics

msirringhaus announces

A few years ago, I've written a small bot-api in Rust that used (and still uses) Fractals Matrix-implementation. Since that has been abandoned quite a while ago, I wanted to look into porting my crate to the matrix-rust-sdk. As it turns out, there wouldn't really be any point in doing so. The SDK can be used more or less directly. Which I've learned, by writing a small demo-bot.

This rather simple bot parses the exif-data of pictures that are posted, extracts the GPS-data (if available) and replies with a Matrix location-event for the image location. The plan was to do this with threads, but the SDK sadly doesn't support those. So good old replies it is. As a bonus, which turned out to be uglier than I thought, it'll also remove it's location-posts automatically, if the corresponding image gets removed. Configurable autojoin on invite and a command to leave are implemented as well.

Dept of Events and Talks 🗣️

Thib reports

A heads up that our FOSDEM devroom schedule was updated.

Dept of Ping

Dept of Ping will return next week

That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!

This Week in Matrix 2023-01-27

2023-01-27 — This Week in Matrix — Thib

Matrix Live

Dept of GSoC 🎓️

Thib reports

The Matrix Foundation is a candidate this year again to the GSoC programme. If you intend to mentor a student around your Matrix project, please ping me (@thib:ergaster.org) in the #gsoc:matrix.org room. Your project doesn't have to be set in stone yet: we need to have a good estimate of the number of mentors and projects applying before FOSDEM (by the end of next week).

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Shay announces

Well it's friday - which means (somehow) another week had gone by! Here at Synapse we have released v1.76.0rc2, with a host of new features and bugfixes. Of particular note is that as of this release, faster joins are on by default! This means that when joining a room for the first time, Synapse 1.76.0rc2 will request a partial join from the other server by default. Previously, server admins had to opt-in to this using an experimental config flag.

If you'd rather opt out of this feature for the time being you can use this setting

experimental:
    faster_joins: false

in your server config. Take it for a spin and let us know how it goes -- please file an issue here if you find anything out of the ordinary after joining a room.

In addition, this release updates the default room version to v10, adds support for push rules for Polls, and so much more. You can check out the release here.

Dendrite (website)

Second generation Matrix homeserver

Hyperbased in Hyperspace reports

Federate all the networks!

TL;DR: You can now run Dendrite inside the I2P network. Dendrite I2P Port Code and the binaries. The code and the binaries are also hosted on my I2P Site biehdc.i2p.

The last week i worked on getting Dendrite to work on the I2P Network. It makes use of the existing Pinecone infrastructure which gets enabled to dial on I2P with a small patch. This has the main advantage that servers will automatically discover each other if they share a node and you don't have to seek out others in the distributed network. I host a 24/7 Seednode for I2P right now. I have also put the work in to enable a landing page just like a monolith deployment would have and you can just browse to it. This hopefully increases the visibility too! However, it can also dial into the Clearnet too. It is hardcoded to the Seednode run by the matrix and dendrite developers themselves and it is disabled by default, but can be enabled with a command line switch. It effectively is making a bridge between the I2P Network and Clearnet. In order to bridge the gap between Pinecone based servers and normal matrix servers as well, I have also made a very simple matrix2matrix bridge which just connects to 2 (or more) Homeservers and exchanges the messages between 2 (or more) rooms. It also supports bridging and not-bridging files of any kind. You could add other networks too as long as you can tie them together with Pinecone. For example, the library i use to connect to I2P also supports Tor and it can be added to function just like the I2P implementation. All you need is something that exposes a HTTP Client and a listener. My personal goal is to make matrix independent from domain registrars, open ports, static IP addresses and anything that makes self hosting harder than it should be and thankfully all the software we need is already written, it just takes someone to tie it together.

Dept of Clients 📱

FluffyChat (website)

Krille announces

I have updated FluffyChat to the new Flutter version 3.7 which improves the performance and adds some more Material 3 components. Especially the new toggles look quite nice

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

Danielle says

This week the web team have been working on:

  • MSC3946 Dynamic Room Predecessors
  • Continuing to improve the release & packaging processes
  • Starting work on a design system
  • Notifications improvements; including a design for a new settings page and defaults
  • And if that wasn’t enough… There’s been lots of bug fixes, especially in voice broadcasts

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Ștefan announces

  • ElementX is continuing to make great strides as we now have:
    • state event rendering in both the timeline and room list
    • user display names in the room list and emotes
    • a mechanism for marking rooms as read on enter and exit (as a start)
    • improved timestamps on the room list last messages
    • a completely redesigned image loading mechanism
    • sliding sync room subscriptions on enter
    • design tweaks and improvements throughout the app
    • and a ton of performance improvements and fixes
  • Meanwhile, Element 1.9.17 is ready to be released into the world
    • this version includes new formatting options in the Rich Text Editor (Labs):
      • you can now create lists, both bullet points and numbers, the choice is yours!
      • additionally, support for inserting quotes and better code formatting is available
    • and the Voice Broadcast feature (Labs) is more reliable and saw many bug fixes

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

benoit announces

  • Element 1.5.22 is ready and with some exciting feature updates and bug fixes, including:

    • Updates to polls and rendering
    • An improved Rich Text Editor experience (find it in Labs)
    • Improvements to the new voice broadcast feature
  • In Element X on Android we’re working on project setup and foundations, including automatic updates for the Rust SDK and custom themes.

Dept of Non Chat Clients 🎛️

[M]Url

A curl like tool but just for matrix

saces says

Working with curl and matrix - especially in constrained environments like read only containers - drove me nuts. Nuts enough to build my own version of curl that fits my needs.

main differences:

  • return code 0 means its the data you asked for
  • HTTP 429 (Rate limit) is retried by default, all other 'soft failures' fail
  • pass token via mxpassfile

Its still some work left, but things in the readme should work.

Source: https://gitlab.com/mb-saces/murl

Room: #murl:saces.de

nheko-krunner (website)

A KRunner plugin to list joined rooms and possibly other things from nheko.

LorenDB reports

nheko-krunner 0.2.0

nheko-krunner has had a new release! 0.2.0 brings support for the latest version of nheko, but it also adds a new feature: the KRunner plugin can be configured from KDE's System Settings app! Currently, the only configuration option is to change whether you are shown unread counts for rooms in the search results, but I can see this expanding in the future to add other useful configurations

If you are using openSUSE Tumbleweed, you should already have the update available to install!

Dept of SDKs and Frameworks 🧰

Trinity

Matrix bots in Rust and WebAssembly. If you're interested to follow the project, feel free to join #trinity:delire.party or get the code on Github.

bnjbvr says

This week, ahal contributed the linkify module, which implements a generic way to create substitutions based on regular expressions and their matches in Matrix messages.

For instance, it's possible to create a substitution so that when someone writes "issue #21" in the room, the bot will answer with "https://github.com/bnjbvr/trinity/issues/21". And since it's configurable at runtime, you can create such substitutions with any format you want, create automated links as you'd like, and configure it per Matrix channel. This opens up a new world of possibilities! Also this generalizes what this bot's predecessor, botzilla, did with 3 different commands for expanding Github / Gitlab / Bugzilla links, so Trinity has now reached feature parity with it! Woohoo 🥳

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict says

Trixnity 3.2.0 is released.

performance improvements and FOSDEM 23

The most exciting change regarding more performance are asynchronous database transactions. This means that the cache stores values not only for reading from, but also for writing to the database. So every database transaction is executed asynchronously to the caller who changes values. This allows really fast sync processing even on slow systems like smartphones. This also removes delays in the UI, because changes are immediately applied (on the cache level). This was a problem with databases which don't allow parallel write transactions (like realm). This problem also seems to appear in Element Android and its realm database (at least with my huge account). Despite that, I've made some other improvements regarding the cache and sync processing.

I also added a simple benchmark to see how good the improvements are. The test creates 50 encrypted rooms and sends 10 messages to each room. The database is in-memory, but writing is simulated with a 10ms and reading with 5ms delay. Before the optimizations the sync needed 20s to be processed. After the optimizations it needed 5s. So 400% faster. In practice, with my relatively huge matrix account (200+ rooms) the initial sync took 2.5s (after waiting 30s for the server response) on the desktop. But this is just a teaser. If you want to know more, you'll have to wait another week for my Trixnity talk on FOSDEM 23. Contact me if you have topics that should definitely be included in the talk. 30 min are unfortunately filled quickly.

IndexedDB support

I've added IndexedDB as a new database and media backend for web. Really cool to see Trixnity in the web with a persistent database.

fallback keys and room key requests

Fallback keys are now supported by Trixnity. Furthermore room keys requests are answered and room keys are requested (when key backup is disabled) from own verified devices.

TL;DR

features/improvements:

  • add async transactions
  • add IndexedDB as database and media backend
  • support olm fallback keys
  • key sharing (room key requests)
  • add usersTyping to UserService
  • use one large transaction for sync processing
  • add SSO login type

breaking changes:

  • remove sqldelight as database
  • API change in Timeline to get more information from loadBefore and loadAfter

bug fixes:

  • don't calculate room name, when room summary did not change
  • PBKDF2 salt should not be decoded as base64

Dept of Bots 🤖

flip-matrix-bot

HER0 says

I created flip-matrix-bot to allow anyone in my inclusive Linux gaming community (#community:flip.earth) to schedule gaming events through a CLI-like chat interface. This recently reached a minimum viable state, and I'm excited to finally have community driven event hosting! This was made using the matrix-rust-sdk.

While this currently has some hardcoded references to the FLiP community, and so has limited usefulness outside of it at the moment, anyone who is interested in the bot is welcome to join #flip:flip.earth to use it in production, or #bots:flip.earth to see it being tested.

Dept of Events and Talks 🗣️

FOSDEM

Thib announces

The Matrix Foundation and Community will gather at FOSDEM on February 5, in the morning in our in-person devroom, and in the afternoon in our online devroom. We have a great line-up with exciting talks on Sunday, and Matthew will tell you How we're making Matrix go voom in a main track talk, holding the promise we made this summer.

We will also have a stand and we can't wait to see you there in person if you have the opportunity to come!

HarHarLinks says

#fosdem23-community-meetup:matrix.org

This is a quick reminder about the matrix community meetup/barcamp next TWIMdayFriday February 3 starting 13:00 local time (in the FOSDEM fringe). We meet at HSBXL who are kindly offering their space for us to use (how to get there, how to get in). There will be food and drinks thanks to our sponsors.

A note from HSBXL:

I would recommend to dress warm. HSBXL is located in an old industrial building, therefore the location is not especially well isolated. We will fire up the heaters but warm close are still recommended.

Find all info here and join #fosdem23-community-meetup:matrix.org if you are thinking about attending.

See you in Brussels!

Matrix User Meetup Berlin

saces says

Next Matrix user meetup 1.2.2023, 8 pm @ c-base

Meet other matrix users, chat about Matrix, the rest, and everything else, discuss your Matrix ideas, sign each other in persona, and maybe spice the evening with a good mate or beer.

Every first Wednesday of the month in the c-base at 8pm ('til the next pandemic).

Matrix room: #mumb:c-base.org

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.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1nognu.de302
2joeth.uk325
3trygve.me354.5
4keks.club393.5
5oswald-cloud.de402
6shortestpath.dev422
7dendrite.babel.sh425.5
8rom4nik.pl469.5
9veri.dev560
10matrix.org577

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1babel.sh98.5
2dendrite.babel.sh183
3matrix.org278
4midnightthoughts.space335
5dendrite.kootstra.frl538
6grin.hu590
7willian.wang611
8forlorn.day726
9cringe.chat734
10zemos.net900.5

That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!

This Week in Matrix 2023-01-20

2023-01-20 — This Week in Matrix — Thib

Matrix Live

Unfortunately no Matrix Live this week!

Dept of Spec 📜

Andrew Morgan (anoa) says

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.

MSC Status

New MSCs:

  • There were no new MSCs this week.

MSCs in Final Comment Period:

Merged MSCs:

  • No MSCs were merged this week.

Spec Updates

This week and the week afterwards, the Spec Core Team are mostly focused on improvements to Matrix that we'd like to show off at FOSDEM 2023 this year! That consists of MSCs related to Faster Room Joins (MSC3943 among others) and Extensible Events (MSC1767).

Random MSC of the Week

The random MSC of the week is... MSC3230: Spaces top level order!

This defines an algorithm and a data structure that can be used to order one's top-level list of Spaces and have that order sync across all of their clients. Rooms and spaces within a Space continue to have their order defined by an order key (and failing that, the origin_server_ts field) in the corresponding m.space.child event of their parent's Space's state.

I won't get into the details of the algorithm here (or its criticisms), but feel free to jump into the MSC and take a look!

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

dmr says

This week the Synapse team has been finishing a sprint on the faster joins project. As a reminder, this is a year-long project to make Synapse quickly join a new room by lazily loading some of its state history in the background. It is particularly needed when joining large rooms with lots of members: joining such rooms is bottlenecked on fetching, serialising, deserialising and validating a huge list of room member events. While the core logic and machinery has been in place for some time now, this sprint has concentrated on two pain points:

  • making faster joins to work on Synapse installations using workers, and
  • remaining edge cases needed for a good client UX.

Call for testers

We hope to ship the first iteration of faster joins support in Synapse 1.76.0. The release candidate 1.76.0rc1 will be released on Tuesday 24th Jan. We'd like to encourage homeserver administrators to try it out before the release proper. Once you've upgraded, try joining rooms which no-one else on your server is joined to. We graciously welcome any bug reports---please file GitHub issues if you find anything out of the ordinary after joining a room.

Synapse 1.75

We released Synapse 1.75 (see blog) this week. Its highlights include:

plus the usual selection of bugfixes, internal improvements and work on the faster joins project.

Our continued thanks to our community of admins, testers, contributors and end-users.

Dendrite (website)

Second generation Matrix homeserver

Till says

This week we've released two versions of Dendrite, 0.11.0 being the most recent one, and probably most exciting one, given we now reached 100% server-server parity to Synapse, with client-server parity at 93%!

Version 0.11.0 today:

Features

  • Added /_dendrite/admin/purgeRoom/{roomID} to clean up the database
  • The default room version was updated to 10 (contributed by FSG-Cat)

Fixes

  • The last three missing server-server Sytests - bringing us to 100% server-server Synapse parity (93% for client-server) 🎉
  • An oversight in the create-config binary, which now correctly sets the media path if specified (contributed by BieHDC)
  • The Helm chart now uses the $.Chart.AppVersion as the default image version to pull, with the possibility to override it (contributed by genofire)

Version 0.10.9 on Tuesday:

Features

  • Stale device lists are now cleaned up on startup, removing entries for users the server doesn't share a room with anymore
  • Dendrite now has its own Helm chart
  • Guest access is now handled correctly (disallow joins, kick guests on revocation of guest access, as well as over federation)

Fixes

  • Push rules have seen several tweaks and fixes, which should, for example, fix notifications for m.receipt
  • Outgoing presence will now correctly be sent to newly joined hosts
  • Fixes the /_dendrite/admin/resetPassword/{userID} admin endpoint to use the correct variable
  • Federated backfilling for medium/large rooms has been fixed
  • /login causing wrong device list updates has been resolved
  • /sync should now return the correct room summary heroes
  • The default config options for recaptcha_sitekey_class and recaptcha_form_field are now set correctly
  • /messages now omits empty state to be more spec compliant (contributed by handlerug)
  • /sync has been optimised to only query state events for history visibility if they are really needed

If you have a Dendrite homeserver, staying up-to-date is highly recommended so please upgrade when you can. Otherwise, if you want to play with Dendrite without having to set up your own infrastructure, the dendrite.matrix.org homeserver is open for registration (upon completion of a CAPTCHA, so you may need to register using Element Web).

As always, please feel free to join us in #dendrite:matrix.org for related discussion.

Dept of Bridges 🌉

matrix-hookshot (website)

A multi purpose multi platform bridge, formerly known as matrix-github

Half-Shot reports

Hookshot 2.7.0

Howdy! This release features one change, but an important change: We've finally fixed the poor UX around adding new connections in rooms via widgets. Up until today, the project selector input was quite poor and flaked out a lot. Missing search results, clipping dropdowns or duplicated entries were a common occurrence.

The new input field features a much improved look, so now you see the project name, description and avatar when searching across GitHub, GitLab and JIRA. The search time and accuracy should be much improved too.

If you've updated to the previous releases, 2.6.0,1, then now is a good time to do so because those releases contained a whole range of cool new stuff!

Check out 2.7.0!

Dept of Clients 📱

Nheko (website)

Desktop client for Matrix using Qt and C++17.

red_sky (nheko.im) announces

Nheko has another release already. Shortly after releasing v0.11.0, we discovered a CPU utilization issue that causes nheko to use excessive CPU, even when idle. We have released v0.11.1 to address this issue and also add a failure state for pending sent messages (to help avoid them getting stuck in the queue). Packages are available at https://github.com/Nheko-Reborn/nheko/releases/tag/v0.11.1 and on flathub for the flatpak users.

FluffyChat (website)

Krille says

I wrote a blog article about updomcing UX changes with DM rooms in FluffyChat here: https://ko-fi.com/post/UX-in-the-matrix--How-to-handle-direct-messa-M4M6HVHU6?justpublished=true&alias=UX-in-the-matrix--How-to-handle-direct-messa-M4M6HVHU6

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

benoit says

We are making big progress to set up ElementX. The new architecture of the project has land to develop, and we are making the final cleanup. Next steps will be to integrate the Rust Sdk in a more professional way. For now it’s an AAR built manually and copied to the project. We are also writing documentation to help onboarding developers on this project!

Dept of SDKs and Frameworks 🧰

matrix-rust-sdk (website)

Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM

ben says

First and foremost: UniFFI async is all done and submitted for review 🎉 and first responses are pretty positive. Discussion has revealed some unlikely but possible undefined behavior that needs to be addressed and more review is needed. But overall, we are pretty confident that this will land soon. 🚀

Where there is light, there is shadow: When trying to integrate the community sqlite db backend we ran into a terrible bug in the underlying library that led to eventually having to abandon that port and go with a fresh implementation based on a different library - we are confident to show something, at least for crypto-db, fairly soon. Talking about crypto, aside from a few smaller improvements the JS bindings on top have gotten some typing improvements this week, too.

Timeline has support for state events now, too.

On Sliding sync we are looking at stabilization (tracking issue) and optimizing for time-to-first-usage ahead of FOSDEM and getting a first iteration into the hands of people out there as part of Element-X. It’s a painstaking process with plenty of small fixes and improvements on all parts. Through that and debugging on the interaction with the higher layers we were already able to shave off 900ms at cold-start-display-time, with more to come and other fixes, like logging improvements, done along the way.

️👉 Wanna hack on matrix rust? Go check out our help wanted tagged issues and join our matrix channel at Matrix Rust SDK.

Dept of Ops 🛠

jaywink reports

Matrix-Alertmanager, a bot to relay Alertmanager webhooks to Matrix rooms, got some new releases recently (latest v0.7.0). Basic auth is now supported for authentication and the Docker image size has been reduced by a large factor.

https://github.com/jaywink/matrix-alertmanager

Dept of Bots 🤖

matrixfy (website)

VaiTon says

Greetings, fellow music lovers (and matrix enjoyers)! I had a brilliant idea whilst lounging on my couch, stuffing my face with pizza, and realized that I was too darn lazy to keep opening Spotify every time I want to skip a song. And lo and behold, I discovered that there was no way to command my Spotify account from the comfort of my Matrix room. So, I decided to create a bot to do the job for me (how convenient, right?).

It's currently in its alpha state, but any contributions are welcome, especially if you're a coding wizard.

To use it, all you need is a bot account on your favorite homeserver and a bit of setup magic. Check out the GitHub link for more information: https://github.com/VaiTon/matrixfy

Dept of Events and Talks 🗣️

FOSDEM 2023 Matrix Community Meetup (matrix room)

HarHarLinks announces

Are you as excited for FOSDEM 2023 as we are? Do you want even more Matrix programming? (hehe)

Join us for our Matrix meetup and BarCamp at HSBXL (how to get there, how to get in) on Friday (3. February) before FOSDEM starting 13:00 (1 pm) local time (CET) until the beer tasting starts in the evening. Thanks to our sponsors, we will have Pizza 🍕 and drinks 🍻!

Find all the info here and join #fosdem23-community-meetup:matrix.org to stay updated and related discussion.

See you there!

Dept of Interesting Projects 🛰️

bcorn says

Hello everyone! I’m a CS Ph.D. student at the University of Washington. My team is studying users’ privacy concerns when reporting unwanted messages on encrypted messaging platforms (e.g., WhatsApp, Signal, Matrix). We have already talked with 14 E2EE users but near the end of our project, we would to understand how community moderators actually moderate their communities. You can learn more about the study here (https://homes.cs.washington.edu/~leijiew/projects/privacy-of-reporting.html). If anyone who has moderation experience is interested to participate in our one-hour online interview study, please feel free to DM me on Matrix. We can use any preferred medium you like (such as audio calls or texting).

Dept of Guides 🧭

A guide on double-bridging a Matrix room with Signal and Whatsapp (website)

Ninananana announces

Hi everyone!

Some time ago, @james:ninasstuff.xyz and I became curious about using Matrix to bring together a split group of friends, of which half was on Signal and another half on Whatsapp. We knew that double bridging a Matrix room was possible, but we couldn't find a hands-on guide to do so. Therefore, we decided to write our own :)

Presenting it to you: How to unite Signal and WhatsApp groups using Matrix. Hopefully some of you will find it useful!

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.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1nognu.de342
2willy.club352
3skladka.net437.5
4trygve.me495
5rimfaxe.net545
6wcore.org578
7mindlesstux.com694
8samlord.me915
9rom4nik.pl1056
10bgme.me1172.5

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1dendrite.matrix.org181
2dendrite.kootstra.frl304
3dendrite.s3cr3t.me395.5
4cringe.chat535
5rustybever.be572.5
6frai.se1353
7dendrite.beckmeyer.us1865
8evilcyberhacker.net4257

That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates! And as always, the Matrix.org Foundation can only work with everyone playing fair game. If you can afford it, please consider donating via donorbox (individuals) or becoming a member organisation of the Matrix.org Foundation to support the core team behind Matrix.

This Week in Matrix 2023-01-13

2023-01-13 — This Week in Matrix — Thib

Matrix Live

Dept of Status of Matrix 🌡️

Dandellion announces

Back in July I started a discussion on wikidata for adding a matrix space property, after much discussion in the wikidata community (lead mostly by tgr) we instead landed on a Matrix room property. This now enables slightly more accurate semantics when describing matrix rooms belonging to organizations, projects, and people on wikidata.

Wikidata is a knowledge base available under a free license and using standard machine-parsable data to add information to what is known as the "semantic web", this allows querying for information like for example: Organizations with matrix rooms

As the rest of wikimedia's projects it's open for contributions!

Dept of Spec 📜

Andrew Morgan (anoa) announces

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.

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Merged MSCs:

Closed MSCs:

Spec Updates

As you can tell from the above MSC list, Extensible Events continues to charge forwards, with Travis working busily away at replicating all of the existing event functionality (plus new functionality - image albums anyone?) in a world containing Extensible Events. As always, take a look at the core MSC (MSC1767) for a background on what Extensible Events is, and why it's so exciting.

This week has also seen room version 10 become the default recommended room version in the spec! As a reminder, v10 brings the ability to have a room that's both knockable and restricted at once, as well as more strictly enforces the types of power level values.

Otherwise we've seen lots of movement in other areas of the spec. Expect to see some work done around push rules (which have historically been rather complicated and fiddly...) and notifications in the days to come.

Random MSC of the Week

The random MSC of the week is... MSC3779: "Owned" State Events!

I remember this MSC fondly. It was originally born out of MSC3489's need to allow any user in the room to send m.beacon_info state events. This can easily be achieved today by lowering the required power level of m.beacon_info to the default user level. However, you then run into the issue of any user being able to edit any other user's m.beacon_info event!

Thus this MSC attempts to modify the state events permission model so that users can "own" certain state events that they send. We already somewhat have this functionality - if you put your Matrix ID as the state ID for any state event, only you or users with a power level higher than you can edit it.

Sadly this little trick (which we use for m.room.member events) doesn't work in the case of live location sharing, as the feature demands the ability to share location from multiple devices at once. Hence, trying to send two m.beacon_info events with the same state key would overwrite each other.

This MSC attempts to expand the functionality by modifying the definition so that a user "owns" a state event if the state key starts with their Matrix ID. Problem solved... for the most part!

Do check out the MSC if you have some use cases in mind that would benefit from something like this.

Dept of Servers 🏢

Synapse (website)

Synapse is a Matrix homeserver implementation developed by the matrix.org core team

Shay says

A new year, more improvements to Synapse! We are back at work and have released Synapse v1.75.0rc2, with a host of features, bugfixes and internal changes to make Synapse faster and more stable. Some notable changes are:

  • Experimental support for MSC3391 (removing account data)
  • Support RFC7636 Proof Key for Code Exchange for OAuth single sign-on
  • Fixed a bug introduced in Synapse 1.70.0 which could cause spurious UNIQUE constraint failed errors in the rotate_notifs background job
  • Removed the unspecced device field from /pushrules responses
  • Declared support for Python 3.11

And much more! If you'd like to learn more, head on over to https://github.com/matrix-org/synapse/releases and take a look.

Dept of Bridges 🌉

matrix-hookshot (website)

A multi purpose multi platform bridge, formerly known as matrix-github

Half-Shot says

Hookshot 2.6.0

Evenings greetings! It's been a while since we've done a Hookshot release, so this one is pretty large. We've got two major features this time around, Encrypted Room Support and Service Bots. The former now allows you to invite the hookshot bot to encrypted rooms and issue commands to it as normal, it should work entirely transparently. It currently requires a homeserver with MSC3202 support, such as Synapse. One final note is that it's extremely experimental and beta-y, so please do not run this on your production instances or it might format your cats. However, plaese do report all your findings to us. We love fan mail 📧

Service bots is another great feature that now allows you to split hookshot into several different bots, so you can have a GitHub bot, a GitLab bot, a JIRA bot and so on. It's extremely flexible, so please have a go and let us know what you think.

You can find this release at https://github.com/matrix-org/matrix-hookshot/releases/tag/2.6.0, or by doing docker pull halfshot/matrix-hookshot:2.6.0.

Finally, the highlights are:

  • Add support for end-to-bridge encryption via MSC3202. (#299)

  • Add support for additional bot users called "service bots" which handle a particular connection type, so that different services can be used through different bot users. (#573)

  • Add new GitHubRepo connection config setting workflowRun.workflows to filter run reports by workflow name. (#588)

  • Parent projects are now taken into account when calculating a user's access level to a GitLab project. (#539)

  • Ensure bridge treats published and drafted GitHub releases as different events. (#582)

  • Remove support for Pantalaimon-based encryption. (#299)

  • Increase maximum size of incoming webhook payload from 100kb to 10mb. (#606)

Dept of Clients 📱

Nheko (website)

Desktop client for Matrix using Qt and C++17.

Nico says

You know the custom of having a cheesy goal for the next year? Well, I had Raclette for new years, so my only goal was to have at least one Nheko release! And for that reason and to get all the planned things out of the way for this year, it is my pleasure to announce Nheko 0.11.0!

It is packed with contributions and translations from way too many people for me to count on one hand! You can find it eventually in all the usual places, for example our releases list: https://github.com/Nheko-Reborn/nheko/releases/tag/v0.11.0

If you hate clicking links, here is a small spoiler of some of the ingredients (apart from the cheese):

Highlights

  • Search in your timeline 🔍
    • Works in encrypted rooms.
    • Search is entirely local.
    • It might be a bit slow on some systems, since it needs to paginate the room to search instead of relying on the server.
  • Pushrule support! 🫸🫷
    • Notifications should now be faster and not rely on the server.
    • Notifications should work properly in encrypted rooms.
    • MSC3664 is supported for pushrules for reply (needs server support).
    • Mentions get highlighted in the timeline.
    • Decrypting notifications can be disabled for improved privacy.
  • Threads 🧵
    • Threads are a simple way to structure large rooms.
    • Start a new thread from any event.
    • Focus on a specific thread by clicking on the colored thread button next to any event from this thread.
    • Replies automatically land inside the thread.

Features

  • Remember where you left off using the new unread indicator! ---
  • Navigate to space when selected in quick switcher or via link.
  • (Re-)Add an AppImage build. (Zhymabek Roman)
  • Render and send confetti! 🎉 (LorenDB)
  • Focus text field on most key presses.
  • Show link to next room for tombstone events.
  • macOS: Only play notification sound when pushrule says so.
  • macOS: Builds for Apple Silicon.
  • macOS: Allow quick replies from notifications.
  • Completer for /commands.
  • Allow opening room settings from room list. (LorenDB)
  • Allow setting the status message via the dbus API. (LorenDB)
  • Allow swapping Enter and Shift-Enter. (LordMZTE)
  • Preliminary support for VoIP v1. (Rohit)
  • Allow applying permission changes in spaces recursively.
  • Allow modifying permissions of users not in the room.

Improvements

  • Prompt before deleting the database when the error could be resolved by the user.
  • Improve logging in particular for sync or registration errors.
  • Speedup quick switcher.
  • Prune image cache in the background.
  • Store all secrets encrypted in the database (apart from the pickle).
  • Speedup fetching olm sessions from the database.
  • Increase database resiliency at the cost of a lot of performance.
  • Rename spaces to communities.
  • Handle some rate limiting better in some cases.
  • More fine grained control over logging. (Forest)

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

kittykat reports

  • You can try out the upcoming release on staging.element.io! Threads is now on by default, so take it for a spin
  • Meanwhile, we’ve made some improvements to the polls dialog, including better scaling

In labs (you can enable labs features in settings on develop.element.io or on Nightly):

  • We’ve added more features to the rich text editor, including support for lists

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Ștefan says

  • Welcome to 2023, a new year, a new you and a new version of Element for iOS! This upcoming release includes many small changes and bug fixes, the highlights of which are:
    • You can now create links and code blocks with the Rich Text Editor.
    • The final results of a Poll will be shown when it ends so you don’t need to scroll back to find them.
    • Both Threads and Voice Broadcasts have been improved and are more reliable.
  • Meanwhile ElementX is slowly making its way towards a public appearance:
    • We have improved how we handle multiple sliding sync windows and implicitly the room list
    • Better room message backpagination
    • Improved video playback and timeline media handling
    • And it’s all running on the latest version of the RustSDK which brings a slew of bug fixes too

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

benoit announces

  • Element Android 1.5.18 is now full prod, and 1.5.20 should follow at the beginning of next week. Threads are now enabled by default. We are now working to be able to display all the polls of a room. Also the RichTextEditor is getting more and more features. Do not hesitate to give it a try after enabling it from the labs!
  • On ElementX, we are making progress to set up the global architecture of the project.

Dept of SDKs and Frameworks 🧰

matrix-rust-sdk (website)

Next-gen crypto-included SDK for developing Clients, Bots and Appservices; written in Rust with bindings for Node, Swift and WASM

ben reports

Even though the end of the year is usually a quiet time, big steps forward have been made in the last couple of weeks on many important areas of the rust SDK.

With Sliding Sync being tried out in Element-X a few more bugs and edge-case scenarios have been uncovered, where it doesn’t play well yet. For example resending the correct extension settings on session restart including to-device-tokens, invalidation indexes, or incorrectly skipping to-device processing and various other smaller fixes. The latter PR also contains a first set of integration-tests running testing the SDK against synapse and the sliding-sync-proxy. We intend to expand on that and include it in the CI as soon as github actions are unblocked for it.

Similar has been done on the Timeline feature, with a better more flexible timeline pagination implementation, a new virtual loading indicator item, improved logging and date dividers and read markers. All good stuff, making it easier to implement a useful chat UI on top of it.

On async UniFFI we see the same picture: with Swift, Kotlin and Python now executing rust futures as well as handling their error results properly. And time couldn’t be any better as we can hear the creaking of the blocking-runtime we currently have under the hood in Element-X and it is starting to show the limits of what we can implement in a useful manner. We are confident we can start experimenting with it in live apps fairly soon.

️👉 Wanna hack on matrix rust? Go check out our help wanted tagged issues and join our matrix channel at Matrix Rust SDK. join our matrix channel at Matrix Rust SDK.

libQuotient (website)

A Qt5 library to write cross-platform clients for Matrix

kitsune reports

It didn't take long for the first bugfix release in libQuotient 0.7.x to come out - meet libQuotient 0.7.1! Now the library actually compiles with E2EE on Windows, correctly exposes QtKeychain dependency to the clients, and can handle SSO even in the presence of proxies. Read all of it (delightfully short, after a long read of 0.7.0 release notes) at the usual place.

Dept of Ops 🛠

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi announces

Thanks to Cody Neiman's efforts, matrix-docker-ansible-deploy now supports bridging to Slack via the mautrix-slack bridge. See our Setting up Mautrix Slack bridging documentation page for getting started.

The playbook still retains Slack bridging via matrix-appservice-slack and mx-puppet-slack. Playbook users are free to use the bridge that serves them better, or even all three of them (for different users and use-cases).

Slavi says

Thanks to @bertybuttface, matrix-docker-ansible-deploy can now help you set up matrix-chatgpt-bot - a bot through which you can talk to the ChatGPT model.

Dept of Events and Talks 🗣️

Matrix Salon Podcast (German)

jaller94 announces

Meet Kim (aka HarHarLinks) who learned about Matrix in 2017 while studying. He's now managing Matrix projects professionally and attends conferences about the protocol and other open source software.

Learn about him and how you could land a Matrix job. See you at #FOSDEM2023!

Episode link: https://anchor.fm/matrix-podcast0/episodes/Kim---Vor-der-FOSDEM-2023-e1teh6l Mastodon post: https://mastodontech.de/@jaller94/109682609755003775

Dept of Interesting Projects 🛰️

matrix-social

imbev reports

matrix-social is a social media client powered by Matrix.

  • Posts (messages) can be sent
  • Redaction of upvotes/downvotes is now possible
  • Several bugs are fixed
  • We're currently working on per-room views and sending replies

Preview matrix-social at https://imbev.codeberg.page/matrix-social/

All are welcome to join us at #matrix-social:matrix.org!

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.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1beeper.com269
2nognu.de274
3plocki.org345.5
4dendrite.babel.sh434.5
5farafin.de450
6babel1.eu455
7trygve.me456
8alemann.dev516.5
9wcore.org569
10rom4nik.pl602

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1babel.sh109
2rcp.tf205
3dendrite.babel.sh254
4dendrite.kootstra.frl275
5rustybever.be377.5
6dendrite.s3cr3t.me401.5
7cringe.chat990
8frai.se48769

That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!

This Week in Matrix 2023-01-06

2023-01-06 — This Week in Matrix — Thib

Matrix Live

Dept of Status of Matrix 🌡️

Matrix Community Year In Review 2022

Nico says

Since the last few official Matrix holiday updates didn't mention as many of the cool community projects as I would have liked, I tried to work with the community to publish a community side review of 2022 as well as possibly some small teasers of what 2023 will bring. There are a lot of very varied updates, since everyone seems to have tackled the challenge differently, but I hope you you enjoy the result as much as I did: https://blog.neko.dev/posts/matrix-year-in-review-2022.html

A few days later we also published the same blog post on matrix.org, with a few typo fixes and cleanups: https://matrix.org/blog/2023/01/03/matrix-community-year-in-review-2022

This was a bit shot notice, so I would like to extend my gratitude to everyone who contributed and took some time in probably one of the busiest periods in a year! For the same reason, I hope you can excuse if one of your favourite projects is missing. If you have anything that is sorely missing, feel free to reach out in #year-in-2022:neko.dev and maybe I can amend the blog post.

Have a great 2023 everyone!

Dept of Spec 📜

Andrew Morgan (anoa) says

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.

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

Merged MSCs:

Spec Updates

After a lull from the holiday period, work has continued on different parts of the spec. MSC3706 has merged, which furthers the spec side of the work to make joining rooms faster in Matrix (see MSC3902 for the overview).

MSC3938 has also been merged to the spec. The proposal removes a deprecated keyId field and cleans up the endpoint by disallowing trailing slashes.

Random MSC of the Week

The random MSC of the week is... MSC3885: Sliding Sync Extension: To-Device messages!

Sliding Sync (MSC3575) is the next generation of sync - how Matrix clients receive new data from their homeserver. The spec side of the feature has been designed to be modular, with different extensions of spec provided different functionality. MSC3885 is one of those extensions, and defines how To-Device Messages (how different user devices talk directly to each other) would be requested by a Matrix client from the homeserver.

This proposal doesn't appear to have had too much review from the community yet - so feel free to check it out if faster Matrix clients appeal to you!

Dept of Clients 📱

Neochat (website)

A client for matrix, the decentralized communication protocol

nvrwhere reports

So the big new this week is that Neochat is now available on the Microsoft store! This version also has the new end-to-end encryption activated for anyone who wants to try it out.

Searching for messages in rooms was added and the room settings also gained missing features including modifying user permissions, setting the join rule to knock and upgrading the room version.

There was also a ton of smaller improvements to the UI including improving the room information drawer layout and a compact mode for the room list view.

Hydrogen (website)

Hydrogen is a lightweight matrix client with legacy and mobile browser support

Bruno says

We started working on group call support again this week! Here's a little preview of a call between Element Call and Hydrogen on desktop and Android, hoping we can release it soon.

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

Fеnикs says

Element-web client on IPFS

It has been a while since last time anyone announced their effort to host (and keep up to date) Element-web on IPFS. Since Element-web is a client-side static web application, it works just fine when accessed through local IPFS gateway (like kubo/go-ipfs, ipfs-companion browser addon makes it almost seamless).

Latest version (updated within 2 days of the release): /ipns/element.sibnsk.net (/ipns/k51qzi5uqu5dj43aqkofq4ggbd7nnpvg8j1ia79deab41bfe4zrp86xoht5w2j)

Versions archive: /ipns/elements.sibnsk.net (/ipns/k51qzi5uqu5dmc2sqzfh36v85ucddrw3vbd21erk77wc1pot16j5mqqjmwjyc3)

Note: those are unpacked release archives from github with config.json being a copy of config.sample.json.

Files stored on IPFS benefit greatly from more people accessing, storing and sharing them, so everyone is invited to use and pin (periodically, as new versions are released).

Note: Fеnикs's efforts to host Element-web on IPFS are community efforts, this is not an official deployment of Element.

kittykat reports

  • We’re continued work on automating packaging
  • We’ve also enabled more TypeScript strict checking

In labs (you can enable labs features in settings on develop.element.io or on Nightly):

  • Still working on Favourite messages, we're going to get there very soon!

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Ștefan announces

  • We’re now back in full force, squashing bugs and taking names. We have fixed problems in voice messages, navigation from replies, voice broadcasting, the new device manager, live location sharing and more
  • ElementX is also quickly moving ahead:
    • Instantly loading timelines through the power of sliding sync
    • Better backpagination support
    • A new session verification flow
    • Support for stickers, invalid messages and in-timeline loading indicators
    • And of course, tweaks here, tweaks there, tweaks everywhere

Dept of Non Chat Clients 🎛️

matrix-social (website)

matrix-social is a social media client powered by Matrix.

imbev reports

  • There is now a per-post view that displays the post, replies, and a placeholder for sending replies.
  • Bulma has been completely replaced by TailwindCSS, allowing greater flexibility with styling. This involved a rewrite of the navbar, post, login, and other components of the UI.
  • Posts now display a comment count. There is also a "score", which can be incremented/decremented by thumbsup/thumbsdown reactions. There is currently progress on reacting from matrix-social.
  • Login times are now significantly faster (~5-10x)

Preview matrix-social at https://imbev.codeberg.page/matrix-social/

All are welcome to join us at #matrix-social:matrix.org!

Effektio (website)

The one mobile-first, decentralized community organizing app

ben announces

Earlier this week, we merged the core API for Tasks / ToDoList and Todos using matrix events into main. While connecting the flutter UI is ongoing (which has reverently been revamped to be more streamline and intuitive to use) this marks a major milestone in getting the proof of concept done. It shows that using stateful objects inside matrix spaces that can be collaborated upon with simple matrix events is feasible for regular end-user-style applications. The PR also brings with it integration tests and a TUI app show-casing live-updating tasks lists and tasks.

Meanwhile many issues have been fixed around chat, the code has been updated to latest matrix-sdk and we are working hard on reactivating the integration test suite for better quality assurance. Which is increasingly important as we are sketching out the other generic stateful objects - like the comments system, news, pins and reactions.

Lastly, we have received a lot of positive feedback about the whitepaper we launched last month outlining what we are after when building this and how we intend this all to move forward. If you haven't read it yet, we are still curious to know what you think of it.

Dept of SDKs and Frameworks 🧰

Trinity

Matrix bots in Rust and WebAssembly. If you're interested to follow the project, feel free to join #trinity:delire.party or get the code on Github.

bnjbvr reports

Since the last time in November, there's been a bit of activity on Trinity:

  • Support for end-to-end encryption has been fixed, so that the bots can now reliably answer in private chats and encrypted rooms. Thanks to the kind folks in the Matrix Rust SDK channel for the provided help! Hopefully next time we demo Trinity live, we won't embarrass ourselves with that bug ever again 😊
  • The admin command is now always aware of the room it's applied to, thanks to a contribution by @ahal:mozilla.org.
  • There's now an experimental OpenAI chatbot, that you can enable in conversation mode in a room (i.e. it'll answer every single message), or that you can trigger with a prefix !ai.

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict reports

Trixnity 3.1.0 has been released:

  • new Timeline abstraction for better developer experience
  • ⚠ breaking change: getTimelineEventsAround is ordered naturally (to be consistent with the new Timeline)
  • new helper function canSetPowerLevelTo
  • split password and token in login

Dept of Bots 🤖

matrix-translation-bot

z says

As my first real project written in Rust, I present a translation bot that uses the DeepL translation API to easily translate conversations between participants in a room. The bot has source language detection, so you can type in your native language and it'll translate to anything you'd like right inside of your Matrix client. I've released the source code under the MIT license, so feel free to expand and improve on it: https://github.com/du64/scripts/tree/main/matrix-translation-bot

Dept of Events and Talks 🗣️

Matrix Community Summit Berlin Podcast

jaller94 announces

English Episode

Meet Sumner Evans, who talked to Yan about his way into the Matrix community and career as a developer. Alongside other wisdoms, he recommends newcomers to run their own home server to get familiar with Matrix.

In general, this episode contains a lot of tips for people who want to get started and more involved with Matrix.

Episode link: https://anchor.fm/matrix-podcast0/episodes/Sumner-English-episode---Matrix-Community-Summit-2022-e1sbg16 Mastodon post: https://mastodontech.de/@jaller94/109603245886080934

Next week marks the end of the Matrix Community Summit 2022 series. We're planning on continuing the podcast feed in the future. Stay tuned for a final (German) episode next Friday!

jaller94 reports

German Episode

Meet Janonym, who describes how Matrix is used at the University of Graz. He and I talked about how Matrix, Etherpad and Jitsi allow students to collaborate, how Moodle has become an important tool in digital education and how the Maths faculty enjoys Element's Labs feature for LaTeX messages.

Episode link: https://anchor.fm/matrix-podcast0/episodes/Jan---Universitt-Graz--Matrix-Community-Summit-2022-e1sbfvg Mastodon post: https://mastodontech.de/@jaller94/109603226240566623

jaller94 reports

German Episode

Meet Alex and Valentin who compete for the lowest ping statistics with their Matrix server. We talked about their ideas for Matrix, university and more.

Episode: https://anchor.fm/matrix-podcast0/episodes/Alex-und-Valentin---Matrix-Community-Summit-2022-e1sbg1v​ Mastodon post: https://mastodontech.de/@jaller94/109642891653368048

While this concludes the 8 podcast episodes we recorded at the Matrix Community Summit in Berlin, I did another recording with Kim (HarHarLinks) this week, so there will be a 9th episode next Friday.

FOSDEM23 Matrix Community Meetup

HarHarLinks reports

There is a large interest in FOSDEM from the Matrix community, and we are very excited to see not just a stand, not just an online track, but the first ever in person Matrix devroom happening this year! The officially allotted time for the Matrix devroom at FOSDEM however is only half a day. Some friends and matrix enthusiasts who met at the first Matrix Community Summit Berlin in 2022 feel there is more to discuss and want more time to meet more of this amazing community we are part of, without taking away from the FOSDEM experience itself.

We are happy to announce the FOSDEM23 Matrix Community Meetup at Hackerspace Brussels (HSBXL)! The meetup is set to begin on Friday 03 February around 13:00 local time (CET) and will go into the evening. See https://hsbxl.be/contact/ for multiple well documented ways how to find us. Thank you HSBXL for providing a location for this! There is no definite schedule, instead we want to give the space for discussions to develop organically BarCamp style. If you have a certain interest to learn about something or you want to present something in particular, we want to hear about it! Furthermore, be aware that HSBXL is hosting more events in the FOSDEM "fringe", such as a beer tasting on Friday right after our Matrix Meetup, and also the bytenight party on Saturday. Find us at #fosdem23-community-meetup:matrix.org for more info, program suggestions, to follow the process, and general discussion.

See you in Brussels!

Dept of Interesting Projects 🛰️

matrix-art (website)

An image gallery for Matrix

MTRNord announces

Yes, you are reading correct. This is about Matrix Art ^^

After quite some while, I started to work on it again. I merged the new design into main, updated the UI, and it is available at https://art.midnightthoughts.space/ again.

Current goals are to add the User and Post pages again and implement of the new storage system. The new system uses Spaces as FS at its core for the timeline.

Specifically, Matrix Art is basically a big Space containing a Folder for each User, similar to a Room Directory. In that, there are Timeline spaces which act as the Public Feed. This allows Matrix Art to provide a way of having invite only feeds as well, using normal room permissions.

In practice, the tree is like this (thanks to Travis for designing this many months ago):

+ 📂 Matrix Art User Dir (public, m.space)
    + 📂 User A (public, m.space)
        + 📂 Timeline (m.space)
            - 📄 Image A
            = Room A (invite protected, <no type>)
                - 📄 Image B (counted as under the timeline)
    + 📂 User B (public, m.space)
        + 📂 Timeline (m.space)
            - 📄 Image C
            = Room B (invite protected, <no type>)
                - 📄 Image D (counted as under the timeline)

Feel free to join #matrix-art:midnightthoughts.space or watch the Repo at https://github.com/MTRNord/matrix-art

Dept of Guides 🧭

Custom event type directory

Bram announces

Quick update on the matrix.directory website: we've added the custom event type io.element.functional_members. As you may know, many projects within Matrix don't use any custom event types at all. This can make it difficult to find custom event types, which is (ironically) why I created the matrix.directory website in the first place.

You can find the source code for the website on GitHub. I encourage you to check it out and contribute any custom event types you may have. Your contributions will help make the website a valuable resource for the Matrix community.

Thanks for your support!

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.

#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1maunium.net219
2nognu.de284.5
3matrix.chatpage.de319
4maescool.be352
5alemann.dev354
6kakise.tech387
7fosil.eu408
8dendrite.babel.sh412
9koyax.org416
10trygve.me421

#ping-no-synapse:maunium.net

Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1babel.sh156
2dendrite.babel.sh182
3wcore.org238
4kumma.juttu.asia245
5rustybever.be293.5
6matrix.org439.5
7anontier.nl501
8dendrite.kootstra.frl527
9cringe.chat567
10grin.hu1197

That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!

This Week in Matrix 2022-12-23

2022-12-23 — This Week in Matrix — uhoreg

Matrix Live

Matrix Live will be back in the new year.

Dept of Spec 📜

uhoreg says

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.

MSC Status

Merged MSCs:

MSCs in Final Comment Period:

New MSCs:

  • There were no new MSCs this week.

Closed MSCs:

Spec Core Team

Some of the spec core team have been on holidays this week, but we still finished FCP on one MSC, and merged another to the spec. As mentioned in last week's update, progress will be slower over the holiday season, but we'll be back in the new year, working to make Matrix better.

Random MSC of the Week

The random MSC of the week is... MSC2783: Homeserver Migration Data Format! If you're running a homeserver using one implementation, it's currently impossible to switch to a different implementation without losing data. This MSC proposes a file format for exporting data from one implementation and importing it into another.

Dept of Servers 🏢

Conduit (website)

Conduit is a simple, fast and reliable chat server powered by Matrix

Timo on Conduit ⚡️ says

Conduit

If all you wanted for Christmas is a new Conduit release, then I have great news for you:

Conduit v0.5.0 just released and it contains almost everything you wanted:

  • Feature: Restricted room joining !398
  • Feature: Call sd-notify after init and before exit !426
  • Improvement: V9 as default room version !400
  • Improvement: More efficient E2EE key claiming !389
  • Fix: All E2EE problems !393
  • Fix: Infinite room loading !388
  • Fix: Wrong notification rules !405
  • Fix: Wrong notification counts !408
  • Fix: Can't rejoin rooms !399
  • Fix: Fluffychat login works again !391
  • Fix: Starting DMs with Synapse users !390
  • Fix: is_guest for appservices !401
  • Fix: Invites from Dendrite !416
  • Fix: Send unrecognized error for unknown endpoints !397
  • Refactor: Service layer !365

Conduit is getting a lot more usable with this release, the main missing feature is backfill over federation (loading room messages from before your server joined a room). To update conduit, simply stop it, replace the binary and start it again. Also feel free to join #conduit:fachschaften.org and ask questions there

Dept of Clients 📱

Nheko (website)

Desktop client for Matrix using Qt and C++17.

Nico announces

Nheko

This week we sped up search in rooms with a lot of history. We now also don't block the UI during the search of local messages anymore.

Neochat (website)

A client for matrix, the decentralized communication protocol

Tobias Fella reports

Ho ho ho Matrix fans!

It's that time of year again, and we have a special gift for all of you just in time for the holidays: Neochat now supports end-to-end encryption! This is made possible thanks to the release of libQuotient 0.7.

While this feature is still somewhat experimental, it's a big step forward in ensuring the privacy and security of your conversations. Just keep in mind that if your only logged-in client is Neochat and something goes wrong, you might lose your messages.

If you're feeling adventurous and want to try out the new end-to-end encryption feature, you can already get it from Flathub and some distros. We're also working on supporting it in our Windows, Android, and macOS builds, so stay tuned for updates.

And in the spirit of the season, here's a Christmas joke: Why was the JavaScript developer's house cold? Because he left his closure open!

Merry Christmas and happy chatting, everyone!

Element Web/Desktop (website)

Secure and independent communication, connected via Matrix. Come talk with us in #element-web:matrix.org!

Danielle reports

Element Web/Desktop

Happy Holidays from us at Element! This is our last update for 2022, and it’s a good ‘un.

  • We’re still working on Notifications, reviewing how they work across platforms for new users, and planning the improvements we’re looking to make in the new year. While we look at this user experience holistically, we’re making some subtle changes to the product including removing the bold dot and ordering rooms by activity by default for new users.
  • We’re also continuing to improve the password reset flow so that user’s who can’t remember their passwords have a smoother experience regaining access to their account.
  • And, thanks to a contribution we now have the ability to multi-select members when changing users’ permissions in a room! Head to Room Settings > Roles & Permissions.

In labs (you can enable labs features in settings on develop.element.io or on Nightly):

  • Rich text editor improvements are still coming so be sure to check them out, including updates to emoji handling and inline code formatting.
  • Threads! Threads notifications and performance improvements are landing thick and fast. We’re nearly ready to enable the feature by default and we’ll be excited to do that in the new year.
    • Be sure to check that you’re still in the threads beta for this release as in fixing some bugs your setting may have been changed.

Element iOS (website)

Secure and independent communication for iOS, connected via Matrix. Come talk with us in #element-ios:matrix.org!

Danielle says

Element iOS

For our last iOS update of 2022…

  • Element 1.9.14 has been released to the App Store. It enables threads by default for all users and adds a notifications badge to your spaces button.

    • As always, there’s some bug squashing in this release too.
  • ElementX has also seen a lot of improvements this week:

    • We now have support for timeline day separators and read markers
    • There’s an improved and simpler UI for playing videos
    • Connectivity indicators have been added, to show up when the network is offline
    • Along with many others…

In labs:

  • Voice broadcast and the rich text editor are seeing some improvements, be sure to test them out and keep us posted on your feedback.

Element Android (website)

Secure and independent communication for Android, connected via Matrix. Come talk with us in #element-android:matrix.org!

Danielle announces

Element Android

Happy Holidays! Here’s what’s happened this week:

  • There’s been some bugs and crashes keeping us hard at work this week. Along with some exciting improvements to both Element and Element X. On Element:
    • There are updates to voice broadcast features and users can sign out of other sessions.
    • The colours for pills have been updated and work better in both light and dark mode.
    • Threads improvements have been made and we’re looking forward to enabling this feature by default for all users in the new year.
  • On ElementX we’re moving ahead fast and this week focused our efforts on the Settings pages and the bug reporting functionality (including rageshake detection and screenshot management)

Dept of SDKs and Frameworks 🧰

libQuotient (website)

A Qt5 library to write cross-platform clients for Matrix

kitsune reports

libQuotient 0.7

It took us (yes, us - there's more than one person actively working on the project!) a very long time but libQuotient 0.7.0 is out, with a huge wall of release notes. Big, big, BIG thanks to Carl Schwan and Tobias Fella for their contributions and early adoption of this release in NeoChat (NeoChat maintained compatibility with libQuotient's development branch, along with the stable branch, for quite some time by now). A short summary of most significant things:

  • Requirements: C++20, Qt 5.15 or 6.x
  • E2EE code is now in beta quality, features:
    • sending/receiving new messages
    • getting historical messages where Megolm keys are already loaded
    • encrypting/decrypting attachments
    • device verification (to-device flow only, no in-room verification yet)
  • Individual APIs for m.fully_read and m.read markers
  • Client-Server API backend uses Matrix 1.5 API definitions
  • A complete rewrite of the event types framework to make it truly extensible; you can now add both base classes and specific event types on the client side without touching the library code (the library still provides standard ones)
  • Account registry for multi-account usage; account access tokens and pickling keys are stored with Qt Keychain
  • Sticker events support
  • Pinned messages support
  • First-class support in Network Access Manager for mxc: URLs, to enable showing inline images in messages
  • A lot of code tightening, bug fixing, performance improvements

Merry Christmas and Happy New Year to those who observe those - and hopefully I'll get to my senses and release 0.8 sooner than in another year 🙂

Dept of Bots 🤖

MTRNord reports

Matrix Spam ML

As part of the efforts for working on detecting spam using ML I started to write a moderation bot.

This bot is written from scratch with some design decisions that hopefully will improve usability for both newcomers and seasoned admins.

These decisions are:

  • If an action can be done using a reaction, then it will be done using a reaction.
  • There is a private admin room and a public room for warnings, where admins issue actions. This is meant to serve as a human-readable ban list if admins want to provide this to their users.
  • The bot will at a later point be able to issue reports to server admins via email and matrix easily by allowing admins to just react after doing a ban. The bot will initially ask how to contact a server if it didn't issue a report to the server before. The bot will remember the setting supplied last time for a server and allows updating the settings if they change. These reports will contain a warning that it was issued from the bot and that replies are necessary for it to be properly relayed back to the admins for further questions. These replies will end up as threads in the admin room. Also, as part of the report, the event JSON for the report will be sent with the report to allow server admins to review the case themselves. (This is still WIP)

The warnings also contain a "false positive" action. This is meant to be used to feed back into the used model for further training and improving it.

All in all, I hope to simplify the process of moderation based on what I experienced as an admin. Feel free to chime in at #matrix-spam-ml:midnightthoughts.space to suggest ideas for the bot. At the time of writing, it is still very much a prototype/demo.

The code can be found at https://github.com/MTRNord/matrix-spam-ml/tree/main/bot

Documentation can be found at: https://mtrnord.github.io/matrix-spam-ml/bot

Dept of Ping

Dept of Ping will be back next week.

That's all I know

There will be no TWIM next week, but we'll be back in the new year. Be sure to stop by #twim:matrix.org with your updates!

NextPage 2