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.

Synapse 1.75 released

2023-01-19 — Releases — Mathieu Velten

We published Synapse version 1.75 as the new stable release this week. Synapse admins are encouraged to upgrade to it at their convenience. It seems like the blog post for version 1.74 was eaten by Santa's reindeer, so this post will also cover changes from it.

Announcements

There were no special announcements for the 1.75 release.

Synapse's search functionality has long been poor when searching for non-English terms. Synapse 1.74 introduced support for an optional improved user search experience which has a better awareness of Unicode. To do so, we use the ICU library when Synapse is installed alongside the binding library PyICU.

Synapse installations using Matrix.org docker images or debian packages will automatically have the new search mode enabled.

From-source installations will need to include the user-search extra when pip install Synapse, e.g. pip install matrix-synapse[user-search]. NB: because PyICU is not distributed as source-only on PyPI, you will need to ensure the ICU development headers are available on your system. See the upgrade notes for more info.

Please try out the new search mode and let us know how you find it in practice.

The new stuff

Support RFC7636 Proof Key for Code Exchange for OAuth single sign-on

Synapse 1.75 adds support for RFC7636 code challenges in the OAuth 2.0 flow.

This is required by Twitter SSO and enabling it can protect against the "authorization code interception attack".

Experimental support for removing account data (MSC3391)

Experimental support for removing account data has landed in Synapse. It was previously possible to create or update account data but not remove them, this is now possible.

The support is experimental and needs to be enabled with a configuration flag since the MSC hasn't landed yet.

More faster remote room joins fixes and improvements

In case you missed it we are working on dramatically improve performance of remote room joins, you can refer to this blog post for more details.

The last two Synapse releases brings that a lot closer to a proper release; in particular they contain a lot of work to support faster joins in deployments with multiple workers. The project continues in earnest; we hope to have more to show off in the coming weeks.

Everything else

See the full changelog, for a complete list of changes in the release. Also please have a look at the upgrade notes for 1.74 version.

Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to these releases, including (in no particular order): Ashish Kumar, Dirk Klimpel, Jeremy Kescher, Jeyachandran Rathnam, Nick Mills-Barrett, Jason Little, Villepeh and Vertux. We are also grateful to anyone helping us make Synapse better by sharing their feedback and reporting issues, or helping with community support questions.

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!

Matrix Community Year In Review 2022

2023-01-03 — General — Nico

Note: This was originally posted on https://blog.neko.dev/posts/matrix-year-in-review-2022.html , which also includes some small info boxes about each projects, which got lost in the translation.

As we send off 2022 with a bang, it makes sense to look back on what we did this year and where we want to go next year. In its holiday special post, the Matrix Foundation has been focusing on the core team's work. This post is focusing on the achievements of the community outside of the Matrix Foundation.

I tried to reach out to as many people I have seen do "stuff" on Matrix and have them write something they would see fitting for a year in review. Now, most people have better things to do between christmas and new years, so I hope you can excuse if some projects are missing. Also I probably forgot like half of the interesting people... HOWEVER! I hope you still enjoy what everyone wrote up. And don't forget to check out the official Matrix Holiday Update 2022 and of course read you weekly TWIM to keep up to date with any cool projects you find.

Nheko D-Bus API

A D-Bus API for the Nheko Matrix client compatible with KRunner and Rofi.

LorenDB tells us

As a dedicated user of all things KDE, I make heavy use of KRunner. Naturally, I wondered if KRunner could be extended to join Matrix. This idea led me to create a D-Bus API in nheko for use on Linux. While it currently only supports a few aspects of the full Matrix experience, this API allows external software to make use of some of nheko's functionality, including searching the room list, opening rooms, joining rooms, and creating DMs. Later, I also added support for setting status messages. Now you can write extensions for software such as KRunner or rofi. Alternately, you could make a plugin for your favorite game that sets your status message to let your friends know that you are busy (although no known plugins of this sort exist).

Community Moderation Effort

A collaborative effort to moderate Matrix communities and to fight spam.

Nico mentions

Some of you might have heard of us, but we are a few moderators of very different communities, who have banded together to fight spam and share the burden of moderating our communities. Different opinions are very hard to align, so we have one ban list we can agree on, that only includes the most annoying spam reasons: automated spam, crypto advertisements, gore posting and similar stuff. This actually works very well against spammers, that just join one room after the other to send the same content.

You can subscribe to this ban list here:#community-moderation-effort-bl:neko.dev

We are sometimes internally discussing moderation rules, tooling and recent events. In the long term we hope to improve the tooling situation as well as provide a second, stricter ban list, but we are also already very busy just moderating our own little communities, so don't expect much progress.

If you have a community that has been troubled by organized spam recently, maybe our ban list can help you. You might also be interested in contacting one of us to join the effort, just be aware that we are very careful in accepting new members. We hope you have a spam-free and enjoyable 2023!

Matrix Releasetracker

Release tracker that posts updates into Matrix rooms.

Ananace contributes

The release tracking project that has been running basically non-stop since 2018 (barring a few periods of downtime due to complete database crashes), having tracked many millions of releases for at least five people from my personally hosted instance.

2022 saw the addition of plenty of additional release sources, as well as a complete refactor of the codebase to hopefully support even more sources going forwards. It now tracks loose repositories (signed tags, lightweight tags, and/or releases) on GitHub/GitLab/Gitea/plain git, as well as supporting the tracking of entire namespaces and user stars on GitHub/GitLab/Gitea.

2023 should hopefully see even more work roll in, with some code underway for tracking Docker images and Helm Chart updates, as well as rework of the bot component to have it offer more use.

Self-Host a Matrix Map Tile Server

FluffyChat implemented location sharing in Matrix last year. More recently, Element announced support for it. Interesting in Element's announcement is not only the mechanism for sharing a location data point, but also how their matrix clients would display a little map to the recipient and how they would support the case where the data for this map display could be self-hosted. This is a blogpost/guide to show how this could be done.

JulianF mentions

I set up my own OpenStreetMap tiles server for secure location sharing with Matrix.

See this guide on my blog which explains why and how I did it, and the Ansible role, and the matrix discussion room #matrix-map-tile-server:foad.me.uk.

Matrix ClassDojo Bridge

This bridges ClassDojo teacher-to-parent messaging facilities to matrix.

JulianF mentions

I began a project to bridge matrix to the teacher-parent messaging silo ClassDojo, which is popular especially in USA and UK schools.

Matrix ClassDojo Bridge

I am motivated by my loathing of being coerced into putting my private communications in yet another silo where I am restricted to accessing my messages and photos through the company's own products which subject me to advertising and engagement tactics ("Your child earned a point -- click to see what for!"), where I cannot easily keep my own copy of my own data ("Subscribe now to keep your memories!"), and all the other typical down-sides of a Big Tech silo.

