matrix.org/content/blog/2023/03/2023-03-10-this-week-in-mat...

27 KiB
Raw Permalink Blame History

+++ title = "This Week in Matrix 2023-03-10" date = "2023-03-10T20:36:38Z" path = "/blog/2023/03/10/this-week-in-matrix-2023-03-10"

[taxonomies] author = ["Thib"] category = ["This Week in Matrix"] +++

Matrix Live

{{ youtube_player(video_id="HlsMMzTFZ_A") }}

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://spec.matrix.org/proposals.

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

Closed MSCs:

  • No MSCs were closed/rejected this week.

Spec Updates

Review this week from the SCT focused on the future of OIDC and logging in via a QR code (MSC3906) - a feature other platforms have and one I would love immensely. Fixing notifications (MSC3966, MSC3873, MSC3758, MSC3952, MSC3958) as per last week, as well as trying to finally get MSC2677 (spec'ing the current state of Annotations and Reactions) into FCP.

Random MSC of the Week

The random MSC of the week is... MSC3972: Lexicographical strings as an ordering mechanism!

While there already is an MSC for a top-level ordering of Spaces in use across some client implementations today (MSC3230), the algorithm recommended for clients to implement apparently has some consistency flaws, leading to edge cases. MSC3972 attempts to address this by providing a different algorithm that does not have these flaws. A real-world implementation of the algorithm is also available today in Kotlin at https://github.com/Dominaezzz/MatrixSort.

Neither of these algorithms have been merged to the spec yet, but this new MSC may finally push this conversation forwards! I recommend client developers give it a read and leave their feedback as Pull Request Review comments on the MSC.

Dept of Servers 🏢

Telodendria (website)

An open source Matrix homeserver implementation written from scratch in ANSI C and designed to be lightweight and simple, yet functional

Jordan Bancino reports

Hey everyone, it's been a while since I've posted an update here, but I'm pleased to report that progress on Telodendria is still steady. Here's a small glimpse into what's happening with the project:

  • v0.2.1: The second major release of Telodendria was published earlier this week. Telodendria still isn't much yet, but the user authentication section of the client-server specification is just about complete. This means you can register for accounts, log in and get access tokens, and then log out. All the stuff that goes with that, including the static login fallback page, and user interactive authentication is in place.
  • What's Next: I'm hoping to start working on the account management endpoints next. I also want to start building out an HTTP client for federation, and I want to move the configuration file into the database, so that Telodendria is configured via an admin API endpoint instead of a file. The thinking here is that this enables Telodendria to be configured at runtime, without having to restart the process to apply configuration changes.
  • Help Wanted: As always, I could use your help. This is a huge project, and I am very busy so I can't dedicate as much time as I'd like to it. If you find Telodendria interesting and want it to continue, feel free to join us over in #telodendria-general:bancino.net, write some code and documentation, donate to the project, or any and all of the above!

Synapse (website)

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

Shay reports

Welcome to another Friday and another edition of the Synapse section of TWIM. This week we've released Synapse v1.79.0rc1.

Some notable highlights include:

  • Added experimental support for MSC3967 to not require UIA for setting up cross-signing on first use.
  • Fixed a long-standing bug where an initial sync would not respond to changes to the list of ignored users if there was an initial sync cached.
  • Fixed a long-standing bug where the user directory search was not case-insensitive for accented characters
  • Documented how to use caches in a module

Plus much more! You can check out the details here or take a deep dive in the release notes here.

Construct (website)

A performance-oriented homeserver with minimal dependencies.

Jason Volk reports

This week Construct gained support for freshly minted MSC3758 and MSC3966 enriching the pushrules subsystem. I'd like to thank Giovanni Bottaro for contributing a patch which fixes updates to the public rooms directory. I'd like to thank @qg:schildi.chat for reporting two other issues which I've been able to push fixes for this week. I'd also like to thank Yan Minari for refactoring the nix build up to date in preparation for Construct's 1.0 release.

The saga continues over at #construct:zemos.net

Dept of Clients 📱

iamb (Website)

A terminal-based Matrix client that uses Vim keybindings

ulyssa says

iamb had a new release this week. Release v0.0.6 includes:

  • Support for tab completion of usernames, aliases, and commands.
  • A new command for creating rooms and spaces
  • Bug fixes for edits and creating new direct messages
  • Improvements to text wrapping in messages
  • NetBSD's pkgsrc-current now includes a package for iamb

mnotify (Website)

stefan says

mnotify gained a few features:

  • Attachments can now be sent to a room with mn send -r "$ROOM_ID" --attachment CAT.jpg.
  • mn sync gained a flag --raw which prints all received events, including e.g. presence or typing.
  • mn rooms can list all rooms you are in, including room members and avatars.

chooj (Website)

Farooq says

chooj, the Matrix client for KaiOS feature phones, has seen many changes in the last few weeks. Many bugs were fixed and many others are probably added. We now support many other events other than message events which you can view in the rooms plus an experimental image viewer to better investigate the received images. Other than that, by removing the files KaiOS doesn't use, the production bundle size is half now. A big internal change also happened and still is not finished yet. With the assist of Simon Laux, a big portion of chooj is now a separate library which makes maintenance easier and also lets other KaiOS apps use them. I have written my plans for chooj in my last post in the BananaHackers blog. If you like to see Matrix chat on the KaiOS feature phones, you can donate an amount to help with the development of the project. Or you can donate me a debug enabled KaiOS phone with the mentioned features.

Nheko (website)

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

LorenDB announces

We've had some fun and useful things happening in the past two weeks!

  • red_sky (nheko.im) worked on automating the release process to automatically create a release when a tag is pushed. This might not sound like much, but it makes life easier for maintainers who would otherwise have to waste time manually creating releases. After all, why would you want to write release notes when you could be writing code?
  • Nico tweaked styling for HTML tables to increase the padding. Thanks to Cadair for the suggestion!
  • Nico also fixed a bug that showed avatar changes as somebody joining a room. I seem to recall this also happening when users changed their display names, but I can't reproduce that behavior. Either way, it is nice to have this fix in place!
  • I worked on closing some of our issues, and I'm happy to report that there are fewer ways to be unpleasantly surprised by the UI. For example, if you have turned on the setting to make emoji-only messages larger, all other emojis will also get a bit of a size boost to make them easier to read.
  • On that note, I recently went through the issue list and closed a number of outdated issues that had already been fixed, because 260+ issues is obviously too many for any self-respecting project... right? ;)
  • I also overhauled nheko's behavior when you attempt to use an invalid /command. Originally, nheko would eat any invalid commands (e.g. sending /foo would clear the input box but would not send a message). Now, if you type /foo, you will see a warning informing you that you are about to send a message that says /foo into the chat instead of running a command /foo. If you choose to disregard the warnings and hit Enter, nheko will indeed send a message saying /foo!

