This Week in Matrix 2021-01-22

2021-01-22 — This Week in Matrix — Ben Parsons

Matrix Live 🎙

Dept of Status of Matrix 🌡️

Beeper launched

Eric Migicovsky announced:

NovaChat is now

Beeper

  • New website! beeperhq.com. Beeper is a Matrix server+client combo preconfigured with 12+ bridges. Our mission is to bring a lot of new users into the Matrix ecosystem and give them a fast and powerful client to message people on all networks. Beeper is a paid subscription service, but since all the bridges are open source, you can set the whole system up yourself for free if you choose

  • We're doing a lot of work to boost bridge reliability. Beeper now comes with bridges to Signal, Whatsapp, FB, Slack, Skype, Telegram, Instagram, Hangouts, Twitter, Discord. iMessage coming within a week or two.

  • Sneak peek below of our upcoming desktop UI

Looking for contract work?

  • We are offering bounties of $500-2,000 USD to build new open source bridges based on tulir's mautrix-python or mautrix-go libraries. In particular, we would love to commission Linkedin, MS Teams, Google Chat, GroupMe, WeChat, Snapchat (maybe run it in Anbox?), Line and Email (gmail specifically) bridges.

  • We are also looking for contract iOS and Android developers familiar with the Element codebase to reskin the app with our new UI. Part-time roles with potential for full time.

  • If you're interested, please send me a DM @eric:beeperhq.com

2021-01-22-KJ5nT-room.png

GSOC 2021

Google Summer of Code has come around again! Last year was really successful for Matrix: six projects, with members of the community coming forward to mentor students for their project. This year there is a slight tweak to the formula: the projects will now be 175 hours, rather than the traditional 350, over the summer.

Since we need to submit an application to Google within the next few weeks, I have a request: if you admin a Matrix-related Open Source project and would like to have a student work with you over the summer, get involved!

How to do this:

  • Read Google's own documentation on the setup. This is fairly thorough, and should get you most of the way there.

  • Think about a task, that you consider a student should be able to contribute to your project over a 10-week/175-hour period. Try to come up with 2-3 of these.

    • It should be a well-defined feature that genuinely contributes to the progress of your project, but maybe doesn't block other work on the critical path.
    • This is a very important step, and one that may need some time and discussion.
  • DM me (@benpa:bpulse.org) and we'll talk about next steps.

Dept of Spec 📜

kitsune (aka "fox-avatar guy") reported:

Matrix URI scheme proposal has FCP proposed now - if any of you, the readers of this, have anything to say about it that wasn't said in the past 2 years, speak soon or forever hold your peace. (Ok, you're allowed to write a separate MSC if you come late with revelations.)

This has been an labour of love for kitsune, kudos on his perseverance!

Spec

anoa said:

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://matrix.org/docs/spec/proposals.

MSC Status

Merged MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

New MSCs:

Spec Core Team

We've decided to ditch the focus as it was clear that it wasn't a great indicator of progress. Once one team member has reviewed all of the focus items, they will move on to other MSCs. None of that work is reflected in the focus, and items in there often stick around while waiting on a small number of people to complete work on.

As such, we'd instead like to direct people to the Spec Core Team Backlog board, which is a better representation of the current state of things. And of course the weekly list of MSCs state changes above.

2021-01-22-VYFRA-stacked_area_chart.png

Dept of Servers 🏢

Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander told us:

At the beginning of this week we released Dendrite 0.3.6, which included a number of refactors in the sync API and a selection of fixes. It is also the first version to be released with multi-arch Docker images with ARMv7/ARM64 targets.

Since then, the following changes have been merged:

  • Sync filtering support for event types, senders as well as better-supported limits

  • Federation support for MSC2946 (Spaces Summary)

  • Fixed a bug where large well-known files could consume a lot of memory

  • Support for in-process DNS caching for federation traffic (although it is disabled by default)

  • Some preparatory work for tracking the most recent membership states in the sync API for future history visibility work

If you are running a Dendrite server, it is highly recommended that you upgrade to the latest version!

Spec compliance is at:

  • Client-server APIs: 60%, up from 58% last week

  • Server-server APIs: 83%, same as last week

As always, feel free to join us in #dendrite:matrix.org for general Dendrite chat or #dendrite-dev:matrix.org for development discussion.

Synapse

Synapse is a popular homeserver written in Python.

callahad reported:

twim:

Synapse