This scenario is of course exactly where Matrix shines. An ideal fit for a school's messaging needs, scrapping the silo business model, putting the organisation in control of its own data and policies.

In the first half of 2022 I got as far as being able to do an offline demo -- manually running the fetching and bridging stages, with the teacher and class names, story text and photos bridged in the to-matrix direction.

My work on this was generously sponsored by my wife.

Since then, the project has been on hold, seeking further funding.

My next step plan for the bridge, when I can get back to it, is to adjust the bridged output to the matrix-for-social-media formats used in FUTO Circles (previously "Circuli") and MinesTRIX to present a familiar and beautiful display.

Aine's update

Aine, one of the people behind etke.cc gives an update about what happened in the project this year as well as their contributions to matrix-docker-ansible-deploy.

Aine contributes

Ohh, I don't even know where to start and what include, to be honest 😁

The most notable changes were:

  • etke.cc/scheduler brings control over maintenance service and running services to customers. It changed our internal workflows a lot
  • multilingual support of etke.cc - website, guides, order processing, support. Initially we had 3 supported languages (English, German, Russian) and then dropped Russian
  • a lot of new components in mdad, starting with cinny and Borg backup and finishing with postmoogle
  • we developed several new bots and matrix-related tools

... Actually, a lot of things were done and much more is in progress, not sure if I can speak about upcoming changes

So, 2022 was awful, scary, heartbreaking (in a bad way), but it also was quite productive

Pauls Podcast (German tech podcast)

A German tech podcast, that talks a lot about Matrix, but also a few other miscellaneous topics.

jaller94 shares

In the beginning of the year I started a hobby podcast. Most episodes cover Matrix topics, e.g. the release of Matrix Spec v1.2, the FOSDEM 2022 and the Matrix Community Summit in Berlin.

https://chrpaul.de/podcast/

Matrix dev room at FrOSCon 2022

Every year free and open source software is celebrated and talked about at the FroSCon conference near Bonn. There was a dev room dedicated to Matrix this year.

jaller94 tells us

Every year free and open source software is celebrated and talked about at the FroSCon conference near Bonn.
Thousands of enthusiasts meet on a university campus for one weekend to listen to presentations, talk in dev rooms and inform themselves at booths.
One ecosystem and community not to miss is Matrix. We've had a dev room where plenty of developers, server admins and newcomers exchanged their ideas and wishes for the protocol, implementations and other aspects of Matrix.

Room link: #FrOSCon:fiksel.info

Thanks to the speakers who represented Matrix on stage! Thanks to Oleg for continually representing Matrix at FrOSCon each year! Thanks to Yan for joining me last minute and making the dev room 300% more awesome!

Bram's updates on Elm and activism

A Matrix SDK in Elm.

Bram mentions

Experience as a digital activist

At the Matrix Community Summit 2022, I gave a talk on the struggles as a digital activist if trying to explain concepts like Matrix to politicians. The talk went very well!

I was really impressed by the knowledge and passion that many of the attendees at the Matrix Community Summit displayed, and I feel grateful to have had the opportunity to learn from and such an engaged and informed group of people. I am confident that the insights and perspectives shared at the summit will be invaluable to my activism moving forward, and I hope to have the chance to work with many of you in the future as we continue to strive for a more just and equitable world.

Implementing Matrix in Elm

For the past year, I have been looking for ways to implement a Matrix SDK in Elm. Elm is a functional programming language that promises to compile to lightweight JavaScript that raises zero runtime exceptions. This has been quite a learning process and I'm hoping to release a beta version early 2023.

From the past year of trying to build a functional language library, I've learned that:

  • The Matrix spec is surprisingly easy to implement in a functional programming language;
  • There are still a lot of ambiguities left in the Matrix spec that aren't that big of a deal for imperative programming languages, but can mess up your codebase if you're a functional programmer;
  • There appears to be a need for some single-use clients that are very good at doing a single thing. (Sending automated messages to multiple clients, moderating permissions across multiple rooms, auto-sending policies, exploring unknown access tokens).
  • A lot of SDK development still revolves heavily around Element and Synapse implementation. Some events weren't part of spec yet while already widely implemented because either of those two codebases supported it.
  • The Elm compiler is VERY strict and unforgiving, which can be annoying at times but creates some very robust results. My hope is that rolling out client implementations will be relatively quick and easy as soon as the SDK implementation is ready.

Progress on the Elm SDK can be found over here but will be updated in TWIM as well. You can also view my side project of a custom event type directory over at https://matrix.directory

Nico's delight initiative

Random Matrix related updates from Nico.

Nico mentions

Nobody enjoys encountering bugs on a platform they use. So one of my goals for 2022 was to fix some of the bugs I hear often about in the hope it improves the reputation Matrix has. This often involves projects or functionality I don't personally use, but that I can still contribute to. I think I made some progress on it. For example I fixed a bug that prevented all calls using Element Web on servers, that were not Synapse. Similarly I opened a pull request to Element Android repo, where users would get pinged by replying to a user whose userid starts with a room ping like @roomba (however that sadly isn't merged yet). I also made various fixes to Synapse, especially related to notifications.