But that's not all: this week, mtxclient gained the ability to properly handle m.room.message events that have an unknown msgtype. With that in place, I'm working on implementing that on the nheko side. Once this work is done, you will be able to read messages that others send from Element with fireworks! Furthermore, I'm adding a bonus feature to nheko: as a proof-of-concept for fully implementing this unknown message handling, I've got a working implementation of Element's rainfall effect for those of you who like fancy effects! (All the rest of you can just turn those off in the settings, I guess.)

A note for our Mac users: somebody opened an issue last week notifying us that nheko couldn't be installed on OS X 11.1. Nico has fixed this, but you will need to either wait for the next release or install one of our nightly builds (#nheko-nightlies:neko.dev).

Ement.el (website)

Matrix client for Emacs

alphapapa says

Ement.el, a Matrix client for the GNU Emacs text editor and Lisp environment, has been released at v0.7. Changes in this version include:

Additions

  • Command ement-room-override-name sets a local override for a room's display name. (Especially helpful for 1:1 rooms and bridged rooms. See MSC3015.)

Changes

  • Improve display of room tombstones (displayed at top and bottom of buffer, and new room ID is linked to join).
  • Use descriptive prompts in ement-leave-room and ement-forget-room commands.

Fixes

  • Command ement-view-space when called from a room buffer. (Thanks to Richard Brežák for reporting.)
  • Don't call display-buffer when reverting room list buffer. (Fixes #121. Thanks to mekeor for reporting.)
  • Retry sync for network timeouts. (Accidentally broken in v0.6.)