🎉 Synapse 1.26.0rc1 is here!

☠️ But don't install it yet; wait for rc2.

A few issues were reported with rc1 (#9187, #9193, #9208), and we'll issue an rc2 early next week once we're confident they've been resolved.

Otherwise, once 1.26.0 is released you can look forward to a new algorithm for calculating auth chain difference in v2 State Resolution which should significantly speed up some of the most expensive state resolution calculations (#8622).

We've also dramatically improved the performance of redactions in large rooms, helping Synapse's moderation tools scale to communities of any size (#9022). And speaking of scaling, Synapse 1.26 makes it possible to offload many different APIs to worker processes, including read receipts and account data persistence.

Lastly, Synapse 1.26 will include support for multiple Single Sign-On Identity providers, though we expect further fit-and-finish for that feature to land in 1.27.

You can preview the changelog and upgrade notes now, but remember: wait for rc2! 😉

Dept of Bridges 🌉

mautrix-facebook

Tulir said:

The switch to acting as a mobile app I mentioned last week has been merged and it's starting to be clear that it works better. So far logging in has worked fine for everyone at least after enabling 2FA.

Changes this week mostly included tons of bugfixes (thanks to everyone who already updated and found the bugs) and re-adding some old features like read receipt bridging. The SQLite migration script now exists too. Upgrade instructions can be found at https://github.com/tulir/mautrix-facebook/wiki/Upgrading-to-v0.2.0

Dept of Clients 📱

Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) told us:

Cheers everyone! On Wednesday we released version 0.8.0 of Nheko! The changelog is far too long, because so many people contributed (and it has been a while since the last release), so I'll just put some highlights here!

Highlights

  • Voice and Video Calls (contributed by trilene)

    • Call your friends right from within Nheko.

    • Use your camera if you want them to see your face!

    • This requires a somewhat new gstreamer, so our builds don't support it on all platforms yet.

  • Cross-Signing and Device/User Verification (contributed by Chethan)

    • Verify who you are talking to!

    • Ensure no malicious people eavesdrop on you!

    • Enable your connected devices to access key backup and your friends to see, which of your devices you trust!

    • Show devices in a users profile.

  • Separate profiles (contributed by lorendb)

    • Run multiple Nheko instances with separate profiles side by side.
    • Use multiple accounts at the same time in separate windows.

Features

  • Before a call select which audio device to use. (contributed by trilene)

  • Auto request unknown keys from your own devices.

  • Add a command to clear the timeline and reload it. (/clear-timeline).

  • Add a command to rotate the outbound megolm session. (/rotate-megolm-session).

  • React to messages instead of replying with arbitrary strings using /react.

  • Inline emoji and user completers. (contributed by Lurkki)

  • Show filename on hover over an image. (contributed by kamathmanu)

  • Mobile mode, that disables text selection and changes some dialogs.

  • Allow sending text after a /shrug command. (contributed by MayeulC)

  • Allow selecting a ringtone. (contributed by trilene)

  • View avatars fullscreen. (contributed by kamathmanu)

  • Request or download cross signing secrets in the settings.

  • Support 'matrix:' URIs. This works in app on all platforms and on Linux Nheko may be opened by clicking a 'matrix:' link.

  • Support inline replies on notifications on Linux.

Packaging is currently in progress, but it will probably take a bit. In the mean time you can download the release from here: https://github.com/Nheko-Reborn/nheko/releases/tag/v0.8.0

Please tell us, what you think and report bugs as you find them! And thanks again to all the contributors! It was a great pleasure to work with you and you really made an impact!

Over and out, the Nheko team!

Adrien added:

https://tracker.debian.org/news/1222370/accepted-nheko-080-1-source-into-unstable/
Nheko 0.8.0 was in Debian before TWIM.

❤️ for the packagers!

fluffychat 0.25.0

FluffyChat is a cute cross-platform matrix client. It is available for Andorid, iOS, Web and Desktop.

krille said:

fluffychat 0.25.0 is out with a lot of bug fixes, improvements, minor design tweaks and a new 3 column layout. iOS will skip this release until we can bring it to the AppStore next week or so

2021-01-22-Ctpne-bildschirmfotovon2021-01-1620-52-22.png

Element for Nextcloud

Gary Kim said:

Element for Nextcloud v0.6.19 has now been released. The new update contains fixes for Single sign-on users, the ability for admins to easily show or hide the labs settings, and an update to Element Web v1.7.17.

P.S. This will be the last version to support Nextcloud 17 and 18 if you're still on those versions.

Element Web instance on IPFS

TR_SLimey announced:

I've set up an Element Web instance on IPFS, which means that now, not even Matrix client downloads can be blocked - censorship resistance at its finest :P

It can be found at:

or

Element Clients

Updates supplied by the Teams

Web

  • Various widget related improvements
  • Changed guest access to uniformly only allow read access for now
  • Improved CI runtime when testing PRs

iOS

The release we built last week has been blocked due to push notifications issues. We are still on the case On the e2ee side, we have been working on an optimisation for the key re-share mechanism

Dept of SDKs and Frameworks 🧰

caridina, Crystal library

erdnaxeli reported:

Today a present you a Matrix client library I've been working for the last few months: caridina.

It is a Crystal library. Currently for reading it implements the sync API and supports the events to do text messaging (all state events + m.room.message). For writing it provides methods to send messages, edit them, and send receipts and typing notifications.

While I would not recommend this library to write a full featured client, it is enough to write a simple text bot. I currently use it for some of my own projects. The README provides some examples of how to use the library.

Feel free to try it, report bugs, ask for missing features if you need them or even contribute!

libkazv (and the Kazv Project)

tusooa reported:

libkazv is a sans-io C++ (gnu++17) client library

built upon lager. Along with it there is kazv, a kirigami/qml client, and a

forward bot between matrix and tencent qq. Talk to us on #kazv:tusooa.xyz.

Features

(Copying from readme:)

  • Logging in

  • Receiving room states

  • Receiving room messages

  • Receiving account data

  • Receiving presence

  • Sending messages

  • Send room state events

  • Create rooms

  • Room invites

  • Join rooms

  • Typing notifications

  • Receipts and fully-read markers

  • Leaving and forgetting rooms

  • Content repository

  • Send-to-device messages

  • E2EE (send and receive events only)

What goes here?

This week we ("tusooa and her longcat," we hope someday we can remove this annotation :P)

implemented sending and receiving encrypted events in rooms. Check a demo video below:

Opsdroid

Cadair said:

TWIM:

opsdroid

opsdroid is an easy to use chat-ops framework with excellent Matrix support.

0.20 Release

This week opsdroid released version 0.20. This is a massive release that's been a long time coming because of a complete rewrite of the internals of the matrix connector to use matrix-nio---thanks to @awesome-michael for the initial work on this.

Having ported the connector to nio, our GSOC student @Tyagdit got to work polishing the nio port and reimplementing the matrix database module in the core opsdroid library. Opsdroid has a concept of memory which is a key-value store which can be backed my many different kinds of databases. The matrix database stores the opsdroid memory in room state, meaning your bot's database and messages are all stored in the same place.

Finally, the other big feature added to the matrix support in this release is End to End Encryption support. Thanks to using matrix-nio as our matrix library it was possible to implement support for encrypted matrix rooms. This also includes support in the matrix database for encrypted memory which works by referencing event ids in room state (see here for more info). As this is the first release to support E2EE I would still consider it "beta"; please open issues if you have any trouble using it.

Highlights

  • End to End Encryption support in the Matrix connector.

  • Matrix database now included in core, with e2ee support.

  • Use of Python's install "extras" to allow for installations with fewer packages.

  • Improved documentation of the matrix connector and database (at least a little).

  • Support for Python 3.9 (and dropped support for 3.6).

Checkout the full release notes for all the gory details.

If you have any questions or want to get involved come say hi in #opsdroid:matrix.org, raise an issue on GitHub and checkout the docs.

trixnity (kotlin) progress

Benedict said:

A little sneak peek from trixnity, a crossplatform Matrix SDK. Currently I have some issues with ktor, which breaks my serialization.

trixnity

quotient

kitsune reported:

libQuotient has initiated transition from LGPL 2.1 to LGPL 3 as its distribution license. This is partially driven by the fact that newer Qt is (mostly) distributed under LGPL 3 so the "combined work" (legalese for libQuotient including and linked with specific Qt pieces) would be covered by LGPL 3 anyway. Boring, right?

kitsune added:

Those looking at my contributions to Quotient might have noticed the change of the primary commiter's name. Don't fret, this is still me, I just shed the pseudonym (and those who've seen the interview knew my real name already).

Watch "the interview" here, where we discuss (then) progress on MSC2312 (mentioned earlier), and plenty more.

Dept of Ops 🛠

Matrix Corporal

matrix-corporal manages your Matrix server according to a configuration policy

Slavi reported:

Version 2.0 of matrix-corporal has been released.

It's a huge release bringing many improvements (read all of it in the release notes).

Here's a short summary:

  • an Event Hooks system has been introduced, so matrix-corporal can now also act like a "generic firewall" (similar to what mxgwd was doing)

  • device-free login is now used when impersonating users (thanks to a new API introduced by Synapse v1.24.0) - this is both faster and more resilient.

  • support for Interactive Authentication (and thus, End-to-End-Encryption) has been added. Users can now set up E2EE keys, manage devices, etc. (actions that require Interactive Authentication and were previously broken). Requires cooperation between matrix-corporal and the REST auth password provider module.

  • End-to-End-Encryption control. matrix-corporal can enforce whether rooms that users create are encrypted or unencrypted. You can force-disable or force-enable encryption for locally-created rooms.

  • fixes user-creation regression that happened with Synapse v1.24.0. matrix-corporal v1.12.0 is also out, with a backport of this fix (for users who don't want to jump to 2.0 yet).

Dept of Interesting Projects 🛰️

Matrix Notepad

KB1RD reported:

  • It's not dead! yet

  • There's been some code refactoring on the algorithm. Mainly, the search tree used has been split into a different package

  • I'm working on porting the Notepad to the new widget API. Ongoing work is on the nextgen branch and is tracked by this project. The widget is currently blocked on some stuff in the widget API, so I probably won't be releasing soon. The code in there needs a ton refactoring, too.

  • This means that the old notepad client will disappear on the next release and you'll need to add a widget for the Notepad for any documents that you want to edit. Currently, this means you would have to use Element, but I heard Ditto just might be doing some widget work

  • The widget API is planned to do everything and more that my "mxapps" project was supposed to do, so that project will be deprecated in favor of using the widget API

  • There's also a little demo/teaser video showing the old notepad talking to the new one. You can see the rate limiting issues that the Notepad hits there, which is on my todo list.

Dept of Guides 🧭

Superb documentation from TU Dresden, as they roll out their deployment

Marvin Dropp said:

doc.matrix.tu-dresden.de

We set up a bilingual (de, en) documentation for all of our university members, to help them get in touch with our matrix instance easily. This documentation is rich on screenshots, simple explanations and will be improved continuously.

Also we mirroring the documentation to GitHub to provide access of our sources to everyone.

(https://github.com/matrix-tu-dresden-de/Dokumentation)

We would appreciate to add further institutions of higher education with own matrix instances to our list.

Viva la federation!

Christian Bruchatz shared some addional context about their deployment growth:

2021-01-22-wC6rz-image.png

Watch Matrix Live (at the top) this week for a chat with Marvin and Christian.

Deploying a Matrix server on Fedora CoreOS, from fedoramagazine.org

Andy announced:

I couldn't find if someone else shared this, but Fedora just published an article about deploying a Matrix server on Fedora CoreOS.

https://fedoramagazine.org/deploy-your-own-matrix-server-on-fedora-coreos/

Matrix in the News 📰

EMS-Slack Bridge coverage

kim ([email protected]) told us:

EMS-Slack Bridge (matrix-appservice-slack) in German IT news

https://www.heise.de/news/Dezentraler-Firmenchat-mit-Slack-und-Matrix-5030856.html

The launch was also mentioned in The Register, in the UK. I used to read the Register every day...

Beeper news coverage

Beeper has had substantial coverage on their launch, much of it focused especially on the iMessage bridging feature. Some articles are linked below:

Lots of people helped collect these links in #TWIM:matrix.org, thanks all!

Final Thoughts 💭

sorunome offered:

today is the four year m.anniversary of the @sorunome:sorunome.de account! 🎉

Some interesting reads of the last few days:

Cos announced:

btw i forgot to TWIM that there was once again long Matrix article in Finnish computer culture paper magazine Skrolli. December issue.

Dept of Ping 🏓

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server. Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1envs.net429.5
2maescool.be433
3midov.pl473
4juniorjpdj.pl545.5
5kawaiilo.li650.5
6fab.network768
7matrix.thedisco.zone810
8matrix.sp-codes.de843
9dendrite.neilalexander.dev976.5
10aria-net.org1111

That's all I know 🏁

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