More long term I tried to push dehydrated devices forward (partially because of my day job) by implementing the second iteration of it: MSC3814: Shriveled Sessions as well as writing MSCs to one day get rid of reply fallbacks (by deprecating it and with support of MSC3664 allow for better control over notifications from replies. Similarly I pushed forward MSC3266: Room Summaries to improve the experience when joining rooms via knocking or restricted joins or just previewing rooms in general. (I implemented the federation parts of that MSC in Synapse as well as in several parts of Nheko).

My current work is on improving presence, since that has some fun edge cases. Fingers crossed that works out next year and I find a few more things to drive by fix. Do you have anything you have seen come up often? Maybe 2023 is the year to try to fix one of the bugs you encountered far too often? It is always easier to fix stuff, that has been annoying you, so why not try and make your own life on Matrix a little bit better? Most projects are pretty open to contributors and it also often teaches you some new skills, so there is nothing to lose but lots of time!

Valheim Matrix Bridge

A Valheim (the game) to Matrix bridge.

Nico mentions

I built a Valheim Mod to bridge Matrix messages from and to Valheim, so that I didn't have to switch windows as often when playing with the other Nheko devs. You can find it here: https://nheko.im/nheko-reborn/valheimmatrix

Postmoogle

An Email to Matrix bridge. Postmoogle is an actual SMTP server that allows you to send and receive emails on your matrix server. It can't be used with arbitrary email providers, because it acts as an actual email provider itself, so you can use it to send emails from your apps and scripts as well.

Aine reports

At etke.cc we love matrix, but have to use email as well, especially for some notification things and communication with customers. Let's face it: email ecosystem is awful, there is no really usable and nice looking email clients that allow you to collaborate and use "hivemind" to work on emails, there is no simple backend implementations that will just work with simple configuration, and you have to dig into all that stuff on your own to understand how it works and configure it...

So, we already had experience in bringing stuff into matrix and we decided to do the same for email, that's how Postmoogle was born.

Of course, there was email2matrix, but it's too hard to configure and it's intended only to receive messages.

Our "20 minutes adventure" to develop it was a hell ride with several weeks of nearly full-time working on it even on weekends, and during that time we literally studied SMTP protocol using RFCs, Wikipedia and source code of other mail servers (shoutout to Maddy - you guys did amazing work!).

It was a tough fight, but the result is satisfying - you can get an email server that handles 99% of usual email cases and uses matrix as frontend.

So, what's the result?

  • we use Postmoogle for customer support
  • we offer it to customers
  • we have cases when people ditched regular email service (like gmail) and use postmoogle as the only email account

Of course, we have other ideas with it, but even now it's pretty satisfying results

Halcyon

Halcyon is a python matrix library made with the goal of being very easy to use, and requiring no local databases.

gen3 mentions

Halcyon is a python matrix library made with the goal of being very easy to use, and requiring no local databases. 2022 brought a few key features that made it usable for general usage in unencrypted room (We reached milestone 2!).

  • Query for room information, with automatic background updating in a local cache. (ex, get the room name, admin, moderators, etc)
  • Improved polling for reduced server usage and for connection with slow internet
  • Image sending functionality with automatic blurhash and thumbnail generation
  • More examples
  • More documentation!

Come chat with us in https://matrix.to/#/#halcyon:blackline.xyz
Find the library here: https://github.com/WesR/Halcyon

f0x' year of not-so-much Matrix

f0x gives an update about their Matrix (and not-so-much Matrix) projects.

f0x mentions

Looking back I realized I didn't do much with Matrix at all this year, besides actively using it as my main communication platform.
matrix-streamchat had some commits at the start of the year but got abandoned shortly after. I stopped streaming myself, and others I knew
mostly used Owncast which had it's own chat, which got some neat ActivityPub integration soon after too.

synapse-media-proxy also had very little changes, but that's quite good, because it's been very solidly running in production for more than a year now,
running all the Matrix media for https://pixie.town.

There's some stuff on the ops-side; worked on a refactor of my NixOS modules for Synapse with workers (not quite working yet). Moved all my bridges to a new NixOS host. (Barely)
maintained my matrix-appservice-irc fork, and got some nice clickfarm-supplied Haiku's
from a bot re-using an account because I still haven't gotten around to giving it it's own access token..

Successful registration for jamessemith70 ([email protected])
5, Frigid winter night—
7, even the thieves stay at home,
5, except for those two

In my non-Matrix time I've been working a lot on the frontend and settings interface for GoToSocial, FediFox Masto-api client and Masto-api compatible alternative frontend FediFox Shield. Article about the latter: https://cthu.lu/projects/fedifox-shield

Gwmngilfen's Matrix Year

Gwmngilfen gives an update about their work on Matrix in 2022.

Gwmngilfen tells us

While 2021 was a big year for me in Matrix, 2022 has been one of steady progress on various projects. Being a community architect, much of those projects are "communities on Matrix" rather than code, but hey! We need users 😀. So, here's what I've been up this year...

#space:ansible.com

Ansible started on it's Matrix journey last year but the arguments I made then have proven solid. The community has seen steady decline in the number of IRC users, but a steady rise in the number of Matrix users - enough to make a positive trend overall. As of last month, we're now at over 50% of unique MXIDs talking each day coming from Matrix vs IRC. That's a huge milestone to have reached in just over a year!

We also used Matrix as a key part of our message to the wider tech landscape as part of our Keynote at AnsibleFest. I don't want to make this too product-y, but you can check out that video here and also the interview my colleagues Adam and Carol here (that's worth a look, Adam crowbars Matrix into almost every sentence 😁)

Steady progress isn't eye catching, but I'm so pleased that the move has been a positive one, and I hope it continues in 2023.

#rlang:matrix.org

Since part of my work involves doing data science, I've also been trying to boost the presence of the Rstats world on Matrix. The community there is small so far, but we're super supportive and trying to build out our presence. My eventual goal is to make it big enough to be worth setting up a bridge to the larger Slack R4DS community (R for Data Science), but we're not there yet. If you use R at all, come see us!

ChatStat for data on your Matrix Rooms