Internal

  • Function ement-put-account-data accepts :room argument to put on a room's account data.

Feel free to join us in ement.el:matrix.org!

Element Web/Desktop (website)

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

andybalaam announces

  • We started the process of wrapping up the remaining smaller and non-essential leftovers from the Gitter migration support in Element Web and are hoping to complete them next week
  • Work on moving our packaging into the cloud is progressing and we also started to improve our infrastructure for updating the GPG key for our Debian packages
  • Further investigation on the remaining stuck notification issues has indicated that spec changes around the handling of relations inside threads will be needed. We're planning to work on these soon.
  • The React SDK changes for MSC3952 (intentional mentions) are getting ready to land

Element iOS (website)

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

Manu says

  • This week we continue to polish Element X. It got a new Rust SDK version that fixed known bugs in the new Sliding Sync API implementation. A new public TestFlight (1.0.24) will be available during the week-end, after Apple approval.
  • We resumed the work on push notifications on Element X and experimented the new instant messaging push notification APIs.
  • On Element land, a new version, 1.10.4, will be available on Monday. Applications with analytics enabled will gradually use the new crypto stack, coming from the matrix-rust-sdk crypto crate. Anyone can enable it from the LABs settings at any time.

Element Android (website)

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

benoit announces

  • We have just released Element Android 1.5.28, it should be pushed to production next week. Element Android is now mainly in maintenance mode.
  • More and more people are working on Element X Android. We are working on updating the design, and refining the architecture of the project. It will soon be possible to verify a session, and create a room from this client. We are also preparing the work to be able to receive Push and display notifications.

Dept of SDKs and Frameworks 🧰

Trixnity (website)

Multiplatform Kotlin SDK for Matrix

Benedict reports

Just another small release of Trixnity (v3.5.0):

improvements:

  • expose more device trust level information (breaking change)

bugfixes:

  • fix too long open transaction in IndexedDBMediaStore (relevant for larger media files)
  • allow cancel device verification before any device answered

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