The one Matrix project I did get done this year (although it hasn't been updated in ... a while) is an R library for producing reports on Matrix rooms. I use this for gathering data on the Ansible community regularly, and it comes in two parts. The first part is the API calls to get all the events for a set of rooms over a given time and arrange it in a nice rectangular format. The second part uses this tabular data to produce reports on when people talk, who talks the most, and so on. It's been very useful to me over the past few months to show how the trends I talk about above have developed.

Carolinacon in matrix

CarolinaCon is a yearly cybersecurity conference hosted out of North Carolina. Since 2004 CarolinaCon has been host to talks ranging from BioHacking, to developing OpenBSD, to Web app security, and beyond. Over the years we have run a wide range of events, mostly in person. The past two years we decided to run the conference online.

gen3 mentions

whoami

CarolinaCon is a yearly cybersecurity conference hosted out of North Carolina. Since 2004 CarolinaCon has been host to talks ranging from BioHacking, to developing OpenBSD, to Web app security, and beyond. Over the years we have run a wide range of events, mostly in person. The past two years we decided to run the conference online.

How did we use matrix?

We decided to run a homeserver bridged with our discord. We wanted to take careful consideration to users who have never used matrix before, and offer some background information to enable them to use it even if they were feeling unsure. Along with running our own homeserver and element instance, We also made a Space that users can join to automatically see all the rooms available for the conference. When a user creates an account on our homeserver, they are automatically placed in a few key rooms such as the Space, #CTF, #general, and #announcements. Check it out on https://carolinacon.org/coms.html

We didn't want anyone to feel left out, so all rooms are mirrored. One challenge this faced was getting permissions to work properly with rooms such as #announcements. The usage of a Space was generally positive in terms of increasing room desirability in Matrix. It was also nice to be able to include the local 2600 room into our space, something that we couldn't do with Discord.

Stats

We already had a large userbase on discord, but still had good user interaction on both sides. 150 users interacted in the #general chat. Of those users, 113 were from discord. Of the 37 Matrix only users, we had 7 separate homeservers. Its really cool to see that people who where already on Matrix, decided to federate in. Almost all homeservers had more then one person join, which is good to see.

In the future as we go back to in an person conference, we will continue to run the an online portion. The community seemed to really enjoy it, and we consider it a success as we were able to increase our outreach to world wide. Check us out at https://carolinacon.org/ , we would love to chat!

Google-free push notifications with UnifiedPush and Ntfy

Using the UnifiedPush open standard, ntfy enables self-hosted (Google-free) push notifications.

JulianF reports

In the interests of supporting Open Tech in general, I made a small contribution to matrix-docker-ansible-deploy: it can now install the ntfy push notifications server for you.

To explain what it's for: Using the UnifiedPush open standard, ntfy enables self-hosted (Google-free) push notifications. The notifications go from Matrix (and other) servers, to our self-hosted ntfy server, and then straight to our phone. Especially useful for users of Google-free Android phones, and others who want to reduce their dependence on big tech.

To set it up, see Setting up the ntfy push notifications server in the playbook docs.

Read about it on my blog: UnifiedPush notifications for your Matrix server with ntfy.

Paul's updates and blog posts

Paul shares what they did in 2022.

Paul mentions

I haven't had much time, but I did write two tiny projects and small blog posts: https://paul.totterman.name/posts/matrix-menu-bot/ & https://paul.totterman.name/posts/remarkable-matrix/

Open Tech Will Save Us on PeerTube

Hosting of the Open Tech Will Save Us talks on PeerTube.

JulianF mentions

https://wrily.foad.me.uk/open-tech-will-save-us-on-peertube -- I am publishing the Open Tech Will Save Us (OTWSU) talks on an Open Tech platform — namely on my own instance of Peertube. -- Thanks to Harald for doing it first. -- This article talks more about why, how, etc.

This Year in Trixnity

Trixnity is a multiplatform Matrix SDK written in Kotlin. You can write clients, bots, appservices and servers with it. This SDK supports JVM (also Android), JS and Native as targets for most modules. Ktor is used for the HTTP client/server and kotlinx.serialization for the serialization/deserialization.

Benedict mentions

Trixnity made some huge steps towards a fully featured cross platform matrix SDK written in Kotlin.

Starting with version 1.0.0 in January I added support for cross signing, secrets and key backup.

Version 2.0.0 in April included a large refactoring. This allows you to share a lot code between server and client implementations of the Matrix APIs. For example you can now implement a server with Trixnity. Also Olm has been bundled into most release files, push rules are evaluated, there is a new better TimelineEvent retrieving API and many more. JS has been enabled for the last module, so Trixnity is now fully multiplatform capable. With v2.3.0 dependency injection has been added to Trixnity to make it even more configurable.

The next big release 3.0.0 was in November. We added support for realm as database backend (e. g. for iOS), allowed to exchange the MediaStore, calculate power levels and many more. Some APIs in trixnity-client has been purified, because I improved the StateFlowCache. The developer experience has increased even more with 3.1.0 in December. It adds a completely new Timeline abstraction.

Matrix Community Summit 2022 Berlin

The Matrix Community Summit 2022 in Berlin was a conference entirely focused on Matrix.

jaller94 contributes

Where do I even begin? This has been such a great and fun event.
On the last days of August more than 60 Matrix enthusiasts from various countries met at c-base in Berlin.
We started with a Barcamp day for attendees to discuss spontaneous topics.
The highlight have been two days with 36 presentations and workshops on three stages.
Check out the schedule, if you want to contact some of the speakers: https://cfp.summit2022.matrixmeetup.de/matrix-summit-conference-2022/schedule/
Thanks to all attendees for the great conversations we've had! Thanks to all presenters for a schedule full of Matrix knowledge! Thanks to the c-base hackerspace for hosting us! Thanks to the sponsors for paying for the food and drinks!

For those who missed this in-person event or wish to revive some of the memories, we're publishing interviews with some community members as a podcast.
In total there are 2 English and 6 German episodes, the last one being published on Fri, 3rd Jan 2023.
https://anchor.fm/matrix-podcast0

Nheko

The motivation behind the project is to provide a native desktop app for Matrix that feels more like a mainstream chat app (Element, Telegram etc) and less like an IRC client.

Nico reports

What a year, eh? I don't know if as much happened in your lives as did in mine, but certainly stuff happened! And that certainly was the case for Nheko too! There have been plenty of new and returning faces. Before I go into more detail what happened with Nheko, I'd like to prefix it with a thank you to some specific people, who noticeably contributed to Nheko in the last year on a regular basis:

  • LorenDB, who while causing us a lot of trouble by breaking stuff, also tackles many of the more annoying issues and brings a lot of creativity to problems and their solutions.
  • MaltE, who despite being usually busy, reworked most of our mobile UI and gave Nheko a pretty bubble mode.
  • q234rty, who seems to have a solution to every issue and even upstreamed some of those patches to the KDE Qt collection, so that some of the annoying Wayland bugs won't bother many users anymore.
  • Linerly, Priit and many of the other translators, who tirelessly keep our translations up to date, even if they have to re-translate whole paragraphs after I fixed a single comma...
  • And many of the other contributors and the community, who report and fix issues as well as just make the whole journey more enjoyable!

Now with that out of the way, where are we going?

Nheko got plenty of new features, even though some of them I tried hard to avoid for a long time! For example you can now send confetti. I prefer to toggle that off, because I think it can be distracting, but it is undeniable, that it looks very fun and fun is very important!

Another one is threads. Nheko now supports them, but I would have liked for threads to work differently. Some features, like notification counts for each thread, we skip out on, since it seems very hard to support well. Instead we integrate threads into the timeline and you can filter them out. Ideally threads would behave like dynamic subrooms, with titles and listed below the room list entry, but that seems not doable with the current design of threads in the specification. So we chose a design, that is still useful, but doesn't run into such limitations.

Apart from that we really started investing into our communities support (which is how we call our UX for spaces). While showing communities as a filter is already useful, you can now also modify those filters. Nheko now shows you notification counts, suggests you to join the space for a community (if possible) and allows you to apply permission changes across the whole community.

Speaking of permissions, we invested a lot into improving our management and moderation tooling. With this you can now fine tune join rules for a room (with toggles for knocking, restricted joins and more), edit the permissions using a role-like interface, edit the addresses for a room, edit your sticker packs and more. You can also knock on rooms now, which is a way to request access to a room without it having to be public or manually messaging someone for an invite and we can now show policy lists.

Oh, one thing that definitely deserves a mention, we had our first official CVE! Now, you might think that is not worth celebrating, but it does feel like Nheko is growing up. Partially this is thanks to Github making it easy to file CVEs for security issues though. Who would have thought we ever would have our own CVE entry? We certainly need to improve our test coverage and hardening against such issues, though to be fair in this case I pretty much already wrote a comment about what the problem would be, but just didn't fix it properly... We however are also constantly improving our encryption in general, so hopefully it only becomes more secure from now on. Part of that is fallback keys, which make it easier to come back after a long period away.

Nheko now also evaluates notifications locally. This is especially great for encrypted rooms, since before the server mostly guessed what should notify or not. But it also means you get highlighted when mentioned now, which makes it much easier to find where you were notified. We also now have a line where you last left off reading the room, which is much more useful than I initially wanted to admit and I use it a lot. We also have experimental support for MSC3664, which allows us to hopefully eventually get rid of reply fallbacks, by evaluating the reply relation instead of relying on every message to include the name of who you replied to for highlight purposes...

We also improved performance, however as always anytime you do, you end up adding features, that slow you down again. However current Nheko should still start up significantly faster than 2021 Nheko.

Speaking of improvements, we have made a few for macOS this year. Apple Silicon is now natively supported, so Rosetta is no longer needed to run Nheko. This means improved battery life and performance! At least on Apple Silicon, launching Nheko on macOS should now be roughly as fast as Alt+Tab-ing to another window. Additionally, you can now reply to messages straight from the notification in the Notification Center.

One thing I didn't imagine we would ever have is a D-Bus API. This means you now can do some limited interactions with Nheko via the D-Bus API, like switching rooms using KRunner or Rofi! For FOSDEM we also added some support for widgets, because I wanted to be able to participate in the online FOSDEM without running a second client. This however is an incomplete experience, since... why run a browser in Nheko, if you have a perfectly capable browser client you can use for widgets? Nheko just shows you how to open a widget in a browser.

As already mentioned, we also significantly improved our support for the PinePhone. We now have a bubble layout, which looks better on mobile than the normal layout without bubbles. There has been significant work to make dialogs fit on mobile screens as well as allowing interaction using touch in almost all places. If you want to play with a PinePhone, definitely give Nheko a try and tell us, how you like it!

You might have noticed that we spent a lot of work on moderation tooling and that is probably something we will continue. I have a lot of ideas on how to integrate policy lists with spaces as well as using them to auto-decline invites, automatically ban people and more. How cool would it be if you could ban people community wide using a "banned members" editor in Nheko that is compatible with Mjolnir? And have permissions in spaces apply globally, maybe with some tweaks based on room types? There are a lot of cool ideas out there and we will certainly be experimenting with them.

Another topic will be building out our call support. I want to be able to use Nheko for my gaming sessions. Just drop into a voice chat room and talk to each other. Maybe do my work conference calls, including presentations as well or do remote help for my parents and grandparents over Matrix! We also really need to support calls on other platforms.

Which brings us on the last big goal: We do want to eventually switch to Qt6. We did have a branch testing out how difficult that would be and it was doable, but we were mostly blocked on GStreamer not supporting Qt6 yet. This is fixed in GStreamer 1.24, which should be out soon, so this is probably the time we can start looking into finalizing the port. Qt6 will fix A LOT of Wayland issues and give us a lot of new optimization opportunities. Maybe that is the year we can get below 100MB RAM usage on my ever growing account and make every room switch feel instant.

Well... this was a bit of a long one? Certainly it wasn't the work of one person. The Nheko community seems to just be constantly growing and there are so many people contributing, that it really makes me love open source! Thank you! All of you! It has been a great year (Nheko wise) and I hope 2023 becomes even greater! Have a great year!

Timo Kösters' year in Matrix

Timo gives an update about Conduit and their year on Matrix.

Timo on Conduit ⚡️ tells us

Hello everyone, I am the maintainer of the Conduit Matrix project and this year my goal was to make Conduit more reliable. I've released three major updates this year, going from v0.2 to v0.5:

For example, the admin room received a lot of love this year. It's a Conduit-specific way of controlling the Matrix server using a chat bot. Commands are parsed using clap and perform actions like creating or deactivating users, adding appservices or listing rooms.

Conduit now supports RocksDB as the database, which is better than the previous ones, but still has some problems. I have worked on a new database abstraction layer that would allow using PostgreSQL in the future.

I have also worked on all sorts of bug fixes. End-to-end encrypted chats work reliably, Server ACLs are respected, the user directory hides private users and so on.

These and many, many other fixes allow me to use Conduit for most of my Matrix interactions now and most of the issues I encounter are client and not server bugs, see https://conduit.rs/issues

My goal for 2023 is adding all the modern features we need to be competitive with Synapse, like threading, space exploration, registration tokens and so on.

I also want to contribute to the Matrix spec and implement my ideas in Conduit, for example changing state resolution to speed up room joining.

I can't promise to finish all of this next year. I will finish my Bachelor's degree next year and for now I'm a full time student working on these things in the remaining time.

Thanks to all my individual sponsors this year and to FUTO ( https://futo.org/ ) for making this worth it financially as well. https://liberapay.com/timokoesters

Sticker/emoji pack collection

Tastytea maintains a collection of MSC2545 sticker pack rooms and gives an update about how the experience has been so far.

tastytea mentions

At the end of 2021 i made a room with a Blobcat emoji pack, and since i could not find a place to announce it, i started a space to collect rooms with sticker/emoji packs. It began with 3 rooms and under 500 images, but withMSC2545 getting implemented in more and more clients in 2022, the space quickly grew and we're now at 7 rooms with more than 30 packs containing over 2000 stickers and emojis!Blobcat tooting a party horn

One thing i didn't anticipate was that people started to request new stickers and sometimes submitted their own. We're not just collectors anymore but also the prime source for Blobcats on Matrix![citation needed]If you have a sticker room too, please drop by our lobby and tell us about it so we can list it and make it known to more people! Do you make your own Blobcats or want to learn how to? Visit my roomso we can spread the blobby joy together! Blobcat holding heart in its paws

Meetups in Berlin

Berlin has a vivid Matrix community with not only one, but two Matrix meetups.

jaller94 tells us

Berlin has a vivid Matrix community with not only one, but two Matrix meetups.

Once a month, the Matrix User Meetup Berlin (MUMB) invites people to chat about Matrix and meet other users.
In summer this exchange of ideas and starting points into Matrix was sometimes combined with food from the BBQ grill.
For their upcoming events in 2023, check out the room #mumb:c-base.org. It takes place at c-base on the first Wednesday of a month.
Thanks to the organiser saces for bringing people together!

Furthermore, we have the Berliner Matrix Salon 🍷 (previously called Matrix Meetup Berlin, which made it hard to tell apart from the MUMB).
In the first half of 2022 we had regular meetups for developers and server admins to talk about their Matrix projects. This meetup eventually led to the Matrix Community Summit in August.
We still meet infrequently to discuss our projects and what public events we could host next. We'd love to host a series of presentations at various offices which also appeal to an audience outside the Matrix community (e.g. education, public sector and health care which have a growing Matrix adoption in Germany). Ping me or Yan, if you want to help by being a presenter, have access to an office or know of a particular audience in Berlin to bring Matrix to.
The room is #matrix-berlin:matrix.org. Feel free to ask when we're meeting next.

Sailtrix

Sailtrix is a Matrix client for SailfishOS.

HengYeDev contributes

The following major changes have been applied to Sailtrix in the year 2022, in no particular order:

  • Basic emoji verification
  • SSO Login
  • Create room
  • Integration with Sailfish.Share API
  • Room searching UI
  • and numerous cosmetic improvements and bugfixes

This year in NeoChat

NeoChat is a client for Matrix, the decentralized communication protocol for instant messaging. It is a fork of Spectral, using KDE frameworks, most notably Kirigami, KConfig and KI18n.

Tobias Fella mentions

It's been an interesting year, that's for sure :)

Let's start with some statistics:

Some quick git magic shows 689 commits for this year so far; Roughly 200 of those were for translations.

On the topic of translations, NeoChat is currently (almost) fully translated into 17 languages, with 17 others being in progress.

One of the major areas of work this year - like last year - has been end-to-end-encryption, which, as of last week, is released in libQuotient and NeoChat. This means that you can now read new messages and verify your session with other devices. You won't yet be able to recover from (most) undecryptable messages, we're working on implementing those parts of the matrix specification.

NeoChat's user interface saw major improvements this year:

The message list has been improved to be less buggy, adapt better to different form-factors and the different appearance options NeoChat offers, like the "compact" message style.

The compact style also recently gained a sibling in the equivalent style for the room list, which makes the list more compact by not showing the last message of the room.

Input handling has been overhauled, as a result user mentions are now highlighted while writing a message, making them more reliable and appear less magic to the user.

More new features include basic support for room search, improved emoji and reaction handling (including better emoji data, search and a skin tone selector), basic developer tools, support for showing and responding to polls and an improved account switcher. One of my personal highlights is support for collapsing large amounts of state events, which makes low-activity rooms significantly more pleasant to use.

On the moderation side, we've implemented support for reporting messages to the homeserver administrators and improved the kicking and banning support.

Progress on the space support has unfortunately been slower than hoped, with the only result of the GSoC project being the space list that is shown at the top of the room list. Space support will be one of the areas to work on in 2023.

Plasma users have gained some nice integration points with their desktop: File uploads and downloads will now be shown in plasma's job tracker, there is now a D-Bus runner for opening rooms, and you can share messages with purpose-enabled apps.

Finally, we've been working on improving NeoChat's settings. Visually, the application and room settings have been ported to newer components that look significantly nicer, especially on mobile devices. We've also added settings for configuring room visibility, join rules and notifications and added support for configuring a proxy to use when connecting to a homeserver.

In terms of contributors, this year was better than last year, with several people becoming active in development and bug reporting. We're especially excited about having been able to add James Graham as a third maintainer for NeoChat after all his work, focusing mostly on NeoChat's front-end and settings.

imbev's year in Matrix

imbev gives an update about what they have been up to this year.

imbev tells us

This past year I have worked on several projects using Matrix:

  • matrix-rss-bridge
    • This is a bot that can be configured to watch RSS/Atom feeds and relay to Matrix rooms. It is written in Python, configured with a single config.toml, and licensed under the GPLv3.
    • I don't actively work on it, however I will review and merge contributions that improve the project.
  • matrix-debate-bot
    • This is a bot that "moderates" discussion in Matrix rooms. It does nothing more than provide a signal every 2 minutes. Also in Python, interacted with via "command" messages, and licensed under the GPLv3.
    • Same thing as the previous project :)
  • matrix-quicksetup
    • This is a docker compose file and a few config files to help setup a Matrix homeserver and client. The homeserver setup is Conduit, and the client is Cinny. I don't advise that anyone use this in a serious deployment, but if you want to quickly test Matrix entirely on your local machine, this may be useful.
    • Same as previous
  • simplematrixbotlib
    • This is an easy to use bot library for the Matrix ecosystem written in Python. Having taken ownership of the project, I maintain the project with help from @kim:sosnowkadub.de, @moanos:hyteck.de, and others. Thank you for your contributions!
    • While I anticipate releasing version 3 of simplematrixbotlib, this next project has captured my focus recently.
  • matrix-social
    • matrix-social is a Matrix "Social Media" client. It is a webapp written in Rust using WASM, Yew, and the Matrix Rust SDK. Inspired by the design of Reddit, matrix-social will provide a similar experience, but based entirely upon Matrix. By providing seamless interoperability with Matrix chat clients, matrix-social will extend the Matrix ecosystem without dividing it. matrix-social currently lacks crucial features that will be added soon.
    • I actively develop matrix-social and will be doing so for the foreseeable future. At the moment, I am porting the styling from the Bulma CSS framework to TailwindCSS for greater control. If you'd like to try out the current state of matrix-social, https://imbev.codeberg.page/matrix-social/ is available. Join us in the Matrix room #matrix-social:matrix.org !

Kitsune's year in Matrix

Kitsune, one of the Spec Core Team members and maintainer of the Quotient client for Matrix, gives an update about their work this year as well as some new projects.

kitsune mentions

This year hasn't been very productive for me (not in Matrix at least) but a few things are worth a mention.

Quotient

This year I finally got to diving into the (new) E2EE code for libQuotient that NeoChat fellows started writing back in 2021, and was quite happy to end up collaborating with Tobias Fella on making it even better, all the way to merging and releasing way overdue libQuotient 0.7.0. The best news for me in all this was not even getting E2EE to its first actually usable release but the fact that libQuotient is no more a one man show. And now that there's yet another libQuotient-based client (with much more solid traction than any client before), there's hope that the project will move on at a somewhat steadier pace.

Spec Core Team

I did my share of MSC reviews (much fewer than I'd like to) and carried on with my role of ensuring Element doesn't throw too much weight behind its contributions (although there are a few other people in SCT who seriously push for neutrality in things we work on; so that role is rather formal). One thing that I unfortunately did not find enough time to help with this year but I'm sure we'll make it happen in 2023 is to move our API definitions from Swagger (v2) to OpenAPI v3, ditching all the Swagger extensions we had to add - thanks to Kevin for driving this home.

CLUP.chat

About a year ago I was contacted by folks who wanted to use Matrix as a backend to bridge WhatsApp, Signal and Telegram for scout (and other) communities in Germany and asked me to be their technical advisor. Less than a year later we went live (you can connect the groups here), soon after ran into rate-limiting issues outside of Matrix (centralised networks, heh...), did the homework, and now busy making the whole thing worth charging money for. The backend is almost entirely vanilla code for Synapse and Mautrix-based bridges, plus a small website and a non-Matrix bot to onboard people.

Jae's year of Matrix

Jae gives an update about what they worked on this year.

Jae (Beep) shares

Yet another year well spent on Matrix, which was a bit more dynamic than the previous ones.
From mitigating spam attacks to creating brand-new projects and also contributing to others, there's no shortage of news.

cert-monitor

cert-monitor is a small program made entirely in vanilla Python that checks the validity of your SSL certificates and warn you when they are about to expire.
The idea for it originated in a Matrix room in which the other administrator would usually forget to renew SSL (bringing down their homeserver).
The software can send notifications to e-mails and Matrix and other methods are in the works like NTFy (but a bit on stale since Matrix support was the main goal).

MSC3868: Room Contribution

The MSC3868 (currently still a draft) is a spec proposal by me and Aminda to add a way for rooms to advertise easily official links like code repositories, ways to contribute to translations, donations and more but only showing to users inside the room.
The start of it is that we noticed that usually users don't even bother reading the topic/MOTD of the room, which renders putting links inside of it just about useless in most cases.
The proposal is still being refined, but the big lines are there already!

gh-bot

gh-bot is a small bot made to be used with the webhook function of various Git forges (namely GitHub, GitLab and Gitea/Forgejo).
The bot itself is pretty simple and will just output new commits, new stars and build statuses in all the rooms the bot is.

hsl-matrix-notifier

hsl-matrix-notifier has a bit of an exotic use case: it is made to track problems with the Helsinki public transports company and warn about potential disruptions.
For now, it is very basic and is still being worked on to have a better version (like if no news, it will still post old stuff when I would like in term something more like an RSS feed).
When I move, I'll probably spin off this bot to make a local version or even build something, so it can be configured by city.


In the end, this year has been a very dynamic one in the Matrix world, and I can't wait to see what is coming next.
For my part, I don't intend to stop there, and I have even more Matrix related projects, so stay tuned!
Oh also, I almost forgot, happy new year Matrixians, stay awesome!

Cinny

Cinny is a Matrix client for instant messaging. Our main goal is to make the best UI/UX so that less technical folks can easily adopt Matrix.

ajbura shares

Cinny is a Matrix client for instant messaging. Our main goal is to make the best UI/UX so that less technical folks can easily adopt Matrix.
2022 has been really productive year for Cinny, we have landed Full Spaces support, Room settings, Custom emojis and stickers, Session verification and cross-signing, and so many cool features.

Lately, we have been working on a design system for Cinny and it is almost ready to release. Our short-term goals for 2023 would be to incorporate the design system into Cinny, and convert the code to TypeScript both of which will greatly improve the developer and user experience.

You can join Cinny space to talk about it or browse https://cinny.in

2022 year in Nyatrix

Nyaoori gives us an update about their various Matrix related projects.

Nyaaori ⚛️ tells us

  • Initial workings on spec.cat
    • Intended to be a community-driven extension specification to allow for easier collaboration and client/server integration prior to submitting an MSC
    • Would allow for finalising community things even if they get little to no attention from SCT
    • Eventually will take over maintenance of Catalyst
  • Initial work on decentralised trust/moderation system
    • Should work on under any federated system, not just matrix
    • Intended to reduce workload on moderators/admins
    • Makes use of a web of trust system, with each user or server being their own center of trust
  • Catalyst (fork of conduit) progress
    • Cacophony
      • Implementation of Discord C2S inside a matrix homeserver

      • Marginally modified Discord web client can connect to it

    • Partial Dendrite API support
      • Allows using TARDIS

    • Room V10 support
      • => Upstreamed to Conduit

    • Support for private read receipts
      • => Upstream in progress

      • Partial support for displaying space hierarchies
    • Backfill to other servers via S2S
      • => Upstream in progress

    • Code refactor alongside Conduit
    • Many minor bug fixes
      • => Most upstreamed

  • Initial research into designing my own matrix client
    • Intended to be extensible
    • Plugins/extensions should be installable via matrix itself
    • Eventually will be spec.cat's reference client

Ement

Ement or ement.el is a Matrix client for GNU Emacs, the classic-yet-ever-new text editor and Lisp environment.

alphapapa contributes

Ement is a Matrix client for GNU Emacs, the classic-yet-ever-new text editor and Lisp environment. After a couple of years of off-and-on development, 2022 saw the first versioned release, published to GNU ELPA, the official Emacs package repository (so it's installable into Emacs "out-of-the-box," without any additional configuration).

This development was enabled by the maturation and publishing of Ement's underlying HTTP library, plz, also to ELPA. And another library, taxy, used in Ement for organizing rooms into meaningful groups for the UI, was also released to ELPA.

Along the way, Ement gained useful features like a helpful command menu based on the Transient library (the one used in Magit, the popular Emacs frontend to git), the ability to show and send images, files, and reactions, read receipts, room directories and searching, an improved notification system, fancy, configurable room grouping provided by taxy, and many other improvements and fixes.

As well, although Ement doesn't support E2EE natively, users have successfully used it via Pantalaimon, the E2EE proxy daemon, allowing Ement to be used with encrypted rooms.

Altogether, Ement now provides a stable, reliable client for Emacs users to "jack in" to the Matrix. Users and interested parties are invited to join the chat room, #ement.el:matrix.org, where users help each other and announcements are made.

Looking forward to 2023, it's planned to improve support for newer versions of the client-server spec. Sliding-sync support will be especially helpful for improving initial sync times, and the new event-to-timestamp endpoints will aid in searching room events and paging back in history by date. As well, the next stable release of Emacs, version 29, will include native SQLite support, and the author looks forward to investigating how that might be helpful for Ement (e.g. caching events locally, similar to Element).

And as always, like Emacs, Ement is Free Software, so contributions are welcome. Feel free to submit bug reports, feature requests, and other feedback on the repo's issue tracker and in the chat room.

Matrix Highlight

Matrix Highlight is a web annotation tool based on Matrix. It allows you to select and highlight text on webpages, as well as comment on it. Because it's built on Matrix, you can keep this information hosted on your own hardware, and highlight pages together with other users.

Daniel mentions

Matrix Highlight is a web annotation tool based on Matrix. It allows you to select and highlight text on webpages, as well as comment on it. Because it's built on Matrix, you can keep this information hosted on your own hardware, and highlight pages together with other users.

This year, Matrix Highlight switched to manifest V2. This is a browser extension version format supported by Firefox (Chrome too, but not for the web store). Now, you can highlight pages from Firefox! In addition to this, the project switched to using a shadow DOM for styling its UI elements, which makes it significantly less likely to be affected by the style and design of the webpage it's running on.

You can find Matrix Highlight on its GitHub page or read about it in the introductory blog post.

Populus-Viewer

Populus-Viewer is a social annotation tool, powered by Matrix. It lets you attach Matrix chats to PDFs, images, videos, and audio files.

gleachkr tells us

Populus-Viewer is a social annotation tool, powered by Matrix. It lets you attach Matrix chats to PDFs, images, videos, and audio files.

It's been a big year for populus! Since last January, we've seen huge improvements in usability, appearance, and Matrix feature support, that have taken populus from a fun experiment to a useful tool (though we're still considering ourselves in beta). The topline item is that we've achieved our original goal of supporting matrix-powered social annotation of PDFs and audiovisual media. So what's left to do?

Here are some ideas for the New Year.

  • Let's add support for annotating web files: HTML (out on the web) and WARC (web archives, stored as files on matrix).
  • Let's add widget support for populus chats, so you can annotate your documents with all sorts of matrix-powered tools.
  • Let's get moving on the social annotation MSCs
  • Stickers?

If you'd like to talk about any of these ideas, or add some of your own, come join us at: #opentower:matrix.org

Aminda's matrix update

Aminda (she/they 🏳️‍⚧️ MSC1769|MSC3189) reports

so I have been doing

matrix-docker-ansible-deploy

Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker

Slavi tells us

For matrix-docker-ansible-deploy, 2022 started with breaking the Synapse monopoly by adding support for the Dendrite Matrix homeserver in early January. This required various internal changes so that the Ansible playbook would not be Synapse-centric anymore. This groundwork paved the way for continuing in this direction and we added support for Conduit in August.

When it comes to the matrix-docker-ansible-deploy Ansible playbook, 2022 was the year of the non-Synapse homeserver implementation. In practice, none of these homeserver implementations seem ready for prime-time yet and there is no migration path when coming from Synapse. Having done our job of adding support for these alternative homeserver implementations, we can say that we're not getting in the way of future progress. It's time for the Dendrite developers to push harder (development-wise) and for the Synapse developers to take a well-deserved long (infinite) break, and we may get to see more people migrating away from Synapse in the next year(s).

Support for the following new bridges was added:

Support for the following new bots was added:

Support for the following new components and services was added:

Besides these major user-visible changes, a lot of work also happened under the hood:

These sibling playbooks co-exist nicely with one another due to using Traefik for reverse-proxying, instead of trying to overtake the whole server by running their own nginx reverse-proxy. Hopefully soon, the Matrix playbook will follow suit and be powered by Traefik by default.

Last, but not least, to optimize our etke.cc managed Matrix server hosting service's performance (but also individual Ansible playbook runs for people self-hosting by themselves using the playbook), we've improved playbook runtime 2-5x by employing various Ansible tricks.

MTRNord's Journey of Matrix 2022

MTRNord is known for starting way too many interesting projects. Definitely worth checking out!

MTRNord tells us

Since I worked on so many projects this year, I am trying to group these here.

Matrix-Art

Matrix Art was meant to be a Deviantart or Art Station style image gallery using Matrix. This project, as many others of mine, is currently on ice.

It offered profiles, uploading images and comments using Spaces as FS.

You can see the latest version of it at https://github.com/MTRNord/matrix-art/pull/121

Matrix Moderation Widget for Mjolnir

A widget made to be a companion to Mjolnir. It offers a form input and lists to view the policy lists.

For 2023 this effort is going into the Moderation bot I am currently developing as part of the Matrix Spam ML project. While not being a widget, similar UX decisions are used.

Matrix Fuzz

A simple fuzzer written in rust to fuzz some endpoints of Synapse.
A Fuzzer is essentially a bruteforce approach to finding bugs. Usually by sending pseudo random characters.

As part of running this, I found a few minor verification issues at Synapse:

  • https://github.com/matrix-org/synapse/issues/13510
  • https://github.com/matrix-org/synapse/issues/13511
  • https://github.com/matrix-org/synapse/issues/13512
  • https://github.com/matrix-org/synapse/issues/13664

For 2023 the goal is to fuzz more endpoints, especially within the rooms using fuzzed events.

MRSBFH - Matrix-Rust-SDK-Bot-Framework-Helper

In 2022, I also worked on further updating https://github.com/MTRNord/mrsbfh which is a command bot framework for the matrix-rust-sdk.

Since then, the SDK massively improved how you interact with the API. Due to this, there are no plans to further develop it as by now the SDK has a sufficient API interface.

Generic Conference Bot

People likely know the Conference bot from FOSDEM. Back in February, I did work on making it possible to be used more generic without the hard-coded penta integration.

As a result, this branch was created: https://github.com/MTRNord/generic-conference-bot/tree/MTRNord/Pretalx It offers a way to easily add new backends and adds a pretalx backend. Due to the changes it has, there is currently no way this is possible to upstream, but maybe it will help someone from the community.

Matrix Spam ML

This project is mainly a project to experiment with using Machine Learning for Moderation as a warning system.

As part of this effort, there is currently an RNN model and a BERT model available. The trainingset is public.

For users, there is both an API endpoint for this available and a Matrix Mod Bot in progress.

You can find more about it at https://github.com/MTRNord/matrix-spam-ml or join the chat at #matrix-spam-ml:midnightthoughts.space

Matrix Faq Rasa

This is a RasaX based FAQ Bot project. The goal is to have a NLP based FAQ bot. It currently is very simple and not finished. The goal for 2023 is to continue working on this and getting it to a stable level where people can contribute to.

Matrix.org Zola

Last but not least, I did kick off the Zola rewrite of Matrix.org together with Thib and jplatte, and a small team of element devs and designers. Please note that this was initiated by the community and still is a community project.

The goal of this rewrite is to move away from Gatsby and rewrite and redesign matrix.org using the zola static page generator.
We made great progress this year, but sadly it will take a bit longer before it can be deployed. :) If you want to watch progress, I suggest looking at things labeled with "zola" in https://github.com/matrix-org/matrix.org/

Miki - A Matrix Wiki

Miki is a MediaWiki meant for Matrix. It isn't a bridge, but instead the goal is to document projects and history around Matrix. This project aims for 2023 to extend the data, while in 2022 the work was focused around infrastructure.

That's all I know about so far. I hope you had a great year and that the next one will be even better. As you can see, the Matrix community is a riot of colors and seems to grow every year. I absolutely love it!

NextPage 2