Jonas Platte says

  • The PR for client user avatar URL caching mentioned last week has been merged
  • We fixed a long-standing CI problem where coverage data would frequently fail to upload
  • Our state store / cache abstraction was improved (#1593, #1629)
  • We fixed some races between /sync and /keys/queries requests
  • Plus lots of purely internal improvements!

Dept of Ops 🛠

synadm (website)

Command line admin tool for Synapse (Matrix reference homeserver)

jojo announces

It's been some time since synadm last showed up on TWIM, it was around summer 2022. The biggest news is that Ascurius and me just welcomed a new member to the team: jacksonchen666. We reached out since he seemed to care about synadm. He had submitted a feature but we also caught him tidying up "unloved" issues. He has a good sense for concise solutions and accurate documentation. He runs a website and a blog where he talks about "things".

Here's more we'd like to spread:

  • A random list of new commands, read details in the docs to learn what they do: synadm notice send, synadm user 3pid, synadm user auth-provider, synadm room block/unblock synadm room block-status, synadm media unquarantine, synadm user modify --user-type ..., synadm user deactivate-regex.
  • A new output mode minified was added and the original json mode was improved to now produce nicely human readable json.
  • We finally have a contributing documentation and hope it'll make collaboration with our contributors even better.
  • We introduced an auto-linter based on flake8 into our CI pipeline to catch code formatting issues quicker.
  • The new Scripting Examples chapter. Please submit your one-liners or other helpful scripting examples via a pull-request or just let us know in #synadm:peek-a-boo.at

By the way, jacksonchen666 searched for synadm occurrences in the TWIM history and we found an article "next to us" about the Matrix Community Summit 2022 that took place in Berlin last summer. It reminded us that it was a blast! Thanks dear organizers, we hope you manage to do it again! Here's some musical memories in the name of our reference homeserver.

matrix-docker-ansible-deploy (website)

Matrix server setup using Ansible and Docker

Slavi announces

Thanks to Benjamin Kampmann for getting it started, FSG-Cat for fixing it up and me (Slavi) for polishing it up, matrix-docker-ansible-deploy now supports installing the Sliding Sync Proxy.

Running this additional component allows playbook users to easily test the new (still beta) Element X clients (Element X iOS and Element X Android).

To get started, see our Setting up Sliding Sync Proxy documentation page.

Dept of Bots 🤖

kfatehi announces

This is not a project but an idea nevertheless: Produced a quick and dirty PoC of an OpenAI chat completion tool used from within Element Web/Desktop. Video can be found here https://github.com/matrix-hacks/openai-reply-generator

explored making it shippable via bot, bridge, widget, and puppet-client but i have yet to find an experience that i like completely yet but still worth sharing how easy it is to test ideas in Matrix (which through bridges, can touch all media)

Dept of Interesting Projects 🛰️

Effektio is now acter.global 🚀

ben reports

Shortly after releasing our whitepaper end of last year, Effektio was approached by another organization, who has been building a NGO communication platform for a few years called Acter. Acter wanted to move away from their current centralized stack and had found Matrix.org 's Federated Model to be their preferred ideal. Very quickly within the talks that followed it became clear that both organization have the same goals and visions for the future and are perfectly matching in terms of what they already bring and what each lacks: Effektio has the technological stack, expertise and ability to build the product while Acter has existing a network of organizations, partners and even existing users, who are happy to provide feedback. Long story short, we decided to merge both into a newly funded Acter Association, which we established Jan 1st, developing the next (third) generation of the Acter Platform ("A3") on top of the existing effektio tech stack. Since then a major part of our work has been merging all the admin and tech stuff, up to moving the github repo over to acterglobal/a3, where you will find it from now on.

Next to that, we still have continued working on the product itself. Among other things we have merged the first implementation of the Adaptive Layout in A3 this week, implemented the next acter object, Pins, added Rageshake Bug Reporting to the nightly builds, started out with the new Templates infrastructure and improved our quality assurance by reactivate rust integration tests, add widget unit tests and a new cucumber desktop tests infrastructure.

More details on all of these in todays update in our very own news channel: https://matrix.to/#/#news:acter.global

MinesTRIX (website)

A privacy focused social media based on MATRIX

Henri Carnot says

website * repo

Hello hello,

today is a big day for MinesTRIX because it's finally possible to test it as we are now in Flathub! https://flathub.org/apps/details/fr.henri2h.minestrix

In parallel, I have been quite a lot of work in the background. And in last version (v1.6.5), we have:

  • Switched to Material3 and redesigned the app navigation. Removed black theme for more simplicity.
  • It is now possible to set permissions (room visibility and powers levels) for groups and feeds.
  • Role & permissions view for room settings is now more intuitive.
  • fine tuned the new feed indexing systems. Should be more stable now.
  • The settings page got some love and now display all the sessions and their status (verified or not). It is also possible to logout all 90+ days sessions.
  • new message search view for not encrypted conversations.
  • fixed notifications count for rooms
  • better experience for searching user or rooms.
  • new page to list feeds and groups
  • it is now possible to unfollow someone
  • fixed SSO login on web
  • It's now possible to switch account from home page for easier multi account usage.

In master:

  • support for video messages
  • speed up room media loading for the not encrypted rooms by requesting events directly from server
  • allow resizing the settings and chat view

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.

Rank Hostname Median MS
1 poldrack.dev 354
2 utzutzutz.net 403
3 mxchat.cz 475
4 keks.club 501.5
5 ilmari.org 545
6 edwalls.nu 585
7 pvv.ntnu.no 682
8 willy.club 795
9 shortestpath.dev 978.5
10 projectsegfau.lt 1087

#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.

Rank Hostname Median MS
1 dendrite.matrix.org 198
2 dendrite.s3cr3t.me 268
3 frai.se 313.5
4 matrix.org 390
5 kumma.juttu.asia 393.5
6 rustybever.be 680
7 herkulessi.de 822.5
8 zemos.net 38045

That's all I know

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