This Week in Matrix

342 posts tagged with "This Week in Matrix" (See all Category)

Atom Feed

This Week in Matrix 2020-06-19

19.06.2020 00:00 — This Week in Matrix Ben Parsons

🔗Matrix Live 🎙

🔗Dept of Status of Matrix 🌡

🔗Matrix Merch Store is back

Are you emerging from lockdown? Dazed and wondering what to wear? Need some apparel which says "I'm cool and I have great taste in decentralised communications protocols"? Then you should visit The Matrix Merch Store!

T-Shirts, Hoodies, Zipped Hoodies and Stickers available now!

🔗Matrix Decomposition: Analysis of an Access Control Approach on Transaction-based DAGs without Finality

Florian told us:

We published another scientific paper on Matrix, this time it is called Matrix Decomposition: Analysis of an Access Control Approach on Transaction-based DAGs without Finality! Its main topic is the question of how access control can work based on a structure that only provides a partial order on events and no consensus on the current state, i.e. the Matrix Event Graph. We found some concrete, non-critical security issues related to both incorrect specification as well as divergent homeserver behaviour. While the last remaining mitigations found their way into Synapse 1.14.0, we provide ideas on structural solutions to avoid both problem classes in the future using formal verification.

The paper was published at the ACM Symposium on Access Control Models and Technologies(SACMAT) last week. My talk went well (🎉), it was recording and is yet to be published by the conference.

The paper was previously mentioned on the Matrix blog.

🔗Dept of Spec 📜

anoa reported:

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

In terms of Spec Core Team MSC focus for this week, the team has been spread a bit thin with other work. As such, we're still on the same three MSCs: MSC2366 (verification flows), MSC2403 (knocking), and MSC2630 (SAS security). We're hoping this week will be more productive in terms of spec.

2020-06-19-qcjY2-plot.png

🔗Dept of Servers 🏢

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander announced:

This week has seen a lot of work put into fixing broken tests and refactoring parts of the codebase.

  • The media API has had quite a bit of attention this week and now media over federation works properly, as well as much better filename handling

  • A new user API component is now responsible for user accounts, devices, access tokens and account data

  • The server key API has been updated with more reliable validity checking and new tests

  • Logging into Dendrite using Riot iOS is now supported thanks to some minor tweaks/fixes

  • URL handling for version 3 rooms has been improved

  • A bug in the format of /v1/send_join has been fixed

  • The /joined_members response has now been fixed

In addition to that, we've made good progress on embedding the Dendrite-powered Yggdrasil demo into Riot iOS, which we'll hopefully be demoing in a couple of weeks!

Spec compliance has improved:

  • Client-Server APIs: 40%, up from 36% last week

  • Server-Server APIs: 38%, up from 35% last week

🔗Synapse

Neil offered:

Highlights this week

  • We released 1.15.1, this is a bug fix release, sorry if you were bitten.

🔗Changelog in full

Bugfixes

  • Fix a bug introduced in v1.15.0 that would crash Synapse on start when using certain password auth providers.

  • Fix a bug introduced in v1.15.0 which meant that some 3PID management endpoints were not accessible on the correct URL.

Outside of that

  • Implemented unread message counts (MSC 2625) - This is part of the a more general notifications improvement project in conjunction with the Riot teams. The aim being to make Notifications easier to configure. We’ve also been working on push rule definitions for the default behaviour. More on that next week.

  • Have the ability to shard the media repository worker. This means we can now run an arbitrary number in parallel, thereby improving upload reliability and performance, we are running this on Matrix.org.

  • Re-enabled Jaeger on matrix.org - previously we needed to switch it off due to the performance overhead, we needed a few tweaks but now it is working well and helping us to determine the cause of slow requests. It seems like the HTTP requests between the event creator and event persister workers can sometimes be slow - we are not sure of the cause yet, we are working on it but it will mean further performance improvements to message sending.

  • Next up performance wise is working on sharding the federation sender to improve federation lag. We’ll also try replacing simplejson with stdlib json which seems to be much faster at dumps nowadays.

  • Finally, we’ve fixed a bug that meant that quarantining media would from time to time include quarantining sticker packs

Other interesting bugs

We fixed a spec compliance bug in fetching remote media raised by our pals in Dendrite-land. We fixed a bug causing federation .well-known requests to fail due to not including the user-agent header. We removed references to six (thanks @ilmari) and finally, fixed a bug that caused stream id to go backwards on the replication stream.

Next week we’ll continue to work on notifications and performance. You can track our progress here https://github.com/orgs/matrix-org/projects/8

🔗Synapse adoption graphs

Chris said:

Wondering how quick this weeks synapse release was adopted by homeserver admins? Head over to https://graph.settgast.org/ and see yourself that it only took a little over 2 days for 1.15.1 to become the most used synapse version. I plot hourly distribution of synapse versions there. (Disclaimer: Only collects stats for homeservers that my homeserver sees in any of its rooms, which are around 2000 at the moment)

This is super cool! I love that this has been created, and also how well it reflects on homeserver admins! /me scurries to update to 1.15.1...

Asked to share the process, Chris sent:

Its a horribly hacky python script, but I can at least share it here: https://gist.github.com/csett86/96190592390b2c3d8c12c020ce312723

What version are you running?

🔗Synapse on a ROCKPro64

How is Synapse performance these days? PINE64 are running their instance on their own ROCKPro64 hardware.

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo announced:

This week I worked on server-side key backups and cross-signing - the second most requested features (federation being the first one). Key backups are already working! Take a look:

Cross-signing should be working, but there is a bug where emoji verification gets stuck. I hope we can find the mistakes and finish the PR next week.

Thanks to everyone who supports me on Liberapay or (new!) Bitcoin!

🔗Synapse Deployment 📥

🔗Kubernetes

Ananace said:

Just pushed 1.15.1 tags for the K8s-optimized Synapse image.

🔗Docker-matrix

Mathijs announced:

The image for synapse v1.15.1 including jemalloc and mjolnir anti-spam has been released to avhost/docker-matrix:v1.15.1.

🔗Dept of Bridges 🌉

🔗matrix-ircd, GSOC project

karlik offered:

For matrix-ircd google summer of code:

  • Began moving the codebase to the more modern futures 0.3 (previously futures 0.1)

  • Introduced more modern async / await syntax for improved code clarity

  • Wrote some additional unit tests, doubling the overall test coverage to 32%

  • Updating the 2016 code to use rust 2018 idioms PR # 64

  • Swapped repository to use stable rust (previously nightly) PR #65

🔗mautrix bridges

Tulir told us:

To make the bridge info state events a bit more useful, all my bridges now include the room name and avatar URL in them. The events are also updated whenever the name or avatar changes, and there's a new option to re-send the event to all existing portals so old portals would get it too.

🔗Dept of Clients 📱

🔗RiotX: Version 0.22.0

benoit said:

RiotX: Version 0.22.0 has been released on Tuesday, it includes integration manager support, sending stickers, modifying power levels, and lots of other things! See https://github.com/vector-im/riotX-android/releases/tag/v0.22.0 for a complete list of the changes.

This week we've been working on audio and video calls (The PR is in review). We are also trying to improve the performance of the application. We are adding room settings, and we have started to work on the migration Riot-Android -> RiotX.

PS check out Valere trying the new features:

🔗Arch Linux (AUR) package for Revolution - a Riot fork by ponies.im

Sophie still alive said:

I made an Arch Linux (AUR) package for Revolution - a Riot fork by ponies.im:

🔗Daydream

MTRNord told us:

Daydream is getting a new Design and the first page is ready at https://app.daydream.im/

Additional changes are:

  • Removed client side js (except what's needed to load wasm stuff)

  • Replaced loading animation with css only version

  • Replace icons with css only version

  • Add e2e tests

  • Add Basic Notifications

Currently on top of the TODO list of Daydream is:

  • Adding a wasm compatible (indexed db based) state store

  • Notifications

2020-06-19-x8YxE-grafik.png

🔗Rumatui is basically usable

WIP Command line Matrix client using matrix-rust-sdk

devinr528 told us:

After some slow progress, rumatui, the rust command line chat client, is usable by anyone. You no longer need an account or have previously joined rooms. Registration and room search have been implemented! Using left/right arrow keys from the login screen will toggle to registration. Once registered hitting the left arrow will bring up the room search window. After typing your search term hit Enter and select the room to join by pressing Ctrl-d.

For the brave who would like to give it a try cargo install --git <https://github.com/DevinR528/rumatui> --branch room-search.

🔗Added since last update

  • Room search is now available

    • Public rooms can be joined from the room search window
  • A user can register from the new register window

    • This features complete User Interactive Authentication by opening a web browser
  • Message edits are shown

    • When markdown is part of the message they are properly formatted
  • Reactions display under the respective message

  • Redaction events are handled for reactions (emoji) and messages

"Basically usable" is a standard we can all aspire to for our projects and endeavours.

🔗Riot-iOS

Manu told us:

This week, we worked on the new UX for cross-signing and secure backup. In parallel, we continued to improve the new push implementation. We are very closed to complete the two features.

🔗gomuks

gomuks is a terminal based Matrix client written in Go. Source on GitHub

Tulir announced:

I added a command to add and remove local aliases for rooms. Changes to alt_aliases are also now rendered properly.

🔗Riot Web

Ryan offered:

This week we had an off-cycle 1.6.5 release to fix registration on some homeservers when email validation is required. After that, we've made a 1.6.6 RC including:

  • Added support for new emoji in Unicode 13

  • Emoji picker now supports searching by emoji characters (to find related ones) as well as text

  • Added a homeserver admin .well-known option to control default E2EE behaviour

  • Many more bug fixes and smaller improvements

🔗Riot Web Themes

jo offered:

made a couple riot themes! Dracula and Dracula Flat

https://raw.githubusercontent.com/aaronraimist/riot-web-themes/master/Dracula/Non-flat/Dracula.json https://raw.githubusercontent.com/aaronraimist/riot-web-themes/master/Dracula/Flat/DraculaFlat.json

Find images here and here

Go to https://github.com/aaronraimist/riot-web-themes to find out how to use these.

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) offered:

  • We released 0.7.2, which was a bit more messy than we would have liked...

  • As with every release we are currently working through the new bug reports. :D

  • I started working on SSSS and online key backup support. For this I wrote my own base64 and base58 encoders. As a result of this we dropped libsodium as a dependency, which should make Nheko a bit easier to package or build. It's also fun to write base conversions, although 58 is a horrible base!

From the changelog:

  • Reactions
    • React to a message with an emoji! 🎉
    • Reactions are shown below a message in a small bubble with a counter.
    • By clicking on that, others can add to the reaction count.
    • It may help you celebrating a new Nheko Release or react with a 👎 to a failed build to express your frustration.
    • This uses a new emoji picker. The picker will be improved in the near future (better scrolling, sections, favorites, recently used or similar) and then probably replace the current picker.
  • Support for tagging rooms [tag]
    • Assign custom tags to rooms from the context menu in the room list.
    • This allows filtering rooms via the group list. This puts you in a focus mode showing only the selected tags.
    • You can assign multiple tags to group rooms however you like.
  • SSO Login
    • With this you can now login on servers, that only provide SSO.
    • Just enter any mxid on the server. Nheko will figure out that you need to use SSO and redirect your browser to the login page.
    • Complete the login in your browser and Nheko should automatically log you in.
  • Presence
    • Shows online status of the people you are talking to.
    • You can define a custom status message to tell others what you are currently up to.
    • The status message appears next to the usernames in the timeline.
    • Your server needs to have presence enabled for this to work.

Wowow that's a lot this time!

🔗Dept of SDKs and Frameworks 🧰

🔗quotient

kitsune said:

after a couple of setbacks that didn't let us to make the releases earlier, the Quotient project has finally made two new releases:

  • GTAD (the piece of code magically producing readable C++ code from a Swagger API description) has achieved version 0.7 (https://github.com/KitsuneRal/gtad/releases/tag/v0.7.0) adding a few tricks in order to make...

  • ...libQuotient 0.6 beta2 (https://github.com/quotient-im/libQuotient/releases/tag/0.6-beta2) rely entirely on the upstream matrix-doc specification, rather than a soft fork closely following the main sources! From now on it's "upstream first", in a sense that the original matrix-doc will be used to build Quotient codebase. Let's see how often it breaks ;) In other news from the last few weeks:

  • some housekeeping and deprecation work in the API has been done in preparation to getting User Interactive Authentication along the next (post-0.6) release cycle of libQuotient.

  • also thanks to the updated code generator, the CS API code has been optimised, consolidating more code in the header files and making data deserialisation lazy; this helped significantly reduce compilation times, and runtime performance also improved a bit.

  • the number of configurations tested by CI has been extended, allowing to chase down a few more bugs that managed to go under the radar before.

  • when used with new enough Qt, CBOR is used to cache data locally - entirely transparently for clients.

Expect more news in the coming weeks, including continued work on matrix: URI proposal and its implementation in Quotient.

🔗ruma-events' Google Summer of Code project

devinr528 sent us this late entry!

This week in ruma-events' Google Summer of Code project, after trying out the new Any*Event enums matrix-rust-sdk, we found a few big flaws. There was no easy way to go from StateEvent<AnyStateEventContent> to StateEvent<SpecificEventContent>, the other issue was one could create a StateEvent with differing content and prev_content fields using the AnyStateEventContent enum. The 0.22 ruma-events will be similar to the existing API; each event type has a corresponding event enum variant.

pub enum AnyStateEvent {
    RoomMember(StateEvent<MemberEventContent>),
    RoomAliases(StateEvent<RoomAliases>),
    // ...
}

There were a few minor fixes during the week also. Unknown field deserialization is fixed, allowing deserialization of a JSON blob that has extra fields which are ignored. Custom events are now present in the Any*EventContent enums, although now they have to be moved up to be included in Any*Event enums. Benchmarks for deserialization have been added and used to increase performance.

🔗🧙 Polyjuice Client

Polyjuice Client is a Matrix library for Elixir

uhoreg announced:

Polyjuice Client, a Matrix library for Elixir, had a new release. This release fixes syncs, which apparently were completely broken in the last release (whoops). The wizarding community also welcomes a new contributor, Pierre de Lacroix.

🔗Dept of Ops 🛠

🔗Gitea

s7evink reported:

Gitea 1.12.0 was finally released. It's now possible to send notifications (commits, pull requests, etc.) directly to Matrix using webhooks.

🔗Dept of Internet of Things 💡

🔗Mozilla WebThings Matrix Adapter

Christian offered:

I heard that you people like IoT?! With the Mozilla WebThings Matrix Adapter your Raspberry Pi sends you messages about your home. Want a log of when the front door has been opened? Need a low battery alert for your IoT devices? With the Mozilla IoT gateway and this adapter, you can send these events to a Matrix room of your choice!

https://gitlab.com/webthings/matrix-adapter

🔗Dept of Bots 🤖

🔗Alt alias maubot plugin

Tulir announced:

Ever since m.room.aliases was replaced with alt_aliases, there hasn't really been any way to find aliases on other servers, since most room admins don't bother finding and publishing alternate aliases. To help solve that problem, I made a maubot plugin to let users publish alternate aliases in rooms: https://github.com/maubot/altalias

By default it lets users publish aliases with the same localpart as any already published alias. If that behavior is sufficient, you can simply invite it to a room and give it permissions to send m.room.canonical_alias events. Alternatively, it can be configured to allow aliases that match specific regexes.

Once it's set up, users can create a local alias and use !altalias publish <their alias> to publish it. The bot will make sure the alias points to the right room, check that the localpart is allowed and then add it to alt_aliases.

I have it running at @alias:maunium.net and I've added it to all my rooms already. Other rooms are also free to use that instance.

🔗go-neb on NixOS

maralorn offered:

As of https://github.com/NixOS/nixpkgs/pull/89327 a go-neb module was added to nixos and will soon be available on nixos-unstable and in the 20.09 release. You can use it to declaratively install and configure go-neb matrix bots on nixos. I use it for prometheus alertmanager alerts and it works really cool! Thx to hexa- who did most of the work on it.

🔗Opsdroid

Cadair offered:

opsdroid 0.19 has been released, not many matrix specific features in this release, just making it slightly easier to get a connector or database instance by name. However, this release paves the way for the merge of the pull request transitioning opsdroid to use the matrix-nio Python library, so the next release should be packed full of matrix stuff 😀

🔗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
1fairydust.space384.5
2maescool.be390
3gottliebtfreitag.de453
4construct.grin.hu610
5aragon.sh639.5
6privacytools.io670
7matrix.vgorcum.com734
8envs.net756
9settgast.org865
10intothecyber.space1005

🔗That's all I know 🏁

Thanks to Alexander and Nico for their help editing this edition.

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

This Week in Matrix 2020-06-12

12.06.2020 00:00 — This Week in Matrix Ben Parsons

🔗Open Tech Will Save Us #3 🎙

If you somehow missed this, please take a look!

  • 1:00 Rabble talking about Planetary and SSB
  • 31:19 Annie on Ditto
  • 1:10:20 Erik on Synapse Perf

🔗Dept of Spec 📜

🔗Spec

anoa announced:

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

🔗MSC Status

Merged MSCs:

MSCs in Final Comment Period:

New MSCs:

🔗Spec Core Team

In terms of Spec Core Team MSC focus for this week, we're sticking with the same three from last week: MSC2366 (verification flows), MSC2403 (knocking), and MSC2630 (SAS security).

In possibly more exciting news, the Spec Core Team has decided to start separating the scattered casual implementation tips and notes in the spec out and putting them in a series of implementation guides! These will take the form of gitbook-style things, and will initially feature front-to-back implementation guides for a generic Matrix client and homeserver. For more details to provide feedback, check out the associated MSC2618!

2020-06-12-xdh7w-plot.png

🔗Dept of GSoC 🎓

This is the second week of the coding phase of GSoC 2020. Find updates from the students below:

🔗GSOC/Opsdroid

tyagdit told us:

  • The port from matrix-python-sdk to matrix-nio is almost completed. Sending and receiving most events works properly. Changes are expected be merged in a few days. This PR itself doesn't implement E2EE, that will be a different PR

  • Alongside that I've been working on implementing E2EE with nio which is partially done, sending and receiving messages works so far. some changes to the MatrixStore interaction and testing is left.

🔗Nheko

Chethan told us:

Device verification for Nheko

  • Done
    • Adding Device List ( Although it already exists it is re-written in qml )
    • Detecting to_device device_verification messages
    • Part of the flow is done
  • Yet to Complete
    • Complete the rest of the flow

🔗go-neb

nikofil offered:

  • Implementing end-to-end encryption for go-neb turns out to be a lot easier than expected thanks to the https://github.com/tulir/mautrix library, which contains out of the box e2ee support!

  • The first week of GSoC was spent switching go-neb's usage of gomatrix for mautrix, which was easy as the latter is a fork of the former. This caused a pretty big PR that touched most of go-neb's files, although the changes were simple and easy to review. The PR was merged shortly after into go-neb.

  • During the second week, it was time to add some basic e2ee support to go-neb. This was complicated slightly due to the bot's ability to create multiple clients and its treatment of /sync responses, however in the end e2ee is now working.

  • The code is still of course a mess and session keys are often lost in the void. The code will be cleaned up and tested further next week, bugs will be (hopefully) fixed and another PR will be submitted to go-neb then to officially add e2ee support!

  • Code can be found at https://github.com/nikofil/go-neb/tree/e2ee until it can be cleaned up

🔗HTML-Embeddable rooms

From arnav-t:

Matrix has enormous potential to be used in many different use cases be it embedded chat rooms, comments section, chat boxes, etc. This project aims to fill that niche by providing an easy to use and easy to deploy client for users to embed on their webpages.
The client would mesh well wherever it is embedded by providing a postMessage interface to allow the parent webpage to interact with the client and dynamically modify it whenever needed (For example:- A comments section that is always the same theme as its parent webpage).

🔗Features

As of now, the following features have been added (with more on the way)

  • List of joined rooms that can be selected
  • Live room timeline events
  • Support for image-based messages
  • Message composer and ability to send messages to a room
  • Dark and light themes for the client
  • Changeable highlight colors
  • Toggleable room header, room timeline, and message composer components
  • postMessage interface for sending commands from the parent window

Currently, I'm working on adding more options to the postMessage interface as well as adding more interactivity to the client itself.

Find out more on the project page: https://github.com/arnav-t/riot-embedded.

🔗Ruma/Matrix GSoC update

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

devinr528 announced:

This week in ruma-events' Google Summer of Code project, I was able to finish the macros needed to generate the event content enums and trait implementations required for events. I started by defining the generic event structs (state, message, etc.) and manually writing the Serialize and Deserialize implementations. Over the next few days, this was moved into a custom derive macro called Event. The derive now implements all necessary traits with appropriate bounds, so a StateEvent<C> can not contain any ephemeral event content and so forth. I have removed the raw mod and related FromRaw and TryFromRaw traits, moving the validation into the deserialization and constructor for the few types that needed it. On the event content side of things, a function like procedural macro was used to allow declaring the enum using Matrix event type identifiers.

event_content_enum! {

    /// Any message event.
    name: AnyMessageEventContent,

    events: [
        "m.call.answer",

        "m.room.message",
        // ...

    ]
}

// Produces
pub enum AnyMessageEventContent {

    CallAnswer(CallAnswerEventContent),
    RoomMessage(MessageEventContent),

}

🔗Dept of Servers 🏢

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander offered:

Much of this week's work has been maintenance-related with refactoring, cleaning up etc.

  • Key fetching/expiry behaviour has been fixed, improving the reliability of federation.

  • The monolith and component setup has now been refactored.

  • A number of unused internal APIs have now been removed.

  • Other internal roomserver APIs have been streamlined.

We have also started building an Yggdrasil-powered P2P demo (as opposed to the previous demos built using libp2p) and even includes support for embedding Riot Web in the single binary. It's not very stable/usable yet but there will be more news on that to follow within the next couple of weeks.

We have also started building and releasing Docker images for Dendrite on Docker Hub for those who want to use Docker to test Dendrite deployment.

Spec compliance is unchanged from last week:

  • Client-Server APIs: 36%

  • Server-Server APIs: 35%

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo reported:

Welcome back! This week I focused my efforts on better error handling. My goal was that every problem would be forwarded to the client (e.g. InternalServerError response) and also be logged. Yesterday I merged the giant PR this resulted in. Hopefully this will make Conduit easier to debug in the future.

Here are some other things I finished this week:

  • User-interactive authentication (e.g. you need to type your password again if you want to delete devices)

  • Config option to disable registration

I also found the problem with Riot not showing notifications for new messages and created a bug report. With a few tweaks, I managed to solve this on my account and now mentions, DMs and more play the notification sound (it also works on Riot X!).

@gnieto fixed a bug that prevented Riot from loading history when you join a room and @PublicByte implemented the /whoami endpoint.

Thanks to my supporters on Liberapay!

🔗Synapse

Neil said:

This week we shipped 1.15.0, edited highlights include:

Features

  • Add admin APIs to allow server admins to manage users' devices. Contributed by @dklimpel. (#7481)

  • Add an option to disable autojoining rooms for guest accounts. (#6637)

  • For SAML authentication, add the ability to pass email addresses to be added to new users' accounts via SAML attributes. Contributed by Christopher Cooper. (#7385)

  • Add support for generating thumbnails for WebP images. Previously, users would see an empty box instead of preview image. Contributed by @WGH-. (#7586)

  • Support the standardized m.login.sso user-interactive authentication flow. (#7630)

Bugfixes

  • Allow new users to be registered via the admin API even if the monthly active user limit has been reached. Contributed by @dklimpel. (#7263)

  • Fix a bug in automatic user creation during first time login with m.login.jwt. Regression in v1.6.0. Contributed by @olof. (#7585)

  • Fix a bug causing the cross-signing keys to be ignored when resyncing a device list. (#7594)

  • Fix bug where returning rooms for a group would fail if it included a room that the server was not in. (#7599)

  • Fix duplicate key violation when persisting read markers. (#7607)

  • Prevent an entire iteration of the device list resync loop from failing if one server responds with a malformed result. (#7609)

  • Pass device information through to the login endpoint when using the login fallback. (#7629)

  • Advertise the m.login.token login flow when OpenID Connect is enabled. (#7631)

  • Fix bug in account data replication stream. (#7656)

Internal Changes

  • Improve query performance for fetching state from a PostgreSQL database. Contributed by @ilmari. (#7567)

  • Speed up processing of federation stream RDATA rows. (#7584)

  • Refactor Ratelimiter to limit the amount of expensive config value accesses. (#7595)

  • Clean up exception handling in SAML2ResponseResource. (#7614)

  • Check if the localpart of a Matrix ID is reserved for guest users earlier in the registration flow, as well as when responding to requests to /register/available. (#7625)

Aside from that we continue out push towards improving performance both in terms of sharding workers but also improving tools to manage disk space usage. Specifically this week and next we are looking at db tuning and sharding the media repo worker. We are also noticing that the typing handler is chewing more CPU than would be expected. It could be a good candidate for moving away from the master process.

More broadly we are changing the defaults for notifications and making changes to support a more general overhaul of notifications.

Finally we are looking at how to not only delete messages after a certain time period, but also how to delete the associated media (which becomes difficult when considering e2e content along side long lived content such as avatars and sticker packs).

For more detail on what is coming next, take a look at our public task board.

🔗Synapse Deployment 📥

🔗Kubernetes

Ananace told us:

Just pushed version 1.15.0 of the K8s-optimized Synapse images

🔗Dept of Bridges 🌉

🔗mautrix-whatsapp

Tulir told us:

The WhatsApp bridge can now bridge location messages from WhatsApp to m.location on Matrix and contact messages as vCard files (until Matrix gets a native contact message type).

It also now encrypts media properly when bridging messages in encrypted rooms. I had apparently missed that when adding end-to-bridge encryption earlier.

🔗mautrix-facebook

Tulir said:

mautrix-facebook got a few improvements and bugfixes:

  • Added timestamp massaging

  • Added support for bridging video and file messages to Matrix

  • Fixed backfilling with SQLite (it didn't work due to the python timezone mess, fix contributed by erdnaxeli)

  • Improved options for automatic reconnecting. The bridge should now work fairly reliably when using all the auto-reconnect options and backfilling, it only breaks if facebook decides you've been hacked

🔗mautrix bridges in general

Tulir said:

Since MSC2190 and the related Synapse PR aren't moving much, all my bridges now generate appservice registration files with the workaround. The workaround is needed to avoid patching synapse or using other hacks, and I decided to enable it by default as many people had problems related to having to apply it manually.

The WhatsApp, Facebook and Hangouts bridges now have an option to use double puppeting to disable notifications when backfilling. It can be useful if you want to copy chat history to Matrix, but don't want to be spammed with hundreds of notifications while it's happening.

🔗Nova-slack

eric offered:

To get things ready for NovaChat launch, we added a bunch of new features to a fork of the mx-puppet-slack client that Sorunome created. You can try it out here. We'll be pushing our changes upstream soon.

New features:

  • message backfilling at room creation and reconnect

  • syncs read status to/from Slack.com

  • adds all users to bridged room during initial creation

  • automatically bridges all channels and DMs that you are part of during initial setup, so you don't have to wait for a message to arrive for it to appear in Matrix

  • tons of little reliability fixes

🔗matrix-sms-bridge

Benedict announced:

My matrix-sms-bridge got an large update, which introduced an automated way to create and write messages to telephone numbers via commands in a bot room. See the docs for more information, how to use it.

🔗Dept of Clients 📱

🔗NovaChat v0.1.1

eric reported:

Introducing NovaChat - a desktop chat client that supports 9+ different chat networks, built on top of Matrix. Think of it as a modern Adium/Trillian.

How it works

NovaChat is a system with three parts designed to work together:

  • a new desktop client, based on Riot-web

  • a federating homeserver (nova.chat)

  • a set of Matrix bridges configured to run on a private server called a bridgebox

Matrix bridges are awesome but generally require you to run own homeserver. NovaChat removes that restriction, without sacrificing security and privacy. Your remote chat network credentials never leave your bridgebox, and messages are encrypted* on the bridgebox before being sent to the NovaChat homeserver.

*Encryption is currently enabled on Telegram/FB/Hangouts/Whatsapp bridges, mx-puppet-bridges coming shortly)

Very rough system diagram:

> NovaChat desktop client <> NovaChat homeserver <> bridgebox <> remote chat networks

Features

  • Fancy new UI, heavily inspired by Telegram. See photo below or see it in action

  • Easy graphical bridge set up (no more fiddling with config files)

  • Reliable bridging, with delivery confirmations and bridge disconnect warnings

  • Includes 8 pre-configured bridges: Facebook/Whatsapp/Hangouts/Telegram/Slack/Instagram/Twitter/Skype. Planning to add more soon, or submit a PR!

  • Works on Mac OS, Linux and Windows

You don't need to be technical to use NovaChat, it's designed to Just WorkTM. If you need help setting up a bridgebox, we are offering hosting and maintenance for USD $5 per month.

The vast majority of this software has been created by the talented tulir and dm0141. I personally am a terrible coder (you can tell which parts I did), but I do have experience building products and teams, and I'm excited to begin working in the Matrix universe. I wrote recently about how I believe Matrix is the Universal Communication Bus! Thanks goes to Sorunome for creating the mx-puppet-bridges!

We're developing the whole project in the open (though not all components are open source), check the issue backlog :)

Want to help? We're hiring Matrix developer to work on the project with us. Send me a message if you're interested! Particularly looking for a React dev to help with frontend on nova-web.

NovaChat chat room: #novachat:nova.chat

2020-06-12-5Fxzq-Screenshot-20200611230111-842x879.png

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

red_sky announced:

nheko 0.7.2 is ready for release. Here's the summary of changes:

🔗Highlights

  • Reactions

    • React to a message with an emoji! 🎉

    • Reactions are shown below a message in a small bubble with a counter.

    • By clicking on that, others can add to the reaction count.

    • It may help you celebrating a new Nheko Release or react with a 👎 to a failed build to express your frustration.

    • This uses a new emoji picker. The picker will be improved in the near future (better scrolling, sections, favorites, recently used or similar) and then probably replace the current picker.

  • Support for tagging rooms [tag]

    • Assign custom tags to rooms from the context menu in the room list.

    • This allows filtering rooms via the group list. This puts you in a focus mode showing only the selected tags.

    • You can assign multiple tags to group rooms however you like.

  • SSO Login

    • With this you can now login on servers, that only provide SSO.

    • Just enter any mxid on the server. Nheko will figure out that you need to use SSO and redirect your browser to the login page.

    • Complete the login in your browser and Nheko should automatically log you in.

🔗Features

  • Support for showing users presence and status message as well as setting your own status message"

  • Respect exif rotation of images

  • An italian translation (contributed by Lorenzo Ancora)

  • Optional alerts in your taskbar (contributed by z33ky)

  • Optional bigger emoji only messages in the timeline (contributed by lkito)

  • Optional hover feedback on messages (contributed by lkito)

  • /roomnick to change your displayname in a single room.

  • Preliminary support for showing inline images.

  • Warn about unencrypted messages in encrypted rooms.

🔗Improvements

  • perf: Use less CPU to sort the room list.

  • Limit size of replies. This currently looks a bit rough, but should improve in the future with a gradient or at some other transition.

  • perf: Only clean out old messages from the database every 500 syncs. (There is usually more than one sync every second)

  • Improve the login and register masks a bit with hints and validation.

  • Descriptions for settings (contributed by lkito)

  • A visual indicator, that nheko is fetching messages and improved scrolling (contributed by Lasath Fernando)

🔗Bugfixes

  • Fix not being able to join rooms

  • Fix scale factor setting

  • Buildfixes against gcc10 and Qt5.15 (missing includes)

  • Settings now apply immediately again after changing them (only exception should be the scale factor)

  • Join messages should never have empty texts now

  • Timeline should now fail to render less often on platforms with native sibling windows.

  • Don't rescale images on every frame on highdpi screens.

🔗Matrix-Static release v0.3.0

Michael (t3chguy) reported:

New Matrix-Static release v0.3.0

With improved support for media and tombstone events and a bunch of bug fixes! https://github.com/matrix-org/matrix-static/releases

Should be deployed to view.matrix.org shortly

🔗Arch Linux package of radical-native

Peter Roberts told us:

I've made an Arch Linux package of radical-native.

🔗Riot X

valere announced:

  • Several improvements on SSO login flow 🔒

  • Support of power levels ⚡️

  • Add remove favorites 🌟

  • Multiple bugs and glitches fixes 🐛

The team is currently actively working on:

  • Voip 1:1 Calls 📞

  • Cross Signing bootstrap simplification 🔑

  • Performances Improvement 🔥

  • More room settings ⚙️

2020-06-12-s3pmY-image.png

🔗Riot Web

Ryan told us:

There's been lots of work many fronts this week, including:

  • Continued work on cross-signing bootstrapping robustness

  • New room list implementation in progress

  • Upgraded fonts for new emoji

  • A refreshed look for matrix.to is underway

  • The appearance tab is being tweaked and expanded

  • Read marker consistency improvements

Most of this work is still in progress or has only landed on develop so far. Our next RC will happen next week.

🔗Riot-iOS

Manu offered:

This week, we continued to iterate on the implementation of the new push notification service thanks to user feedbacks. Those feedbacks also show that the app uses less battery.

On login, this is now possible to recover your cross-signing and your key backup from your recovery passphrase or key.

🔗Dept of SDKs and Frameworks 🧰

🔗libolm 3.1.5

uhoreg told us:

libolm 3.1.5 has been released. It mainly collects the various build system and documentation fixes that have accumulated since the last release. It also includes a new wasm build target (which apparently is used for running matrix-rust-sdk in the browser), as well as TypeScript definitions for the JavaScript bindings.

🔗Ruma

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

jplatte told us:

Most of the work this past week was on ruma-events, for more on that see the GSoC section! Devin got far enough with that so we now know it all works out and can replace the previous ruma-events API. When that was clear, ruma-events was also merged into our new monorepo; now the only remaining crate to be merged is ruma-client (where I'm also waiting for some pending changes).

🔗Dept of Ops 🛠

🔗Matrix Helm chart

Kubernetes Helm chart for easily deploying a Matrix homeserver stack

Typo Kign told us:

Version 2 of my Matrix Helm chart is out! It now allows for running a federating homeserver without needing an external load balancer for the federation service, potentially lowering costs (depending on your cloud provider), and definitely reducing the headache of managing TLS certificates!

dacruz21/matrix-chart is a Kubernetes Helm chart for easily deploying a Matrix homeserver stack, complete with Synapse, Riot, VoIP calls, bridges, and other backing services. It's ideal for anyone looking to run a large homeserver, or for corporate environments where security is paramount!

🔗Dept of Internet of Things 💡

🔗Tuple Weather Station Example

Alexander Eisele announced:

This week I've programmed a small POC for a Matrix weather station.

It's build using a ESP8266 Microcontroller and a BME280 Sensor for temperature, humidity and barometric pressure.

The data is send over the Tuple Matrix <-> MQTT bridge.

Code: https://github.com/derEisele/tuple-weather-example

You can join this project on #tuple:eiselecloud.de.

I'm personally really excited about this project!

🔗Dept of Bots 🤖

🔗Matrix bot for Redmine

progserega told us:

https://github.com/progserega/matrix_redmine_bot

  1. Bot can create, accept (to user) new issues in Redmine from matrix

  2. Bot can add comment or/and files to issue by it id

  3. Bot can show messages (for user) from Redmine in matrix room

🔗Dept of Guides 🧭

Levans said:

Anyone running a federating instance of Synapse will likely have seen this: Synapse is database-hungry. It tends to take a lot of space. In this post, I'm documenting how I shrunk my homeserver database from 100GB to a little under 8GB, during a long maintenance cleanup. https://levans.fr/shrink-synapse-database.html

Very pleased to see this, I have a feeling I'm going to be running it in the near future...

🔗New Public Rooms 🏟

🔗New room "Matrix Outreach"

JulianF reported:

There's a new room "Matrix Outreach" #matrix-outreach:matrix.org for folks interested in "Helping each other explain and promote Matrix to the public: creating slogans, introduction leaflets, info-graphics, elevator pitch, Wikipedia articles, and so on."

🔗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
1fairydust.space391
2envs.net443.5
3maunium.net506
4tum.de603.5
5neko.dev822
6maclemon.at887
7cyllos.me916
8shortestpath.dev1072.5
9settgast.org1079
10maescool.be1324

🔗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 2020-06-05

05.06.2020 00:00 — This Week in Matrix Ben Parsons

🔗Firstly... 🏃‍♀️

Make an entry in your calendar, don't just write it on your hand: Open Tech Will Save Us is back for a third edition!
Next Wednesday, 10th June 2020!

🔗Matrix Live 🎙

🔗Dept of Spec 📜

anoa reported:

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

🔗MSC Status

Merged MSCs:

MSCs in Final Comment Period:

New MSCs:

🔗Spec Core Team

In terms of Spec Core Team MSC focus for this week, we've still got MSC2366 (verification flows) on our plate, but we're removing MSC2399 (UISI messaging) as it just needs one more final tick. We're adding MSC2403 (knocking) in its place.

2020-06-05-TmAIq-plot.png

🔗Dept of Servers 🏢

🔗Mascarene

Nico said:

Mascarene is a quite new homeserver implementation project started a few months ago. Now it's time to introduce it.

Mascarene is written in Scala, runs on JVM and relies on Akka actor model. Out of the box it provides features like efficient streaming I/O, clustering and live data distribution. Data are backed in a PostgreSQL database.

The project is in early stage but already provides a few endpoints which make Mascarene able to talk to Riot.

You can test it at https://snapshot.mascarene.org. You should be able to register, login, create a room and talk to yourself.

Current work is focused on client API implementation; federation or e2ee will come later.

Contributions are welcome, join us on #mascarene:beerfactory.org

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo told us:

Welcome back! This week I went through the whole Client-Server API and wrote down everything that is still missing from Conduit. You can find issues for all of them in the milestone for Conduit 1.0. This should make it more easy for contributors to find something to work on and gives a lot more structure to the repo (maybe I also did it, because it's so satisfying to close issues and see the milestone percentage go up 😛).

Some of the issues I could already close this week include:

  • Implement redaction

  • Implement loading the message someone replied to (/context)

  • Fix bugs with notifications

  • Don't send typing events when nothing happened

  • Bundle typing events into one EDU

  • Don't send notification counts every /sync

  • Implement heroes

As you can tell, a lot of work is starting to go into smaller improvements, which is a good thing, because it means most of the core work is already done!

Thanks to my supporters on Liberapay (Take a look, I improved it 🙂).

🔗Synapse

Neil told us:

This week in Synapse land we have been focusing on bug fixes especially SSO and soft logout.

We also spent some time thinking about how to further improve performance for large scale deployments (like matrix.org). In short this will mean sharding contested workers such as the media repo worker, the federation sender and the federation reader. We also want to remove some more functionality from the master process because it is still sitting at about 80% and we’d like some more head room. We'd also like to fix up the state compressor so it can easily be run as a background progress to save on disk space, this will benefit all installations big and small. Finally we want to speed up joins over federation. Exciting times.

Next week, more of the same and we should start on some of the perf items. Also look out for changes to notification defaults.

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander offered:

Updates:

  • Room version 6 support has been added

  • Server signing keys which have passed their validity period are now re-requested and updated properly, increasing reliability of federation substantially

  • Federated room joins have been significantly sped up by requesting missing auth events inline when verifying room state, rather than repeating the entire verification for each missing event

  • Local send-to-device support has been added (federated send-to-device coming soon)

  • A lot of code clean-up has taken place (with more to come), including cleaning up the internal APIs and the component bases

  • Decoding of room version 3 event IDs in request URLs has been improved

  • Inbound federation requests now interrupt backoff intervals on outbound sends

  • A new internal API exists now for interrupting backoff intervals on the federation sender

  • The federated /devices endpoint now returns in the correct format

  • Public rooms are now sorted by their member count

  • Only our own aliases are stored in the public rooms directory now

  • gomatrixserverlib is now responsible for marking room versions as supported/stable

  • Spec-compliant transactions are now sent to the appservice component

  • File URIs for SQLite databases are now set up using common functions

  • Handling registration for a user that already exists has been fixed (thanks S7evinK!)

  • Dendrite can now be configured to use a HTTP proxy server for outbound HTTP (thanks dr-bonez!)

Sytest compliance:

  • Client-server APIs: 36%

  • Server-server APIs: 35%

In other news, Kegan wrote a post on how p2p.riot.im works, including Dendrite's journey to SQLite and WebAssembly!

Additionally! You may have already read about v0.1.1 of the P2P Matrix demo - this is a big update, with local storage, room alias handling, federation improvements and more!

🔗Dept of Bridges 🌉

🔗Matrix Appservice Minecraft bridge now in beta

Dylan reported:

My Matrix Appservice Minecraft bridge is now in beta

Here is our Matrix room #minecraft:dhdf.dev

2020-06-05-FLroa-image.png

2020-06-05-0PFg--2020-06-02_04.12.42.png

More screenshots: https://github.com/dhghf/matrix-appservice-minecraft#screenshots

🔗Tuple

Alexander Eisele reported:

Tuple is a very early simple matrix <--> mqtt bridge for IOT and other embedded devices.

It's my very first golang project, but it works(TM).

This is exciting! I would love to see more IoT-related projects!

🔗mautrix-hangouts

Tulir reported:

mautrix-hangouts can also do backfilling now, both when creating portal and missed messages when connecting

🔗mautrix-facebook

Tulir told us:

mautrix-facebook got support for backfilling history when creating portals and backfilling missed messages when connecting. There's also an option to periodically reconnect to potentially fix the bug where Facebook decides that you don't get messages anymore, but doesn't actually disconnect you.

🔗mautrix-whatsapp

Tulir said:

I had apparently forgotten to implement bridge information in the whatsapp bridge when I implemented it in my other bridges, but that mistake is now corrected. I also fixed a bug with encryption where it would generate too many one-time keys and cause messages to be undecryptable. Finally, mautrix-whatsapp had its first release this week since it's working reasonably well now.

🔗Dept of Clients 📱

🔗Radical Native

stoic reported:

Eager to test the keytar feature (pickle key stored in OS secret storage) with Riot Web? Support landed in radical-native v0.1beta13, which uses Rust keytar bindings under the hood. Testing requires the latest and greatest of Riot Web, so riot.im/develop might be the place to see it in action

2020-06-05-nyIuw-image.png

Keytar support is a very very new feature, uhoreg, who has been working on it in the shadows and wasn't expecting to see it land yet, commented:

😲

🔗Pattle: version 0.17.0

Pattle is a client written for Flutter using Dart

Wilko offered:

A new version has been made available and will become available on Google Play and TestFlight!

⚠️ If you're not logged out, it's recommend that you logout and additionally clear your data after installing the new version! ⚠️

🔗Changes

  • Added the ability to reply to messages!

  • You can now accept (and reject) invites!

  • You can now join and search channels!

  • Chat input has been redesigned!

  • Chat details has been somewhat redesigned

  • The group icon in the chat's details is now blurred and can be shown unblurred by scrolling to the top

  • Replies are now a maximum of 3 lines long

  • The current version is now shown in settings

  • Wait a bit after typing before checking the homeserver when logging in

  • Chat name change events are now shown

  • Chat icon change events are now shown

  • Errors are now reported to Sentry again!

  • You won't enter the app with empty chats if the initial load failed

  • Show date above chat creation event

  • Fix time sometimes being dark and not readable on image messages

  • Fix sender's name going outside of bubble

  • Sender is now in bold for chat description change event

  • More messages are now loaded if initially not enough are displayed

  • Show ripple effect on chat app bar when tapping

  • And more!

🔗Get Pattle

🔗Get involved

🔗RiotX v0.21.0

benoit announced:

RiotX v0.21.0 has been released on May 28th. It adds support to identity server configuration and e-mail/phone binding and unbinding. It's also now possible to switch between languages inside the app and to display the list of attachments (media and file) of a room. A new setting has been also added to hide redacted (deleted) events in the timeline. As Riot-Android SAS v2 is also included in this release. Also formatted_body for m.notice and m.emote are now taken into account.

This week we were still working on implementing VoIP (audio and video call). Support for integration manager, widgets and sending stickers has been merged to develop. Many new features are coming soon, stay tuned!

🔗Riot-Android classic

benoit offered:

Riot-Android: Version 0.9.12 has been released on May 20th. I forgot to mention it the TWIM of last week. It contains a fix for favorite rooms vanishing and also the SAS v2 implementation (new key agreement method).

🔗Mirage

miruka said:

Mirage 0.5.1 has been released today:

  • Persistent, cross-client, push rules-aware unread message counters

  • Read receipts are now sent to mark rooms as read

  • Basic room settings can now be edited and saved

  • More control over window alerts, e.g. only enabling them for messages mentioning you

  • Lots of bugfixes

Full changelog

🔗Riot-iOS

Manu said:

This week, we finalised our work around the iOS13 SDK. The coming public TestFlight (0.12.2) is the result of this work. It comes with a lot of changes including a full rewrite of the push handling codebase, trying to find solutions to make matrix e2ee compatible with iOS Notification Service Extension. Most of these changes are unfortunately invisible for end users. Please report any issues. Note this is safe to switch between this TF and 0.11.5.

In parallel, we started to implement the cross-signing bootstrap and the recovery management. The UX of this is going to be refined on Riot-Web and RiotX-Android. Riot-iOS will implement the refined UX directly.

🔗Riot Web

A glossy Matrix collaboration client for the web. https://riot.im

Ryan told us:

We had several Riot Web releases this week, first with 1.6.3:

  • Security fix for auth handling in SSO deployments, thanks Quentin Gliech for responsible disclosure

  • Added more shortcuts to jump to read marker and upload a file

  • Fixed notification tray icon stability for desktop on Windows

  • Added an IRC style layout (currently available in labs only)

  • Added font scaling settings (currently available in labs only)

  • Fixed several bugs in the cross-signing bootstrap process

  • Converted older banner-style UI for updates etc. to newer toasts

This was quickly followed by 1.6.4 to fix a few regressions with dismissing toasts, compact timeline layout, key backup, and tooltips on scroll.

🔗Dept of SDKs and Frameworks 🧰

🔗Matrix Dart SDK: version 0.32.0

Wilko announced:

  • Databases are now deleted as a migration strategy

This will be in effect until 1.0 (or a bit before). If needed, make a backup between every minor version bump.

  • All members necessary to render the timeline are now loaded from the store

  • Room.myMembership has been removed, use Room.me.membership

  • Add Rooms.enter and Room.join to join rooms

  • Add Room.leave method

  • Add PublicRooms

  • Add useful getters to Member like isInvited or hasJoined

  • Remove AliasesChangeEvent

  • Errors in the separate isolate are now added to the updates stream where possible, or thrown in the calling isolate

  • Fix profile API not working on servers where authorization is required

  • Add MyUser.hasSynced

  • Fix count not being nullable in MemberTimeline.load

  • More fixes and small changes!

Get it on pub!

🔗Ruma

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

jplatte offered:

This week,

  • Devin, our GSoC student, started blogging on ruma.io

  • We released ruma-identifiers 0.16.2 and ruma-federation-api 0.0.2

  • We started updating ruma-events and ruma-client-api with the changes from version r0.6.1 of the client-server specification

  • We started moving all of our libraries into one monorepo!

    • As part of this, we introduced a kind of meta-library so you no longer have to keep the versions of the individual libraries in sync manually

    • We're hoping that this makes experiments across multiple libraries and the overall contribution process easier 🙂

🔗Dept of Interesting Projects 🛰

🔗Safe Support Chat

Brendan said:

Safe Support Chat, previously known as OCRCC Chatbox, now has a website with guides on how to set it up for organisations: https://www.safesupport.chat/

For context, Safe Support Chat is an embeddable chatbox built on Matrix with cool features such as end-to-end encryption support to enable individuals to seek support with organisations that provide it. It was initially built for the OCRCC (Ontario Coalition of Rape Crisis Centres) in order to allow survivors of sexual violence to communicate and seek help safely with OCRCC facilitators.

Kim Allen of Primal Glow Communications, one of the parties involved in Safe Support Chat's development, also recorded a podcast with Nomadic Labs about this project: https://podcast.nomadiclabs.ca/episodes/the-adventure-of-building-an-open-source-chatbox

🔗Dept of Ops 🛠

🔗matrix-docker-ansible-deploy

This Ansible playbook is meant to easily let you run your own Matrix homeserver.

Slavi reported:

Thanks to benkuly's efforts, matrix-docker-ansible-deploy now supports bridging to SMS (with one telephone number only) via matrix-sms-bridge.

To learn more, see our Setting up Matrix SMS bridging docs page.

🔗CLI Federation Tester

Kai reported:

A new version of the terminal-based federation tester has been released. The current version 1.11 should now cover the entire server discovery process including scenarios with a .well-known configuration without a port, but with a DNS SRV entry.

The script relies on bash, curl, jq and openssl. It has been tested on linux but should also work on *bsd and macos.

The script can be downloaded here:

#cli_federation-tester_de:matrix.chat-secure.de

(The message about the latest version will always be pinned)

🔗FLAP

Louis Chmn announced:

Hi, I've build FLAP to help other self-host multiple free software. FLAP can currently help you to easily setup Synapse, Riot, Nextcloud, SOGo and Jitsi all with SSO and low maintenance needs. Feel free to give it a try !

For French companies, I am also offering managed paid hosting: https://www.flap.cloud

🔗Dept of Bots 🤖

🔗sparky's Matrix Bot

sparky told us:

Announcing Matrix Bot (name is a work in progress)

The first "official" release of matrix bot has been made and you can find the latest release source at https://github.com/sparky8251/matrix-bot/tree/v1.0.0

It's flagship features are currently

  • an imperial <--> metric unit converter for common conversational units

  • a configurable search and link for issues/pulls that responds to any message containing something in the format of jf#123 or jf #1234

  • a configurable general purpose URL linker that responds to messages containing things such as docs@hwa or link @troubleshooting (both sides of the @ are configurable)

There are plans to enable group pings, get a help command that can be limited to function only in a specific room, and more in the works so be sure to check back soon!

🔗matrix-reminder-bot

anoa reported:

matrix-reminder-bot bot to remind you about things. Supports reminding an individual in a room or the whole room itself. Also supports setting alarms, which will continue to sound periodically until silenced.

Built with nio-template and the excellent matrix-nio library.

🔗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
1fairydust.space354
2aragon.sh419
3envs.net426
4maunium.net456.5
5maclemon.at559
6matrix.vgorcum.com667.5
7threatmodel.io695
8gottliebtfreitag.de734
9neko.dev818
10nzbr.de892

🔗Final Thoughts 💭

There are bounties to be had! AU$500 to support Emoji Reactions in Fractal, for reference this is tracked on the GNOME gitlab.

We didn't hear from Spectral too recently, but there are signs of code being written.

This week I've been chatting with conference organisers making really interesting virtual event plans, and I'm bursting to share some of the Matrix integration plans, hopefully more details coming soon.

elmussol said:

For those who Hubzilla or Zap or ActivityPub or Friendica or Diaspora, there is now a Hubzilla forum for all things Matrix: https://elsmussols.net/channel/matrix

🔗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 2020-05-29

29.05.2020 00:00 — This Week in Matrix Ben Parsons

🔗Matrix Live 🎙 Demos!

This week we have demos from our core team remote sync!

🔗Dept of Spec 📜

anoa announced:

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

In terms of Spec Core Team MSC focus for this week, we've still got MSC2366 (verification flows) and MSC2399 (UISI messaging), however they are now joined by a third, secret MSC that we'll be working on internally for now :)

2020-05-29-s6ujI-plot.png

🔗Spec releases: Room Version 6, Client-Server r0.6.1, and Federation r0.1.4

Says TravisR:

It's been a little while since we've done a round of spec releases, so we have a bunch of spec releases to share. If you're implementing something from the spec, please have a look at the news: https://matrix.org/blog/2020/05/27/room-version-6-client-server-r-0-6-1-and-federation-r-0-1-4-spec-releases/

As always, any questions about the spec itself can be answered in #matrix-spec:matrix.org, #matrix-dev:matrix.org, or in the various area-specific rooms floating around the federation.

🔗Dept of Servers 🏢

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo said:

Hello again! This week I worked on access control, which means that private rooms are private and invite-only rooms are invite-only. The public room directory only shows rooms marked as such now.

I also made a milestone to track progress on Conduit 1.0. This release marks the point where Conduit is fully usable as a non-federating homeserver. All features of the client server specification should be implemented, unless they can be seen as optional extensions (e.g. alternative registrations methods like email). Conduit should also be free of all known bugs with those features.

Adding federation on top of the 1.0 release will very likely require breaking changes. This means that the release which brings federation will be 2.0 or later and will require a partial or full database deletion.

@TravisR wrote a fix for Riot Web, so you should be able to create accounts on Conduit from <https://riot.im/app> soon.

Thanks to my supporters on Liberapay.

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander said:

Updates:

  • The monolith now has a "hybrid" mode that uses the full HTTP APIs instead of short-circuiting

  • A number of the internal HTTP APIs are now tested fully and have been fixed as a result, which will also improve running a full polylith component deployment

  • Server keys are now managed by a separate server key API component

  • Batched sends in the federation sender are now working properly, improving send performance significantly

  • Error handling in the federation /send endpoint has been tweaked

  • /get_missing_events now returns events that don't fail signature checks

  • Federated room joins by room alias now attempt the server specified in the alias much more reliably

  • The correct room ID is now returned from the PerformJoin API

  • Much of the room server storage code has been deduplicated

  • Fixed some bugs in the device database storage code

  • Sync streams are now managed per-user-per-device, rather than just per-user

  • We no longer incorrectly default to federated joins in response to local invites

Spec compliance:

  • Client-Server APIs: 34% (228/672 tests)

  • Federation APIs: 34% (35/103 tests)

🔗Synapse

Says Neil:

The main news this week is that we switched event persistence away from the matrix.org master process which has made a big difference to overall performance. The impact is best demonstrated by graphing message send times.

synapse perf

We also shipped 1.14.0 which includes OpenId Connect support and improved cache control granularity. It also contains rooms v6.

Next week will be having a think about what to do next for matrix.org performance. Watch this space.

🔗TARDIS (Time Agnostic Room DAG Inspection Service)

Matthew offered:

I made a TARDIS (Time Agnostic Room DAG Inspection Service) - a simple time-travelling debugger for Room DAGs which plugs into Dendrite's internal APIs to visualise room DAGs. The intention is to provide it as a widget which Riot can use to visualise DAGs for debugging, particularly for P2P Matrix. The time-travel bit is simply that it could let you filter out the newer events to show how the DAG has evolved over time, although that isn't hooked up yet. https://github.com/matrix-org/tardis

2020-05-29-vjRQ5-technicolor-yawn.jpg

🔗Synapse Deployment 📥

🔗Kubernetes

Ananace said:

Just pushed the K8s-optimized images for Synapse 1.14.0 - slight changes have been done to the image to further streamline it a bit.

🔗Docker-matrix

Mathijs said:

With the release of synapse 1.14.0 the avhost image, including jemalloc, mjolnir and coturn has been updated as well, avhost/docker-matrix:v1.14.0, as always the release candidates were uploaded at mvgorcum/docker-matrix:v1.14.0rc1 and rc2

🔗Dept of SDKs and Frameworks 🧰

🔗Ruma

jplatte offered:

This week,

  • iinuwa added some new endpoints to ruma-federation-api

  • devinr528 wrote lots of macro code for the next major revision of ruma-events as part of his GSoC project

  • Timo (author of the Conduit homeserver) reported lots of small issues with ruma-client-api of which some are now fixed already

Additionally, we released two new bugfix library versions:

  • ruma-events 0.21.3 fixes an event serialization issue

  • ruma-serde 0.2.2 (an internal dependency) fixed an incomplete part of querystring deserialization, so Conduit (and other future homeservers building on ruma-*-api) can properly handle querystrings in which parameters are repeated (like the server_name in /join/{roomIdOrAlias})

🔗buildbot-matrix v0.0.5

Thanks haywo for this update:

buildbot-matrix v0.0.5 has been released:

  • Option to only get notifications on finished builds was added.

buildbot-matrix is a small plugin for the Buildbot CI framework which sends notifications to matrix rooms. It's available an GitHub and PyPi, take a look at https://github.com/HayWo/buildbot-matrix for more information.

🔗Dept of Bridges 🌉

🔗Let's start with the big news of the week

Half-Shot announced:

I, Half-Shot, changed the status of the IRC Bridge on https://matrix.org/docs/projects/bridge/matrix-org-irc-bridge from "Early beta" to "Stable". This does not mean it's feature complete, or even all the way there, but it sure doesn't crash nearly as often as it did when I started, so that's good enough for me.

🔗matrix-appservice-slack 1.4.0-rc1

Half-Shot offered:

Hey folks, we've released the first RC for 1.4.0 of the slack bridge. This change includes a number of bug fixes around puppeting, but includes a few nice to haves like a /ready endpoint for kube/docker deployments and setting profile information on startup. Please test, and feedback in #matrix_appservice_slack:cadair.com :)

🔗Mau-bridge multi-update

Tulir told us:

I've been working on improving the reliability of my bridges, primarily by making sure that the user knows if something went wrong. All my bridges now support delivery receipts (implemented as bridge bot read receipts) and can send delivery error messages if there was an error bridging a message. The Facebook and Hangouts bridges also now send connection status messages to a bridge notice room like WhatsApp already did before.

🔗Minetrix

Certainly not from this week, but we haven't featured it before: Minetrix allows you to bridge a Minecraft server with a Matrix room.

I read recently that Minecraft still has 126 million MAU!

🔗Dept of Clients 📱

🔗Daydream

mtrnord told us:

A Matrix webclient written in (mostly) Rust using the official Matrix-Rust-SDK and Rusts WASM Support.

Daydream is the Idea of a Rust Matrix Client. It is still in a very early state and at the time of writing this supports basic displaying of text, image and bot messages as well as sending plain text and markdown.

Try it at https://daydream.nordgedanken.dev/ or check out the Source Code at https://github.com/MTRNord/Daydream

Feel free to join the Matrix Room: #daydream:nordgedanken.dev

2020-05-29-ATL-f-grafik.png

🔗RumaTui

Thanks devinr528 for sharing this WIP Command line Matrix client using matrix-rust-sdk:

  • Display read receipts for the last few messages
  • Display membership status when updated
  • Join a room you have been invited to
  • Client sends read receipts to server
  • Display when messages have been read
  • Leave a room by pressing Delete key (this should probably be a Ctrl-some key deal...)
  • Specify homeserver to join on start up (before the login screen)
    • Simply run rumatui [HOMESERVER], defaults to "http://matrix.org"
  • Displays errors, albeit not very helpful or specific
  • Receive and display messages
    • formatted messages display as rendered markdown
  • Send messages
    • local echo is removed
    • Send textbox grows as more lines of text are added
  • Selectable rooms list
    • change rooms using the arrow keys, making this clickable may be difficult
  • Login widget is click/arrow key navigable
    • hides password

rumatui-demo

A new notification bar under the message window displays notifications such as membership changes, typing, and read notices. I am hoping to have an actual release on crates.io by the end of the day. If you have any thoughts join #rumatui:matrix.org or check it out on github.

🔗Riot-web

Bruno said:

This week on Riot-web, we've been:

  • starting work on shifting the UX for the encryption upgrade towards using recovery keys in favor of passphrases.

  • starting early work on a redesigned matrix.to website

  • starting looking to integrate riot desktop with the native password manager of your platform of choice through keytar

  • fixing some issues with the (still experimental) IRC layout

  • iterating on the (also still experimental) new room list

  • looking into some issues that arose from the cross-signing release

🔗Riot-iOS

Says Manu:

Riot-iOS (and MatrixSDK and MatrixKit) is now fully compatible with iOS13 SDK. A TestFlight 0.12.0 will be available soon.
The work is still on its branches (xcode11). It comes with the new notification service mechanism and we want to run a lot of tests next week before going to production.

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) offered:

  • Ikito added options to show larger emoji in the timeline and added tooltips to all settings, that provide additional explanations.

  • You can now limit the width of the timeline to make long messages more readable, if you maximise Nheko on a widescreen monitor.

  • Lorenzo added a pretty much complete italian translation!

  • Settings that apply to the qml parts in Nheko now apply immediately without a restart.

🔗Dept of Bots 🤖

🔗midori jabbot 0.5

Torrey Searle reported:

midori jabbot 0.5 has now been released.

Jabbot is a multi-protocol chat bot that can be taught new commands in-chat

This is the first release of jabbot with support of matrix in it. This release also includes support for DISCORD.

Additionally this release is the first release that can be installed via APT


echo "deb [trusted=yes] <https://dl.bintray.com/midoricorp/deb> unstable main" | sudo tee -a /etc/apt/sources.list
apt-get update

apt-get install jabbot-full

See https://github.com/midoricorp/jabbot/blob/master/README.md for details

or goto #midori-dev:hackerspaces.be for support/live-demo

🔗Dept of Guides 🧭

🔗Cross Signing explanation

This is a great resource for helping explain how cross-signing works!

JCG said:

After explaining cross signing to others multiple times in the past and seeing the question again on mastodon, I decided to write a short blog post on the topic, explaining how the keys interact with each other and how Alice's devices then end up trusting Bob's devices. You can read it over on https://jcg.re/blog/quick-overview-matrix-cross-signing/

🔗Cross-signing implementors guide

This one isn't quite merged yet as we're going to give a thorough review, but big thank you to sorunome for taking the time to put this together:

While implementing cross-signing for fluffychat soru decided to write a guide that would help other client developers to implement that, too. So far it is still WIP and doesn't cover too much, yet, but soru might have typed up more once this TWIM goes live. The PR (and thus the markdown of the guide) can be found here: https://github.com/matrix-org/matrix.org/pull/740

🔗Dept of Event Videos 📹

Matthew spoke at Rust London meetup earlier in the week, check out the video!

(Matrix at around 29:30)

🔗New Public Rooms 🏟

Ludwig announced:

May I advertise #matrix-design:matrix.org to you.

It's a bunch of people who are passively learning design for their matrix projects. You might pick up a few things if you join :p

🔗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
1fairydust.space350.5
2jonas-schuermann.name437.5
3fachschaften.org446
4revreso.de576.5
5heitkoetter.net598
6matrix.vgorcum.com634.5
7c-base.org694
8fab.network828
9sumnerevans.com1023
10nltrix.net1032

🔗Final Thoughts

You may have seen that Mastodon is preparing to implement Olm! Read some news in German or why not watch Gargon on Open Tech Will Save Us #2 where the idea was first discussed? It's like you're in the room where it happens... 🎶

🔗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 2020-05-22

22.05.2020 00:00 — This Week in Matrix Ben Parsons

🔗Matrix Live 🎙

🔗Dept of Status of Matrix 🌡

🔗Automattic invests in New Vector

Huge news, read more detail here! Check out Matrix Live with Matt Mullenweg above, too.

Matthew announced:

Automattic invested in New Vector in order to support Matrix, and are also hiring Matrix Integration Engineers! https://automattic.com/work-with-us/matrix-integrations-engineer/

Do check out the job description - this is a really fascinating role! If only I didn't have a job already...

🔗Dept of Spec 📜

anoa reported:

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

🔗MSC Status

Merged MSCs:

MSCs in Final Comment Period:

New MSCs:

🔗Spec Core Team

In terms of Spec Core Team MSC focus for this week, the room v6 MSCs from last week's focus have all reached FCP 🎉 So we're continuing on with the E2E MSCs; MSC2366 (verification flows) and MSC2399 (UISI messaging).

We'll soon be releasing Federation API r0.1.3 and Client-Server API r0.6.1, which brings room v6.

Interestingly, this was produced with some new automation.

MSC status chart

As if this wasn't enough, sorunome reported:

heya twimers who were excited about the emotes msc thing, soru added a few more things and it'd be cool if someone could cross-check it https://github.com/matrix-org/matrix-doc/pull/2545

🔗Dept of Servers 🏢

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo offered:

This week I finished support for end to end encryption and also implemented media uploading, downloading and thumbnail generation! See it in action here:

If you want to see it with your own eyes, create an account via https://riot.conduit.rs. We hope to push our changes to Riot upstream soon, so you can use your own Riot to connect.

Finally, I want to thank my kind supporters on Liberapay.

🔗P2P/Dendrite

Dendrite is a next-generation homeserver written in Go

kegan told us:

Dendrite has seen a number of improvements this week, including:

  • Backfill will now backfill more messages than before, resulting in a snappier experience when scrolling back in a room.

  • Dendrite is now compliant with Synapse on backfill behaviour.

  • Inline CS API filters will now honour the timeline limit value.

  • Making more Sytests pass.

  • Modifications to how Dendrite tracks memberships.

  • Addition of an -api flag to expose internal HTTP APIs.

  • Clearer separation of internal/external HTTP APIs.

This has culminated in the following values for Are We Synapse Yet:

Client-Server APIs: 34% (227/672 tests) - up from 33%
Federation APIs: 34% (35/103 tests) - up from 27%

As for P2P....

🔗p2p.riot.im v0.1.0 released!

This is a significant milestone because we now persist Dendrite databases to IndexedDB, greatly improving UX and giving users a consistent identity on the P2P network. In addition to this, the following changes have been made:

  • We now bake in the Dendrite commit SHA into the logs on startup.

  • Dendrite will now restart itself in case of panics/segfaults.

Known issues with this release:

  • Databases are only flushed to IndexedDB every 30 seconds, making it possible to lose the most recent messages. This has a variety of effects on the Dendrite instance, but in testing it has been able to mostly gracefully recover. Messages that you have sent will be backfilled but will be redacted. Rooms you have joined will be forgotten, and you need to be kicked/re-invited/re-join for communication to be re-established. We're looking into a better flushing mechanism going forwards.

  • If you have previously visited p2p.riot.im, you MUST manually clear your service worker via chrome:serviceworker-internals or about:debugging#/runtime/this-firefox or else you might get errors such as "LinkError: WebAssembly.instantiate(): memory import 37 has no maximum limit, expected at most 4294967295".

Please do not rely on p2p.riot.im to have any form of stability. Patch version bumps (0.1.0 -> 0.1.1) will not remove databases but minor version bumps will (0.1.1 -> 0.2.0) so we can continue to progress with Dendrite development at speed.

🔗Synapse

anoa announced:

Synapse v1.13.0 has landed with SSO fixes and support in User-Interactive Authentication sessions, the ability to run in worker mode using redis as an experimental backend (which will soon be considered the default transport for Synapse workers), the ability for server admins to define password policies, some alias bugfixes, some cross-signing fixes as well as many more continuous improvements.

v1.14.0 in now in development, which will feature room v6 support.

Be sure to read the upgrade notes before upgrading.

And btw, upgrade notes != release notes

🔗Synapse Deployment 📥

🔗Kubernetes

Ananace offered:

1.13.0 tags for the K8s-optimized docker image have been pushed

🔗Docker-matrix

Mathijs announced:

The synapse 1.13.0 image including coturn and jemalloc is available as avhost/docker-matrix:v1.13.0, as always the RCs were (and are) available under mvgorcum/docker-matrix:v1.13.0rcX

🔗Dept of Bridges 🌉

🔗matrix-sms-bridge

Benedict told us:

I released a new matrix bridge called matrix-sms-bridge, which allows you to bridge matrix rooms to SMS with one telephone number only. It is build on top of matrix-spring-boot-sdk and written in kotlin. Currently, only modems via Gammu are supported, but new Providers (e.g. some REST API) can be added very easily.

I'm going to integrate it into matrix-docker-ansible-deploy to use it in my corporate-environment.

🔗mautrix-telegram

Tulir said:

mautrix-telegram v0.8.0-rc2 was released with some bugfixes and a basic implementation of Half-Shot's bridge information state event MSC. There will probably be at least one more RC with some more bugfixes in a week or two.

🔗mautrix-facebook

Tulir said:

Last week I updated the messenger library mautrix-facebook uses to the latest upstream version, which might have made things work a bit better. This week mautrix-facebook got some more bugfixes and also a new feature to bridge animated stickers on Messenger into gifs on Matrix.

🔗Dept of Clients 📱

🔗Fluffychat

sorunome reported:

Fluffychat Version 0.14.0 is out now and this is new:

  • Implement image viewer

  • Implement room pills

  • New chat appBar showing presences and room avatars

  • Implement well-known support

  • Minor fixes, refactoring and performance improvements

F-Droid is already published here: https://christianpauly.gitlab.io/fluffychat-website/en/fdroid.html

PlayStore and TestFlight will follow in the next few days.

🔗Radical

stoic said:

Riot Web as Firefox Add-on? Yep, it's (still) a thing, now available as version 1.6.1 and supports search in encrypted rooms (via Radical Native)

🔗Mirage

miruka offered:

Mirage 0.5.0 has been released today:

  • Major performance improvements. Although there is still work to be done, such has persisting client state between restarts to avoid initial syncs everytime, accounts will hundreds of rooms should now be able to finish loading and no longer take your entire RAM and CPU until everything freezes

  • Rooms with unread messages or mentions for your user (currently only those received while the client is running) will be highlighted and sorted first

  • New UI component allowing you to quickly jump between accounts in the room list, and always keep an eye how many total unread messages or mentions you have

  • Messages can now be replied to

  • Room members can now be kicked and banned

  • New keybinds for jumping between accounts, cycling through unread rooms, replying to messages and opening links in a message

  • Kinetic scrolling can now be disabled, this should fix scrolling for some trackpads incorrectly handled by Qt

  • The order in which accounts are shown in the side pane can now be customized

  • And a lot more, see full changelog

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) announced:

  • lkito has been contributing this week to Nheko as part of his homework for university or so? Anyway, he added an option to highlight whatever message you are currently hovering over, so that you have an easier time locating the proper timestamps and buttons for that specific message. He's now working through a few other issues to improve his coding skills, like optionally having big emojis in the timeline or showing tooltips to explain the settings Nheko has.

  • You can now set a /roomnick

  • You can now tag rooms using the room context menu. You can assign multiple tags and create new tags as you like. This helps organizing your rooms, since Nheko supported filtering you room list using tags for a few years already, but until now you couldn't assign them.

  • red_sky has been tying up the loose ends for reaction support. Once that is done, we'll release 0.7.2

🔗RiotX Android

valere offered:

The team is working on getting feature parity with old-riot

  • Identity server support has been merged to develop
  • Switch language

1:1 Voip calls, Widgets, and room attachment list screen (media, files) are work in progress, and coming next

🔗Matrix Android SDK

v0.9.35 has been released

  • Fixes Favs bug (no more favs after update)

=> Riot android release coming soon with SDK update

🔗Riot-iOS

From Manu:

This week, we released Riot-iOS 0.11.5 with the support of the new version of SAS (emoji) verification. This release contains also a fix for share and Siri extensions to make them compatible with cross-signing.
We continued to make progress on the full support of the iOS13 SDK. The new push extension is almost here but it is tricky to make it work as VoIP pushes we abused for years.

🔗Dept of SDKs and Frameworks 🧰

🔗Ruby

Ananace told us:

Just released version 2.1.0 of the Ruby SDK, headlines changes are the addition of request IDs (and timing) to the debug output to make request/response tracking easier, as well as finalized support for extending both the low-level and higher-level clients with MSCs - along with a much improved implementation for MSC2108 (Sync over SSE). Also included are some bug fixes, as usual, as well as many improvements to the provided example bot.

You can still find it on rubygems as matrix_sdk, and feel free to drop by #ruby-matrix-sdk:kittenface.studio for questions, comments, or just general discussion.

🔗Ruma

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

jplatte told us:

🔗Rust bits

This week, we worked on support for endpoints with multiple values for one query parameter (in a livestream), federation endpoints for joining rooms and the next revision of ruma-events [1, 2] (that will, once finished, allow us to finally support redacted events properly, amongst other things). We also fixed two small bugs in ruma-client-api. Just today, we released ruma-client-api 0.9.0 and ruma-client 0.4.0 (sorry, no change log ☹︎).

🔗www.ruma.io

Our website has been revamped! It has been ported from Middleman to Zola and has received some style improvements. RSS support has temporarily been removed, but you can expect it to be restored along with some content updates soon.

🔗Dept of Guides 🧭

🔗New documentation from Nataraj

Nataraj offered:

I have written a guide about configuring bridge to FreeNode: https://github.com/matrix-org/matrix-appservice-irc/wiki/Setting-Up-Bridge-To-FreeNode

And wrote a HowTo for installation matrix-appservice-irc on Debian: https://wiki.debian.org/matrix-appservice-irc

🔗Dept of Tulir 🇫🇮

A rather infrequent section.

Tulir offered:

Since multiple people have asked me about it, I now have a GitHub sponsor thing where you can get a fancy flair in my rooms and access to a highly exclusive sponsor room.

I didn't have any public donation things earlier due to the Finnish money collection act, but I realized that I can bypass that by selling things (like access to a Matrix room) instead of it only being a donation.

Completely unrelated to that: Following the bridge info state event implementation in my bridges, I've made a PR to Riot web to fix some bugs related to showing the bridge info there: https://github.com/matrix-org/matrix-react-sdk/pull/4621

🔗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
1fairydust.space329
2envs.net429
3maunium.net473.5
4danielvinci.com540
5maescool.be565
6matrix.vgorcum.com614
7aragon.sh774
8dmnd.sh1448
9utzutzutz.net1689.5
10kittenface.studio2009.5

🔗Final thoughts 💭

Last week we featured some Sytest output and compared the results between homeservers, which was fun! We'll bring this back as an occasional feature.

I didn't feature this last month: GNU Radio are now using Matrix.

🔗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 2020-05-15

15.05.2020 00:00 — This Week in Matrix Ben Parsons

🔗Open Tech Will Save Us 🎙

Second edition of OTWSU took place this week! Chance to watch it if you haven't already, or (pro-tip), watch it again.

  • Mike Hoye from Mozilla talks about "Verbs in the fediverse"
  • Eugen (@[email protected]) discusses "how we keep mastodon.social running at scale" as a Q&A
  • ... and a new VIP tour of Dendrite, the next-gen Matrix Homeserver, from our own neilalexander and Kegan!

🔗Dept of Status of Matrix 🌡

🔗Bundeswehr switching to Matrix

Oleg said:

German army reported in December 2019 their intentions for Matrix.

Now they decided to replace Stashcat with Matrix in this autumn.

Around 50'000 account are planned.

Riot will be used as a Matrix client. The E2EE by default and device Cross-Signing will be extensively used.

Full article (in German): https://www.heise.de/newsticker/meldung/Bundeswehr-setzt-kuenftig-auf-Matrix-als-Messenger-4719474.html

🔗Mozilla are happy with their deployment!

About a year after this tweet, four months after deployment of our open source @matrixdotorg instance, community participation in the Mozilla project has increased from 4x to 10x across all the projects that previously relied on IRC.https://t.co/E5HRsfHkzk

— mhoye (@mhoye) May 12, 2020

For more from Mike check out the OTSWU recording above, he's on first.

🔗Dept of Spec 📜

🔗Spec

anoa announced:

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:

  • No MSCs were merged this week.

MSCs in Final Comment Period:

New MSCs:

🔗Spec Core Team

In terms of Spec Core Team MSC focus for this week, MSC2526 has entered FCP. We'd like to keep the E2E MSCs in flight in focus, but are also conscious that room v6 is coming up. We're sticking the MSCs for the latter alongside the existing E2E ones in the focus queue, for a total of 5. Those MSCs are: MSC2366 (verification flows), MSC2399 (UISI messaging), MSC2540 (canonical JSON validation), MSC2209 (notifications auth rules), and MSC2240 (room version 6).

🔗Dept of Servers 🏢

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander announced:

  • Dendrite now implements /get_missing_events, which improves inbound federation reliability significantly

  • State resolution v2 implementation in gomatrixserverlib now uses significantly less overall memory and performs far fewer allocations

  • A skeleton keyserver component has been added - it returns no keys for now but that is enough to satisfy Riot when creating DMs

  • Canonical alias is now set if needed when the room is created

  • Reduced the number of HTTP 500s returned by the media API

  • Sync API topology logic and tokens have been reworked

  • Server keys are now cached in memory using an LRU cache, regardless of database or fetchers used

  • Federated joins now attempt all listed servers more reliably

  • Federated joins in response to an incoming invite should now work, particularly in cases where the room had previously been joined and left

  • Some Prometheus statistics are now available for the LRU caches

  • Sync API storage layer has been deduplicated quite a bit

  • Display name and avatar URL are now sent in join content again after a regression

  • Fixed a bug in the membership updater when matching added and removed state

  • Fixed a bug where a response to a federated device query would not contain all required fields

  • Fixed a bug where /sync could panic after joining a room

Get a real demo of Dendrite from Open Tech Will Save Us #2

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo said:

This week I worked on presence and end to end encryption, but they are not working yet.

Meanwhile, Valkum got sytest integration working! This means each time a new commit is pushed to a branch, CI automatically picks up on that and lets a lot of tests run on the homeserver - the same tests that synapse uses. Currently we have 8% of all tests positive on Conduit.


Client-Server APIs: 8% (56/667 tests)

*------------------

  Registration             :  53% (17/32 tests)
  Login                    :  26% (5/19 tests)

  V1 CS APIs               :  10% (3/30 tests)
  Misc CS APIs             : 100% (1/1 tests)

  Profile                  :  33% (2/6 tests)
  Devices                  :  17% (2/12 tests)

  Presence                 :   0% (0/10 tests)
  Create Room              :  31% (4/13 tests)

  Sync API                 :   1% (1/85 tests)
  Room Membership          :   0% (0/15 tests)

  Room State APIs          :   0% (0/14 tests)
  Public Room APIs         :   0% (0/7 tests)

  Room Aliases             :   0% (0/15 tests)

At the same time, MTRNord tried to integrate opentracing into Conduit and Paul worked on a docker file to make installation easier.

Thanks to my supporters on Liberapay.

See the bottom of this post for some more interesting numbers!

🔗Synapse

anoa offered:

Synapse v1.13.0rc2 shipped this week with the following notable improvements:

  • SSO support in User-Interactive Authentication sessions

  • Cross-signing device list bug fixes

  • The ability to run in worker mode using redis as a backend (which will soon be considered the default transport for Synapse workers)

  • Some admin api improvements and additions

...as well as all the usual bug fixes and especially performance improvements. See the changelog for the full details and please test if you can! A full release is expected early next week.

Speaking of next week: work will involve getting room version 6 ready to ship, alongside even more performance work - especially moving event processing off the master process (the code for which is already running successfully on Half-Shot's own homeserver)!

🔗Dept of Bridges 🌉

🔗mx-puppet-steam

Icewind told us:

I've been working on a new puppet bridge for steam chat mx-puppet-steam, while I would still consider it to be in alpha state, most of the things needed for day to day chatting are functional.

It bridges both one on one and group messages, shows the proper name, avatar and online status of your frends and handles embedded images in one on one chats.

I have a docker image for it if that helps: https://hub.docker.com/r/icewind1991/mx-puppet-steam

🔗mautrix-whatsapp

Tulir reported:

As promised last week, mautrix-whatsapp now has end-to-bridge encryption (currently on the e2be branch, will be merged to master soon™). It works mostly the same way as the other bridges.

🔗Dept of Clients 📱

It's a big, big week for client news! We must take a deeper look at some of these projects soon!

🔗Ditto v0.4.1 Released!

Annie offered:

🔗What is Ditto?

Ditto is a mobile client for iOS and Android! It's available on TestFlight and Google Play (beta) - download link available on the website below.

🔗What's New?

🔗Added

  • Reactions support! 😄🎉

  • Add a visual hint if a message is sending or could not be sent

  • Send pending messages when the connection to the homeserver is back

🔗Changed

  • Update to React Native 0.62.2

  • Major performance improvements!

🔗Fixed

  • Redacted events have a proper message

  • Switched push gateway to https

🔗Matrix-TV

Half-Shot said:

Link: https://github.com/Half-Shot/matrix-tv

I got really bored in lockdown, as we all have. I stared at my TV, and it stared back at me. While it's definitely a privacy nightmare to start developing apps for these things, I couldn't help myself. I got stuck in, and secured myself a LG Developer Account.

The LG set of smart TVs use WebOS, as like the name suggests, runs apps in it's special variant of Chromium. I was lucky to be running a recent OS and had access to Chromium 53! And NodeJS 0.12!! Sarcasm aside, there are some very troubling versions of WebOS with much older versions of the browser, so I was happy to be developing against something with strong ES6 support. Despite the absolutely awful onboarding experience, the WebOS SDK itself was pretty good. matrix-tv was written to be a general large screen matrix client, so it talks to the TV's own libraries through an abstraction layer :)

Anyway, this client is the culmination of a lazy Sunday afternoon's work. It features very basic support for viewing a room, but I hope to expand it at some point. It supports running in a web browser and the aforementioned OS, but support for more variants is easy to add. I'm looking into how to design for the large screen beyond making fonts bigger, because the unique constraints on memory and UI are fun challenge.

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) announced:

  • Nheko now supports SSO. If your server uses SSO, you may want to test that, if it works for you, but I did successfully sign into the Mozilla homeserver.

  • We improved hinting on the login and registration pages, so it should be easier to enter correct credentials.

  • Replies now have a max height by default. If you want to see the full reply, you need to click on it to navigate to the reply.

  • Nheko now has a red unlocked padlock, when an unencrypted message is sent in an encrypted room.

  • red_sky has been hacking along on reactions. Displaying them is now in master, for sending he is currently reworking the emoji picker, so that it can be attached to the timeline more easily and it is easier to search, etc.

Nheko has it's own weblate btw, if anyone feels like translating a bit of stuff: https://weblate.nheko.im/engage/nheko/?utm_source=widget

🔗Pattle: version 0.16.0

Pattle is a client written for Flutter using Dart

Wilko said:

A new version has been made available and will become available on Google Play and TestFlight!

Because of corona this might take longer than usual.

🔗Changes

  • Huge performance improvements! All SDK processing now happens in a different isolate (comparable to a thread)!

  • Also huge start up time improvement! When opening the app you should see your chats in less than or equal to a second! (will vary per device)

  • You'll now see two checkmarks when a message is read!

  • Add Dutch translations! (thanks to Louis!)

  • You can logout now!

  • An error along with a stack trace is now shown when the initial sync fails. You can use it to inform me and make an issue!

  • For the launcher icons vectors are now used on Android when it's supported

  • Contributing is now easier, you don't have to sign a CLA anymore!

🔗Get Pattle

🔗Issues or suggestions

If you stumble upon any issues or would like to suggest features, please do so here!

You can login via GitHub and Gitlab.com!

🔗Follow development

Follow development in #app:pattle.im!

🔗RiotX

benoit reported:

We are making progress on Identity server feature implementation (PR in review). Also we are working to integrated call with WebRTC, integration manager (widget, Jitsi, sticker) and we are stabilizing the application, especially on the cross-signing part.

Expect a new corrective release at the end of the day!

🔗gomuks

gomuks is a terminal based Matrix client written in Go. Source on GitHub

Tulir offered:

I was able to solve a few annoying bugs like message history disappearing and switching rooms taking time (it turned out that read receipts were being sent synchronously), so I decided to release gomuks v0.1.0.

🔗fluffychat

krille said:

FluffyChat 0.13.1 is out with:

  • New status feature

  • HTML rendering of messages

  • Markdown support

  • Enhanced chat list design

  • New translations (Polish, Hungarian)

  • Lots of minor fixes and refactoring

2020-05-15-vsWn8-img_1589450046798.png

🔗Nio

Nio is a client written with SwiftUI

kilian told us:

Since the last updates, there's been a few cool new features and changes added to Nio:

  • message text field supports multiple lines of input

  • edit badges instead of "(edited)"

  • markdown message rendering

  • spanish translation

  • blurhash support for incoming images (so find some Nheko-using friends! 😄)

  • sending images

  • and a few minor and internal fixes

Join us in #niochat:matrix.org for discussion and more fun 😊

🔗Riot-Android 0.9.11

benoit reported:

Riot-Android: Version 0.9.11 (with Matrix SDK 0.9.34) has been released on the PlayStore, and should be available for all during the week-end. It contains fixes on the identity server feature (the "missing token" thing), and also support Jitsi call with configured domain.

🔗Riot-iOS

Manu offered:

On the cross-signing side, we have been working on the implementation of SSSS (to recover all private keys from the HS) and on UI polishments.

On the maintenance side, the new push mechanism from Apple has been implemented but it needs more work to work properly.

🔗Riot integration with NextCloud

Riot-web integration with NextCloud exists! Source at https://github.com/gary-kim/riotchat.

🔗Dept of SDKs and Frameworks 🧰

🔗matrix-spring-boot-sdk

Benedict offered:

This SDK is now on maven central. I also introduced support for implementing Application Services. The project can be found here: https://github.com/benkuly/matrix-spring-boot-sdk . It will be used by Matrix-SMS-Bridge, which only needs one telephone number. The latter will be released next week, when everything works fine (https://github.com/benkuly/matrix-sms-bridge).

🔗Matrix Dart SDK: v0.31.0

Wilko said:

  • Add the ability to defer all processing to a different isolate

    When you use isolated: true on Homeserver.login or MyUser.fromStore, everything will be handled for you and the SDK works the same.

    This only works on platforms with the Dart VM (not web).

  • Updaters are now globally registered per MyUser id.

    This means for now only one Updater per MyUser is allowed. Updaters are created when a MyUser instance is retrieved via Homeserver.login or MyUser.fromStore

  • Add ability to specify what rooms to load from store when retrieving user

  • The previousBatch param from Room.copyWith is removed (wasn't used)

  • Add ability to override context in MyUser.copyWith and MyUser.merge

  • Updater and Homeserver are less coupled now

  • When a Context is changed with copyWith, all child objects' contexts are also changed

  • Fix bug in read receipt parsing (thanks to MatMaul!)

  • Sync errors are now pushed to the updates stream

  • Fix access token not being passed to logout API

  • Add type to RequestUpdate, so you can see which type of call

    the update was caused by

  • Moor has been updated

  • And other minor fixes!

Get it on pub, and see the source here!

🔗Dept of Bots 🤖

🔗JupyBot - First proof of concept

rdi said:

🔗What is JupyBot

The purpose of the bot is to provide a link with Jupyter kernels running either on your local computer or somewhere else on a server. You can access your kernels through the bot with the chat interface. The kernels will answer to your commands through the same interface.

Since this is still a proof of concepts, the number of features is limited (command line text, string and pictures are the only output formats supported. No widget, no funny javascript) and they are few safeguards against infinite loops and other entertaining bugs.

🔗TODO

This is right now just a proof of concept. We want to see if such a bot can be useful for people and how. What features would be interesting, what can be integrated in the present clients,... Therefore, in the short term, we want to focus on the possibility of easy testing for users and easy contributions for people who want to add their ideas. On the mid- and long term, a lot of ideas can be realized; it will depend on the feedback. These are just some examples. Short term:

  • proper error catching

  • fallback for non supported Jupyter formats on riot.im (i.e. a lot)

  • testing on termux on a tablet or smartphone

  • solve the problem with nio-matrix and upload in chunks of images.

  • Dockerized version

Middle term:

  • use of opsdroid as a framework

Longer term:

  • local server integrated to locally command the bot service.

  • make full use of jupyter capabilities with a client suited for it (for instance a Jupyterlab plugin)

2020-05-15--q5mx-screenshot1.png

2020-05-15-0k1yx-screenshot2.png

🔗snowstorm-matrix

lub reported:

I made a little bot that scrapes https://news.blizzard.com/en-us , because they've disabled their RSS feeds for some time now. It regularly scrapes all posts of a configured category and sends messages for new articles to all rooms the bot is a member of. It works like a RSS bot, except the source is a website instead of a RSS feed.

In the readme there are also some public instances, which you can just invite instead of hosting your own bot.

https://gitea.lubiland.de/lub/snowstorm-matrix

🔗midori jabbot matrix.org

Torrey Searle told us:

I've added matrix support into a chat bot, you can see the chat bot in action at #midori-dev:hackerspaces.be and it's project page is here https://github.com/midoricorp/jabbot.
it's main highlight is anybody can add new commands to it in chat using its scripting language
any any existing bot command can be used as a function in new scripts you write
The scripting language to add new commands can be found here https://github.com/midoricorp/script
you can do things like
!script print "HELLO world";
or make a new command
!script sub hello { print "HELLO World"; }
that would result in a new command !hello being made
print also has 2 output stream, one for rich format and one for basic formatting
!script print "Hello World!"; print HTML "Hello <b>World</b>";

🔗Dept of Events and Talks 🗣

Matrix will be featured in a Rust London meetup on the 27th May 2020.

🔗New Public Rooms 🏟

Ludwig offered:

Hey, I have created a room for designers working on matrix stuff to join: #matrix-design:disko.media

The goal is to improve cohesion and collaboration for all things design (UI, UX, interaction...) Over time, it should become a place for people to

  • ask design-specific questions

  • share cool stuff and be praised for all the good work you're doing

  • develop and document a common understanding of the semantics of matrix

  • make sure the user experience is amazing, even as we all figure out how to federate. Probably most designers work on single clients right now, but there are important UX questions that can only be answered ecosystem-wide. Maybe we'll end up with a design guide for people to use alongside the spec.

🔗Final Thoughts 💭

Let's test homeservers against sytest, then unfairly pit them against one another! This week we're comparing Conduit and Dendrite - let's see the results!

NameConduitDendrite
Federation APIs1% (1/103 tests)27% (28/103 tests)
State APIs0% (0/13 tests)46% (6/13 tests)
Key API17% (1/6 tests)33% (2/6 tests)
Query API0% (0/5 tests)80% (4/5 tests)
send_join API0% (0/8 tests)38% (3/8 tests)
make_join API0% (0/2 tests)50% (1/2 tests)
Auth0% (0/19 tests)5% (1/19 tests)
room versions0% (0/7 tests)29% (2/7 tests)
Federation API0% (0/14 tests)36% (5/14 tests)
get_missing_events API0% (0/6 tests)33% (2/6 tests)
Backfill API0% (0/4 tests)0% (0/4 tests)
Invite API0% (0/10 tests)10% (1/10 tests)
send_leave API0% (0/1 tests)0% (0/1 tests)
Public Room API0% (0/1 tests)100% (1/1 tests)
Device Key APIs0% (0/7 tests)0% (0/7 tests)
Non-Spec API0% (0/50 tests)0% (0/50 tests)
Client-Server APIs8% (56/667 tests)33% (225/672 tests)
Registration53% (17/32 tests)62% (20/32 tests)
Login26% (5/19 tests)32% (6/19 tests)
V1 CS APIs10% (3/30 tests)10% (3/30 tests)
Misc CS APIs100% (1/1 tests)100% (1/1 tests)
Profile33% (2/6 tests)100% (6/6 tests)
Devices17% (2/12 tests)17% (2/12 tests)
Presence0% (0/10 tests)0% (0/10 tests)
Create Room31% (4/13 tests)92% (12/13 tests)
Sync API1% (1/85 tests)40% (34/85 tests)
Room Membership0% (0/15 tests)47% (7/15 tests)
Room State APIs0% (0/14 tests)36% (5/14 tests)
Public Room APIs0% (0/7 tests)14% (1/7 tests)
Room Aliases0% (0/15 tests)67% (10/15 tests)
Joining Rooms0% (0/8 tests)75% (6/8 tests)
Leaving Rooms0% (0/1 tests)100% (1/1 tests)
Inviting users to Rooms0% (0/14 tests)7% (1/14 tests)
Banning users0% (0/5 tests)20% (1/5 tests)
Sending events0% (0/3 tests)100% (3/3 tests)
Getting events for Rooms0% (0/10 tests)60% (6/10 tests)
Typing API0% (0/5 tests)0% (0/5 tests)
Receipts0% (0/4 tests)0% (0/4 tests)
Read markers0% (0/1 tests)100% (1/1 tests)
Media APIs10% (2/21 tests)24% (5/21 tests)
Capabilities API0% (0/2 tests)50% (1/2 tests)
Logout0% (0/4 tests)75% (3/4 tests)
Push APIs21% (12/58 tests)8% (5/59 tests)
Account APIs20% (2/10 tests)40% (4/10 tests)
Ephemeral Events0% (0/1 tests)0% (0/1 tests)
Power Levels0% (0/2 tests)83% (5/6 tests)
Redaction0% (0/5 tests)0% (0/5 tests)
Third-Party ID APIs16% (3/19 tests)16% (3/19 tests)
Guest APIs0% (0/35 tests)49% (17/35 tests)
Room Auth0% (0/25 tests)52% (13/25 tests)
Forget APIs0% (0/4 tests)25% (1/4 tests)
Context APIs0% (0/4 tests)0% (0/4 tests)
Room Upgrade APIs0% (0/21 tests)0% (0/21 tests)
Room Versions0% (0/40 tests)75% (30/40 tests)
Device Keys3% (1/37 tests)3% (1/37 tests)
Tagging APIs0% (0/8 tests)75% (6/8 tests)
Search APIs0% (0/6 tests)0% (0/6 tests)
OpenID API0% (0/3 tests)0% (0/3 tests)
Send-to-Device APIs0% (0/12 tests)0% (0/12 tests)
Server Admin API0% (0/1 tests)0% (0/1 tests)
Ignore Users0% (0/3 tests)0% (0/3 tests)
User Directory APIs0% (0/11 tests)0% (0/11 tests)
Application Services API4% (1/25 tests)20% (5/25 tests)

🔗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 2020-05-07

07.05.2020 00:00 — This Week in Matrix Ben Parsons

🔗Matrix Live 🎙

Matthew and Amandine discuss the week, including E2EE by default!

🔗Dept of Status of Matrix 🌡

What a week!!

Lots happening this week! Cross-signing landed - this is a massive achievement for the team, and will go a long way to helping the user experience for new users especially. Read more in the major Riot blog post here. Time to start getting less-technical friends on Matrix!

Google announced their Summer of Code programme acceptees: Matrix have six students this year, our most ever! We'll make a new blog post next week welcoming the students!

Last month we hosted Open Tech Will Save Us meetup 1, so hold on to your keyboard as we announce Open Tech Will Save Us meetup 2!

Meetup 2 will feature:

  • Mike Hoye from Mozilla talking about "Verbs in the fediverse"
  • Eugen (@[email protected]) will talk about "how we keep mastodon.social running at scale" as a Q&A
  • +MORE

🔗Dept of Spec 📜

anoa offered:

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

🔗MSC Status

Merged MSCs:

MSCs in Final Comment Period:

New MSCs:

🔗Spec Core Team

In terms of Spec Core Team MSC focus for this week, MSC2474 has entered FCP. Keeping with the E2EE theme, we've switched focus to MSC2526. So the new list of MSCs for next week is: MSC2366 (verification flows), MSC2399 (UISI messaging), and MSC2526 (deleting key backups).

🔗Dept of Servers 🏢

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander said:

  • Some of the work for /get_missing_events has been done now for filling gaps in the room DAG

  • Federation sender performance and parallelisation have been dramatically improved, which helps a lot in big rooms

  • Retries, backoff and blacklisting have also been implemented in the federation sender to handle cases where remote homeservers are unavailable much more gracefully

  • Retrieving missing state when receiving incoming events over federation is a bit more robust now

  • Creating direct chats now works

  • Invites are mostly working now overall, both locally and over federation

  • RespState and RespStateJoin have been fixed in gomatrixserverlib

  • Room joins and leaves are now handled by new code across the roomserver and federation server perform APIs, which reduces complexity significantly

🔗Synapse

Neil offered:

  • Redis live in production for m.org! We did not expect this to translate into a significant improvement in performance directly, but it means that we can add new workers without any extra overhead on the master process which has been very useful in supporting cross signing.

  • Fixing bugs leading to messages getting stuck at the bottom of the timeline as well as messages not making it to sync at all.

  • Lots of improvements to deal with the extra load generated by cross signing.

All of these changes will be available in v1.13.0 which should have a release candidate ready rsn.

Next week, we continue to work on sharding changes, further SSO support and ensuring that cross signing adoption is as smooth as possible.

🔗architect

Gnuxie said:

Architect is a homeserver project written in Common Lisp. We intend to create a high performance homeserver using the meta-programming features of Common Lisp to reduce the amount of redundant and timely code that needs to be written and maintained.

🔗architect events

I created a json-schema library, to generate class definitions directly from the Matrix specification. These classes also have information attached to them to allow for serialisation, using a metaclass from json-clos.

This is done entirely dynamically without writing to source files. The invocation of json-schema that creates classes for the client-server, server-server and application-service protocols is only about 20 lines.

I definitely approve of separating out the event library and generating it from the spec - Ruma also has this approach.

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo told us:

This week I refactored most of the data handling code to make it both more efficient and easier to read. I started by splitting a file called "data.rs" into multiple smaller files that handle just one part of the database, like "users.rs", "rooms.rs" or "edus.rs". I continued improving the code by making methods return iterators instead of vectors and propagating errors instead of crashing directly. Lastly, I added a few comments here and there and made sure everything works.

Meanwhile, @Valkum experimented with CI and @MTRNord is working on FluffyChat Flutter support.

Finally, I want to thank my supporters on Liberapay.

🔗Dept of Bridges 🌉

🔗matrix-signal bridge

witchent told us:

After a few weeks of work the matrix-signal bridge is now functional again. In the process I also added the possibility to send audio and video files among other things.

If you want to try it out go to https://github.com/witchent/matrix-puppet-signal.

🔗mx-puppet-bridge

mx-puppet-bridge is a general bridging library that supports (double)bridging and relays. The goal is to make it as easy as possible for others to bridge new third-party protocols to matrix. Support room Donate

sorunome reported:

mx-puppet-bridge now supports emote synchronising using revolution's custom emotes! The discord protocol implementation (mx-puppet-discord) already utilizes this

🔗Easybridge is a multi-user bridge for small Matrix servers

LX reported:

Easybridge is a multi-user bridge for small Matrix servers, with the idea of making it easy for non-technical users to bridge their external accounts into Matrix. Once configured next to a server, users can just go to a dedicated web page and add their accounts with a simple form. Currently supported protocols include IRC (buggy), XMPP (basic feature only), Mattermost (quite in good shape) and Facebook Messenger (has issues with disconnections). Available at the following link: https://git.deuxfleurs.fr/lx/easybridge

🔗matrix-appservice-slack

Half-Shot offered:

Hello one and all. Today we're releasing the 1.2.0 of the slack bridge. No notable changes from the last RC this time, but another release should follow this one soon to make changes to the provisioning system :)

🔗Dept of Clients 📱

🔗gomuks

gomuks is a terminal based Matrix client written in Go. Source on GitHub

Tulir offered:

gomuks's e2ee support is now on the master branch. The basic olm/megolm things like key distribution work fine, but no advanced stuff like key import/export or device verification yet.

I'll probably add e2be to mautrix-whatsapp next and then add some of the advanced e2ee stuff to gomuks. I'll also make a v0.1.0 release in gomuks after I figure out some bugs in message history loading.

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) reported:

Apart from some further speedups, we've been working on reactions. Nheko can now display them and sending them should be done soon too. We also fixed a few bugs, when people reported them and you can now select, who you want to reply to by using a keyboard shortcut (Alt+Arrow keys for now). We will probably release a new version once reactions are done.

2020-05-07-koLge-clipboard(1).png

🔗RiotX v0.19.0

benoit said:

We have released RiotX v0.19.0 on the PlayStore on Tuesday! This is a pretty huge release, including all the work on cross-signing, but also other features like changing account password, deactivating account, saving media to Gallery, etc., without forgetting a lot of bug fixes. More detailed change log can be found here: https://github.com/vector-im/riotX-android/releases/tag/v0.19.0.

We are now working to implement the main missing features compare to Riot-Android, with the target to upgrade Riot-Android with RiotX codebase in a few weeks.

🔗Riot-iOS

Manu offered:

This week has mostly been another cross-signing week to improve it and to fix bugs. We released 0.11.2 on Monday. We are going to release 0.11.3 with the work we made this week. It should be available in the App Store tomorrow.

We also released MatrixSDK 0.16.4 with the last version of AFNetworking. That means apps using the MatrixSDK should be able to publish to the App Store again. There is no more usage of UIWebView.

🔗Radical Native

stoic offered:

Your favorite way of electron-free searching through encrypted rooms in Riot Web was just updated to v0.1beta11, featuring:

🔗New translation projects for RiotX and Nio

Take a look at https://translate.riot.im/projects/riot-android/ and see if you can help with translation there.

Nio (client) translations are also now available on Weblate - go forth, translate and help Kilian out. Or, "aushelfen" him, as he might say.

🔗Revolution

Revolution is a riot-web fork that has things like custom emotes. Have you heard of it before? Well, it's been around for about two years already!

You can try it out on https://ponies.im/_matrix/client/develop or build it yourself from the repos at https://gitlab.com/ponies-im


git clone <https://gitlab.com/ponies-im/matrix-js-sdk.git>
cd matrix-js-sdk

yarn install
yarn build

yarn link
cd ..

git clone <https://gitlab.com/ponies-im/matrix-react-sdk.git>
cd matrix-react-sdk

yarn link matrix-js-sdk
yarn install

yarn build
yarn link

cd ..
git clone <https://gitlab.com/ponies-im/riot-web.git>

cd riot-web
yarn link matrix-js-sdk

yarn link matrix-react-sdk
yarn install

yarn build
yarn electron # this also launches the app

🔗Dept of SDKs and Frameworks 🧰

🔗Ruma

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

jplatte offered:

Things are progressing at a fast pace, and after a few weeks of mostly pre-releases, we've now got

🔗ruma-events 0.21.0

With this release, it is now easier than ever to work with malformed and / or custom events. Some big changes are already being planned for the next release.

🔗ruma-api 0.16.0

We basically just deleted lots of code that is no longer needed with ruma-events 0.21.0. We also got rid of the dependency on the url crate, which really didn't have a very good reasont o be there.

🔗ruma-client-api 0.8.0

With this release, ruma-client-api is basically up-to-date with r0.6.0 of the matrix specification. Special thanks to @iinuwa for updating a bunch of those endpoints, and for adding support for the user-interactive authentication API!

🔗Dept of Bots 🤖

🔗Opsdroid home-assistant bot

Oleg reported:

After seeing the fabulous matrix live opsdroid party I decided to release my home-assistant bot.

I use this bot for triggering home-assistant automations via matrix. All commands and actions can be configured using just a config file.

P.S: Thanks for Opsdroid! ❤︎

2020-05-07-VqcJC-screenshot01.png

Awesome example of life imitating art! After we recorded the Matrix Live last week I resolved to get Opsdroid and Home Assistant running!

🔗New Public Rooms 🏟

🔗/r/AV1 discord bridged to Matrix

dandellion reported:

Anyone here is interested in AV1 (the new open video codec) and related modern codecs?

I have bridged the /r/AV1 discord to +av1:dodsorf.as

🔗Dept of Interesting Projects 🛰

🔗Doctor Who watchalongs

Brendan said:

The Matrix community editions of the Doctor Who watchalongs continue! Next up on our line-up is another two-parter on Sunday (May 10th), we'll be pressing play on The Zygon Invasion at 7PM BST, then on The Zygon Inversion at 8PM BST! Joining us on Twitter will be Peter Harness (writer) & Ingrid Oliver (Petronella Osgood aka The Osgoods™︎), and maybe more 🙂

As always, to join the fun or know first-hand when the next event will happen, head over to #doctor-who-watchalong:abolivier.bzh

🔗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
1fairydust.space352.5
2phys.ethz.ch394
3maunium.net458.5
4envs.net560
5fab.network601.5
6asra.gr659
72gather.community675
8matrix.vgorcum.com701.5
9gottliebtfreitag.de726
10danielvinci.com749

🔗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 2020-05-01

01.05.2020 00:00 — This Week in Matrix Ben Parsons

🔗Matrix Live 🎙

🔗Dept of Status of Matrix 🌡

🔗Cross-Signing is close, please test https://riot.im/staging

Next week, Cross-Signing is planned for release!

Please test https://riot.im/staging this weekend, and report any issues you may find!

🔗t2bot.io passes 3 Million bridged users

TravisR said:

Over 3 million people from Telegram and Discord have now been brought into the Matrix universe through t2bot.io. Of those people, around 230 thousand are active each month and 15 thousand are dedicated users of the bridges daily.

While this is a huge milestone for t2bot.io,it underlines the importance of self-hosting: having a couple giant bridges is great for accessibility, though where possible it’s heavily encouraged that people self-host. Hosting the bridges yourself on your own homeserver gives you better control of what passes through your server, reduces your dependence on third parties like t2bot.io, and gives you better performance.

During peak periods, t2bot.io sees about 10 messages per second passing through it. Half of those messages are generated by the Telegram bridge alone. The other half is dealing with federation and the various other bridges and bots on t2bot.io. In terms of media, a new image is uploaded every 2 seconds, leading to 5.8 TB of media being stored. The database is 3 TB and holds 236 Million events - roughly 131 Million of which are sent by t2bot.io.

Thank you to everyone who has used t2bot.io in the past 3 years - it’s been more successful than ever imagined. Here’s to another year and a bunch of self-hosting. :)

🔗Dept of 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:

  • No MSCs were merged this week

MSCs in Final Comment Period:

  • No MSCs are currently in FCP.

New MSCs:

🔗Spec Core Team

In terms of Spec Core Team MSC focus for this week, MSC2454 has entered FCP, and as such we've decided to instead focus on MSC2399. So the new list of MSCs for next week is: MSC2366 (verification flows), MSC2399 (UISI messaging), and MSC2472 (Symmetric SSSS).

🔗Dept of Servers 🏢

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander announced:

  • Room version 5 support added - Dendrite now supports all current room versions!

  • Room version 5 will now be used by default when creating new rooms.

  • Backfill over federation has been implemented and it honours history_visibility correctly.

  • Strict key validity checking has been fully implemented in gomatrixserverlib in support of room version 5. Some key expiry bugs have also been fixed.

  • Back-pagination tokens are now generated correctly for events that have the same depth.

  • It's now possible to limit the number of Postgres connections - thanks tomasji!

  • Some progress towards working invites has been made.

  • Federated room joins are now performed by the federation sender as a part of an on-going remodelling.

  • Some bugs with URL query vs. path escaping have been fixed in gomatrixserverlib.

  • A number of internal APIs have been merged together.

  • Some new tests have been added to the sync API.

v5 rooms! this is a sign of huge progress in Dendrite!

🔗Synapse

Neil offered:

We’ve spent time this week working with the Riot teams to tweak matrix.org performance for cross signing. We’ve also fixed a few performance regressions ahead of next week's 1.13.0 release (which will be a big one, more details when it lands).

With any luck we’ll have Redis in production on matrix.org next week, we don’t think this will give us a huge performance win, but there is certainly overhead in having so many workers using the previous replication streaming method.

Our sharding project continues, and Erik has been trying to move the event stream entirely away from the master process which in itself could be significant for overall perf once ready for production.

Aside from that we continue to improve SSO support and we have a really great community PR from sandhose that implements OpenID Connect support. We are really looking forward to getting that merged. The admin API is also getting plenty of community love with awesome-manual and dklimpel leading the charge.

Next week, look out for 1.13.0 and hopefully some more good news on sharding.

🔗P2P Matrix

kegan told us:

Version 0.0.6 has been released on https://p2p.riot.im which has the following changes:

  • Room version 5 is supported by default.

  • Backfill is much more reliable.

  • Backfill now does all PDU checks required of it

You might get kicked out a few times whilst the service worker shifts around, you can force things by going to chrome:serviceworker-internals or about:debugging#/runtime/this-firefox to unregister the worker manually. Logs will state version 0.0.6 on update.

All the benefits from Dendrite (above) will feed into this.

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo said:

There was a lot of progress this week!

  • First server-server communication by requesting a remote public room list

  • Paginated message loading

  • Message notifications

  • RiotX support

  • Changing the nickname works properly now

  • Forget rooms

Thanks to my supporters on Liberapay.

🔗Dept of Bridges 🌉

🔗matrix-appservice-irc

Half-Shot announced:

Hey all, the IRC bridge has reached another milestone, 0.17.0. This is a medium sized release, containing a few nice to have features like predicting nickname conflicts and some work around user deactivation. Importantly, this release authenticates the provisioning endpoint so if you run an integration manager or script that makes use of it, ensure that it handles requests appropriately. You can see the changelog in https://github.com/matrix-org/matrix-appservice-irc/releases/tag/0.17.0

🔗mx-puppet-bridge

mx-puppet-bridge is a general bridging library that supports (double)bridging and relays. The goal is to make it as easy as possible for others to bridge new third-party protocols to matrix. Support room Donate

sorunome told us:

  • event syncing/storage is now properly handled on a per-room basis, rather than a global one

  • automatically renew double-puppeting if shared secret auth is enabled

  • Enhance reply support matrix->remote: The remote protocol gets in the callback now proper information on the event replied to

  • Add remote->matrix reply fallback

🔗mx-puppet-skype

  • Implement skype quotes / matrix replies

  • various stability fixes

🔗Dept of Clients 📱

🔗Pattle: version 0.15.0

Pattle is a client written for Flutter using Dart

Wilko told us:

A new version has been made available and will become available on Google Play and TestFlight!

Because of corona this might take longer than usual.

🔗Changes

  • A lot has changed internally, expect to have a smoother experience!

    (See also the Matrix Dart SDK release)

  • A new logo is here!

    Designed by bo_rad!

  • Logging in has completely been revamped

  • For the initial sync (after login) a splash screen is shown

  • Chats in the overview are now separated by two tabs: Chats and channels

  • There's now a navigation drawer, which will be filled with useful actions in the future. For now it's just a place to go to Settings

  • Message times are now shown on the same line, if possible

  • Replies have been redesigned

  • Buttons or list tiles that didn't do anything have been removed to avoid confusion

  • Image sending has been improved, the image is now shown immediately in the timeline

  • Push notifications don't popup when the respectful chat is opened

  • Push notifications are now grouped by chat

  • Push notifications are hidden when opening the respective chat

  • Messages are immediately marked as read, previously was after 2 seconds of having it opened

  • Some colors in the dark theme have been altered

  • Ability to create a chat has temporarily been removed, it wasn't functioning well and will be completely redone

🔗Get Pattle

🔗Issues or suggestions

If you stumble upon any issues or would like to suggest features, please do so here!

You can login via GitHub and Gitlab.com!

🔗Follow development

Follow development in #app:pattle.im!

2020-05-01-pPDBS-0.15.0.png

🔗gomuks

gomuks is a terminal based Matrix client written in Go. Source on GitHub

Tulir announced:

gomuks now has experimental support for end-to-end encryption on the e2ee branch. It supports both text messages and media downloads. The majority of the work happened in mautrix-go (also on the e2ee branch). This also means that mautrix-whatsapp will get support for end-to-bridge encryption in the near future.

What megolm implementation are you using?

My own based on matrix-nio, the e2ee implementation guide and the spec. libolm bindings stolen from https://github.com/Dhole/go-olm

🔗Nio

Nio is a client written with SwiftUI

kilian told us:

Nio received some cool new features this week.

  • New Dutch and Chinese (simplified) translations (besides English & German)!

  • Edited messages are now displayed correctly.

  • An edit action has been added to the event context menu, long press a sent message to go into edit mode (looks cool as well!).

  • When entering a full MXID into the username field on logging in, Nio will automagically prefill the homeserver URL (if a well-known config is present server-side).

  • Rich text markdown message display including clickable links detection is now in the works!

Best part about all of these changes: They were contributed by others, I did nothing but merge the PRs! Open-Source ❤️ Shout out to @stefan:stefanhofman.nl, @thomas:mustelo.de, @captain-yukinoshita-hachiaman:matrix.org and @regexident:matrix.org.

Nio well known

🔗RiotX

benoit announced:

RiotX will finally be an update of Riot-Android on the PlayStore and RiotX beta will then be removed from the PlayStore. We will implement everything to let users upgrade their application without being forced to log in again.

While we are finalizing cross-signing, quadS, bootstrap, etc. on RiotX, we have started studying and implementing the main missing features: identity server and related functionality (terms of service consent, invite by email, search in contact list, bind emails and phone numbers, etc.), integration manager (terms of service consent,widgets, send stickers), WebRTC audio and video calls, Jitsi conference integration, and other important missing features like UI and UX to invite people to a room, etc. We are also fighting an annoying bug related to the navigation inside a timeline.

It's also now possible to deactivate your account using RiotX.

It's worth noting that people can contribute to translate RiotX by using new dedicated Weblate projects. Thanks!

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) announced:

  • fernie contributed a smoother scroll behaviour and a loading indicator for individual rooms

  • We fixed some readability and styling issues

  • We fixed a major bug in 0.7.1, where you couldn't accept invites

  • We fixed a bug, where nheko would pin a core to 100% CPU on highdpi screens, because it tried to resize avatars all the time...

  • We also reduced CPU usage by a lot. Nheko now only uses 0.7% CPU on my system again and that's just the presence updates I get every 100ms or so...

There will probably be a release in the near future to get those fixes to people not running master.

The reduced CPU usage is mostly not resorting the whole room list all the time, but keeping the partially sorted room list around and not storing pending read receipts in the database but just applying them all the time without checking, if we are waiting on a receipt :D

🔗Riot Web

A glossy Matrix collaboration client for the web. https://riot.im

Ryan told us:

Several more RCs this week have brought us ever closer to the release of cross-signing! A variety of verification, login, and toast issues related to cross-signing have been fixed in the RCs this week. Please do test https://riot.im/staging over the weekend, as we're planning to release early next week if no issues are found.

🔗Luxury Dark Theme for Riot

Dylan said:

2020-05-01-gJYz1-image.png

🔗OCRCC embeddable Matrix chatbox

Brendan told us:

Nomadic Labs have built an open-source embeddable chatbox using Matrix for the OCRCC (Ontario Coalition of Rape Crisis Centres) to allow survivors of sexual violence to communicate and seek help safely with OCRCC facilitators. This chatbox lives at https://github.com/nomadic-labs/ocrcc-chatbox - and it has a pretty nice feature set, including end-to-end encryption support.

They've also built a E2EE-capable bot to connect people with facilitators, which can be found here: https://github.com/nomadic-labs/ocrcc-bot

This is a really exciting project! Very stylish design and great to see people using Matrix for something so practical and positive. 👍

🔗Dept of SDKs and Frameworks 🧰

🔗Matrix Dart SDK: version 0.30.0

Wilko told us:

The whole SDK has been refactored!

  • All data objects such as MyUser, Room, etc. are now immutable

  • Add MoorStore, which uses moor (thanks to MatMaul for the idea and initial implementation!)

  • The SqfliteStore (was in a separate package) is now deprecated

  • LocalUser has been renamed to MyUser

And a lot of other changes!

🔗How it works

The user has a stream of Updates, user.updates. An Update contains the latest 'snapshot' of data associated with the user. It also contains a delta MyUser, where all properties are null, except those that are changed. For example, if a user started typing in a certain room, and we're syncing, there will be an Update in user.updates, where delta has 1 Room in delta.rooms, with only the room where the user started typing, reflected in room.typingUserIds. All other properties of the Room will be null. This is all assuming that this is the only change in the sync. If more happened, it will be reflected in delta.

For more info, see the README

Some features previously present may not have been added yet again.

They will be added in the future!

Get it on pub!

Join #sdk:pattle.im to learn more!

🔗🧙 Polyjuice Client

Polyjuice Client is a Matrix library for Elixir

uhoreg announced:

To better serve the wizarding community's transformation needs, I have released v0.2.2 of Polyjuice Client, a Matrix library for Elixir. This release adds support for some more Matrix endpoints, and allows paginating through room history using Elixir's streams.

🔗Ruma

jplatte and iinuwa offered:

We've iterated through a few new pre-releases of our libraries to bring some usability improvements. Here are a few highlights:

  • Implemented User-Interactive Authentication API and some other endpoints to bring us very close to full r0.6.0 compatibility

  • Updated the representation of events to allow preserving original JSON alongside typed event structs

  • Tidied up some our repositories, improved CI build times

  • Began work on Server-Server API in ruma-federation-api

🔗Dept of Ops 🛠

🔗matrix-chart v1.1.1

Typo Kign announced:

v1.1.1 of dacruz21/matrix-chart is out and now supports the matrix.org IRC bridge! dacruz21/matrix-chart is a secure, scalable way to deploy a complete Matrix homeserver stack, complete with bridges and useful services, into Kubernetes. As always, come visit #matrix-chart:typokign.com if you have any questions or need support!

🔗buildbot-matrix plugin available

haywo said:

buildbot-matrix v0.0.1 released:

  • A plugin for the Buildbot CI framework

  • It sends build status notifications to a specified matrix room

  • available on PyPi, install with pip install buildbot-matrix

🔗Dept of Bots 🤖

🔗Opsdroid

Cadair said:

Opsdroid has released v0.18 this week, which contains a load of stuff. The main matrix related changes are:

  • A generic event type for all unsupported matrix events, so you can now react to and send any custom events.

  • Implementation of the join room event in the matrix connector so you can react to users joining a matrix room.

  • A fix for mxc urls in messages, so inline images etc work.

  • A fix for the opsdroid memory to allow per-room matrix room state databases. This will hopefully be merged into core for the next release.

🔗Picard Opsdroid Skill

Related to this release the picard skill for bridged slack/matrix community management has been updated, and now (for the first time) works with a release version of opsdroid rather than some random branch 🤣. This involved adding support for lots of different events to the slack connector in opsdroid.

See Matrix Live this week for a neat introduction to OpsDroid

🔗New bot to share Jitsi call URLs

Cadair reported:

I wrote a bot to share Jitsi call URLs. The main objective is to allow people on the other side of bridges to get the URL for a jitsi call. When a jitsi widget is added to a room (v2 widget from riot-web) it will post a message with the plain jitsi URL. It also provides a !jitsi command which allows people to create a jitsi call with a custom URL, and if the bot has permission it will be added as a widget in the matrix room. It has a bunch of other config options you can tweak it with. The main thing you might find it useful for if you are not in a bridged room is you can use it to quickly add a jitsi widget for any conference URL. The bot can be found here: https://github.com/Cadair/skill-jitsi/ and it uses the opsdroid framework. I have also hosted a version @jitsibot:cadair.com

🔗CovBot v0.1.5

Peter Roberts said:

  • Add regional data for Findland, Wales, Northern Ireland and Scotland with thanks to @bertieb:matrix.bertieb.org.

  • Get UK and England regions from a new source as Public Health England stopped providing their CSV data, again thanks to @bertieb:matrix.bertieb.org.

  • Send m.notice by default but use m.text in IRC bridged rooms to avoid annoying IRC users.

  • Make logging more consistent which helps with debugging.

MIT licensed on GitHub.

🔗Dept of Interesting Projects 🛰

🔗Doctor Who watchalongs

Brendan offered:

We're still having a great time watching Doctor Who with folks from the wider Matrix community. The next one scheduled is happening on Wednesday (May 6th) at 7PM, and we'll gather to watch The Girl in the Fireplace (series 2 episode 4) together, with tweets from Steven Moffat (writer) and Sophia Myles (Madame de Pompadour) bridged to the room 🙂

As always, if folks want to tag along and join the fun, feel free to join #doctor-who-watchalong:abolivier.bzh !

🔗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
1fairydust.space333
2lo.hn567.5
3maescool.be655.5
4sibnsk.net790.5
5nct08.de817.5
6matrix.un-hack-bar.de952
7mtx.liftm.de1073.5
8federator.dev1268
9matrix.vgorcum.com1510
10shortestpath.dev1571.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 2020-04-24

24.04.2020 19:39 — This Week in Matrix Ben Parsons
Last update: 24.04.2020 19:23

🔗Matrix Live 🎙

Some snapshots of what the team has been working on. Look out for a clear explanation from Erik about Synapse performance (and what will be done about it!), and lots of other goodies

🔗Dept of Status of Matrix 🌡

🔗Tchap used by French fire and rescue services

Brendan announced:

Tchap, the Matrix deployment in the French government, recently opened to French fire and rescue services: https://twitter.com/_DINUM/status/1243595481449717761

Rescue18 (a French non-governmental news website for emergency services) echoed this announcement earlier this month, praising the security aspect of the platform and the possibility it offers to improve social and professional exchanges throughout the hierarchy as well as the rest of the government and public services.

Article is all in some other language - thanks Brendan for providing this summary.

🔗Dept of 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:

  • No MSCs were merged this week

MSCs in Final Comment Period:

  • No MSCs are currently in FCP

Well, MSC2457 should be. It's waiting for a redeployment of mscbot.

New MSCs:

🔗Spec Core Team

We've switched up our focus to the following MSCs: MSC2366 (verification flows), MSC2454 (SSO UI Auth), and MSC2472 (Symmetric SSSS). Expect a blog post next week describing the new MSC categories.

🔗Dept of Servers 🏢

🔗Synapse

Neil said:

Last week

  • Shipped 1.12.4 a patch release to fix some cross signing related bugs.

  • Redis support to replace our existing cross replication system, merged to develop. This is a precursor to the sharding project. We have a PR to support cache invalidation across workers which, once merged should make it relatively easy to pull off event persistence from the master process. Just removing event persistence could give some decent perf wins, but the prize is then splitting persistence to run across across multiple workers.

  • A final PR to support SSO for user interactive auth will merge imminently, thereby freeing up full cross signing support for worker installs.

  • Aside from that we’ve been working on fixing a weird bug where rooms can end up with zero forward extremities and generally showing Sygnal some love.

Upcoming

  • Put Redis into production

  • Ship 1.13.0 which will contain Redis support as well as a host of SSO bug fixes.

  • Merge our new caching config logic to give finer granularity on cache settings.

  • Merge cache invalidation and try to get events persistence running in its own worker.

Ben added:

Cross signing, oh cross signing! Can you believe it‽ Cross signing!!!

🔗Matrix Corporal

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

Slavi reported:

matrix-corporal v1.9.0 has been released. It adds support for preventing certain users from creating rooms (that is, from using the /createRoom API). I've been thinking about developing this feature for a while now, as people have been requesting it frequently.

🔗matrix-media-repo

matrix-media-repo is a highly customizable multi-domain media repository for Matrix

TravisR announced:

v1.1.2 is out with a bunch of fixes to the Docker image. Check out https://github.com/turt2live/matrix-media-repo/releases/tag/v1.1.2 for details, and #media-repo:t2bot.io for support.

🔗Conduit

Conduit is a Matrix homeserver written in Rust https://conduit.rs

timo told us:

Conduit is a Matrix homeserver written in Rust https://conduit.rs

This week I worked a lot on getting the first bit of federation working. My goal was to query the public room list of another server and forward it to a client.

This involved setting up a keypair to sign the json I send to the server and putting authorization headers into my requests. Most of the work is already done and https://federationtester.matrix.org/ reports it's all good.

2020-04-24-I3XIM-image.png

Sadly there seems to be a problem with the signing, because other homeservers reject requests: Unable to verify signature: <class 'nacl.exceptions.BadSignatureError'> Signature was forged or corrupt. I'll continue to work on this in the next week(s).

Thanks to my supporters on Liberapay.

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander said:

  • Dendrite now supports perspective key fetching as a configurable option, and will automatically attempt to use the perspective key servers for keys that couldn't be fetched directly

  • Dendrite now uses a newer version of the Sarama library

  • Some caching has been added to the roomserver API for room versions, which should help quite a bit with performance over federation and handling transactions

  • Auth checks for /send_join are now quite a bit more robust

  • A bug has been fixed where the default state filter limited the amount of room state that was visible after a join

  • gomatrixserverlib has quite a bit of new support for backfilling now, which will be wired into Dendrite soon

  • gomatrixserverlib has new primitives for v2 invite responses and /get_missing_events requests

  • Invite support is being worked on currently, which should also enable support for creating DMs in Riot

🔗Synapse Deployment 📥

🔗Kubernetes

Ananace told us:

A bit late to the party - was rebuilding my cluster at home to EL8 - but pushed the Kubernetes-optimized docker images for Synapse 1.12.4

🔗Docker-matrix

Mathijs reported:

The image for synapse v1.12.4 including jemalloc and mjolnir anti-spam has been released to avhost/docker-matrix:v1.12.4.

🔗Dept of Clients 📱

🔗telepathy-tank

aa13q told us:

Matrix native integration for the Sailfish OS, KDE and other linux systems called telepathy-tank got attertion from the community this week and @aa13q updated it a bit thanks to @Kaffeine. Writing the post for the TWIM has grown into the small blog post, so @aa13q shared it sepatetely: https://hackmd.io/@aa13q/telepathy-tank

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) offered:

Nheko released two new version, 0.7.0 and 0.7.1. The second one mostly fixes some minor issues in the 0.7.0 release, which we got from all the people trying it out. Thanks for reporting them!

Since 0.7.0 is pretty big, please read the release notes on github: https://github.com/Nheko-Reborn/nheko/releases/tag/v0.7.0

Some of the highlights:

  • Support for rich replies

  • Support for encrypted media

  • .well-known support

  • Mute/Unmute rooms

  • Key import compatibility fixes for Riot

  • Reduced memory usage, performance optimizations and fixes for some nasty memory corruption and crashes

You can get the latest release on github or maybe someone actually packaged it already for your distro.

We hope you will try it out and have a good experience! If you don't, you can complain to us in #nheko-reborn:matrix.org or open an issue in our bugtracker.

🔗gomuks

gomuks is a terminal based Matrix client written in Go. Source on GitHub

Tulir announced:

gomuks got a fancy initial sync loading bar so it no longer looks like it's broken after you log in. Implementing end-to-end encryption in mautrix-go has also been slowly progressing, might have something working in a few weeks.

🔗Riot Web

A glossy Matrix collaboration client for the web. https://riot.im

Ryan offered:

This week we released a fourth RC for Riot Web 1.6, the upcoming release with cross-signing, addressing a few issues found through everyone's testing and feedback. Please do continue to test https://riot.im/develop, the latest RiotX build, and also E2EE search in Riot Desktop Nightly.

CROSS-SIGNING!

🔗Dept of SDKs and Frameworks 🧰

🔗matrix-spring-boot-sdk

Benedict told us:

I created an client-sdk to interact with matrix in Spring Boot. It is written in kotlin and should also work with Java. You can find the repo here: https://github.com/benkuly/matrix-spring-boot-sdk

It contains also a bot-sdk to write bots by adding a dependency and a few lines of code only. It is tested with unit-tests, but integration-tests against a real matrix-server are currently missing. A simple ping bot works and is also integrated in the repo as example.

Currently I'm working on getting this to Maven Central.

🔗Dept of Ops 🛠

🔗matrix-docker-ansible-deploy

This Ansible playbook is meant to easily let you run your own Matrix homeserver.

Slavi told us:

Thanks to Rodrigo Belem's efforts, matrix-docker-ansible-deploy now supports bridging to Slack via the mx-puppet-slack bridge. See our Setting up MX Puppet Slack bridging documentation page for getting started.

🔗Dept of Interesting Projects 🛰

🔗Doctor Who watchalongs

Brendan offered:

As per the previous edition of TWIM, we had a blast on Sunday watching and reacting to Doctor Who episodes The Stolen Earth and Journey's End.

The next watchalong will be this Friday (Apr 24th), and we'll be watching another two-parter together, Human Nature & The Family of Blood, starting from 7PM BST! Guests such as Paul Cornell (writer), Charles Palmer (director) & Lor Wilson (Lucy Cartwright aka Daughter of Mine) will also be discussing the episode along for even more fun and behind the scenes!

This means that if you're reading this when this edition of TWIM goes out, and you fancy watching some Doctor Who this evening, join the fun at #doctor-who-watchalong:abolivier.bzh 😀

And if not, feel free to join the room anyway to find out when the next watchalong is happening 🙂

🔗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
1fairydust.space321
2envs.net363
3maunium.net420
4nerdsin.space421
5maescool.be470
6lyseo.edu.ouka.fi773
7mjdsystems.ca820
8fab.network832.5
9eisfunke.com1048
10matrix.nilux.be1275

🔗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 2020-04-17

17.04.2020 00:00 — This Week in Matrix Ben Parsons

🔗Matrix Live 🎙

Matthew & Amandine update on cross-signing

🔗Dept of Spec 📜

anoa offered:

Here's your weekly spec update!

🔗MSC Status

Merged MSCs:

  • No MSCs were merged this week

MSCs in Final Comment Period:

  • No MSCs are currently in FCP

New MSCs:

🔗Spec Core Team

We had our first Spec Core Team retro in a very long time this week, with a new regular schedule of every month. It ran about an hour overtime - there was a lot to talk about. We'll post the conclusion in a separate blog post soon.

🔗Dept of Servers 🏢

🔗Dendrite / gomatrixserverlib

Dendrite is a next-generation homeserver written in Go

Neil Alexander reported:

  • Rooms now default to version 4

  • Backfill messages are now topologically ordered

  • Searching for backward extremities when backfilling is now improved by preventing duplicate prev events

  • HTTP tracing and SQL tracing environment variables have now been added

  • Direct key requests are now parallelised (which can help to speed up room joins substantially)

  • Events in /messages responses are now topologically ordered

  • gomatrixserverlib can now perform signature checks with strict validity checking as optional

  • We now return far less 500 errors over federation which helps federation with Synapse

🔗p2p.riot.im

kegan announced:

New version released which supports v4 rooms as well as improvements in how we publish rooms into directories of local nodes.

🔗Conduit (Rust Homeserver)

A Matrix homeserver written in Rust https://conduit.rs

timo announced:

This week I spent some time improving Riot support. Now there should be a lot less warnings and some new features: typing events, read receipts, better room directory, invites, user search.

The only bigger bug that exists currently is that the message history is not automatically loaded when you join a room. Sometimes reloading the page helps, but not always. The reason for that is that Riot calls the deprecated /initialSync endpoint, which I do not support (I hope someone works on Riot to fix that).

In the next few weeks I plan to improve the single-homeserver experience further and add permission management, while also working on federation.

Check out the repository on https://git.koesters.xyz/timo/conduit and our Matrix room on #conduit:koesters.xyz. If you want to try out the server yourself, you can try to connect to it using https://riot.nordgedanken.de/#/register (though it might be offline when you read this).

I also want to thank my supporters on Liberapay for their kindness 😊.

I tested the performance of Conduit yesterday by running a ruma client that sends a /send request in a for loop 10k times, which took ~46.8 seconds (all locally on my pc). This means the server can handle ~210 /sends per second under these circumstances.

2020-04-17--SKJd-flamegraph.svg

The flamegraph shows what the cpu is spending most of its time doing. Plateaus are things that take time. You can see most of the time is used for a function in sled::io (I spoke with one of the devs and they said this is expected, but will be improved in the next release)

🔗Synapse

Neil told us:

We continue to focus on performance and spent a good chunk of time improving worker replication test coverage to build confidence that our upcoming changes will work as expected. Erik has been working on how to how to factor out cache invalidation which is now starting to take good shape. Once we have that, factoring out things like event persistence are next on the horizon.

Aside from that we’ve been working with the Riot client teams as they near release for cross signing, fixing bugs and improving performance on key actions.

SSO support continues to improve, and more fixes for user inactive auth for worker'd installs will land next week. Poor old Rich has been banging his head against a sync bug blocking develop, but hopefully he has broken its back now, and we'll get that merged asap.

Finally we experienced some operational issues with push over the weekend, so we spent some time cleaning up and figuring out how to make things more resilient.

Coming up, performance, cross signing support, SSO improvements.

🔗The Construct

Construct is a performance-focused homeserver written in C++

Tulir reported:

Update from Jason:

The Construct server made significant progress this week with end-to-end encryption, client compatibility, application services support, and build-related enhancements. I'd like to thank Yan Minari for contributing spec-compliant code paths for application services in the user registration system. Special thanks this week to Tony O. for continued work on the NixOS (#nix:matrix.org) derivation for reproducible builds, in addition to contributing fixes to Nio for optimal compatibility with Construct. I'd also like to thank Wessel for contributing a much needed reorganization of the Dockerfiles in preparation for Construct operating on many more platforms. Many thanks to Nico for working with the team this week in #test:zemos.net on various compatibility fixes to mtxclient and Nheko; the responsiveness when using Nheko with Construct is mind-blowing. I'd also like to thank David Vo (a.k.a. auscompgeek) for also contributing to Nio toward Construct compatibility.

Finally, I owe much appreciation to tulir, jochen, qy and others for setting up brand new installations this week and providing feedback in #test:zemos.net. Construct is the first and only federating alternative to Synapse. It is written in C++ for maximum performance, the lowest possible TCO, and designed for horizontal scaling with Construct Cluster. If you are interested in starting a low-cost Matrix hosting service, Construct may be your ideal choice. To stay informed and show your support please visit us in #test:zemos.net today!

🔗Dept of Bridges 🌉

🔗Matrix.org bridges bumper pack edition

Half-Shot announced:

Hello, this week has been busy for us over in bridge corner. We've released:

🔗matrix-appservice-bridge 1.12.2

Which includes a bunch of small fixes, including a performance improvement to StateLookup hits. Apparently it's bad to hit the homeserver with 1000s of concurrent /state requests on startup. Most importantly it also includes a critical fix to the addAppServicePath function, which previously did not authenticate requests, see the CHANGELOG for more information on that.

🔗matrix-appservice-irc 0.17.0-rc3

We're still working on the RCs for this release, having discovered and fixed a bunch of failures that can happen around getting connected to IRC. Be aware that the above security fix is applied in this release, which means provisioning requests will now be authenticated.

🔗matrix-appservice-slack 1.2.0-rc1

This is another big load of bug fixes, with many thanks to our new bridge crew member, Christian!. This release includes the above security fixes, as well as some metrics improvements to track activity on the bridge.

🔗matrix-appservice-gitter 0.1.1

The gitter bridge has been updated to include the changes from the matrix-appservice-bridge releases, as well as updating some dependencies.

🔗Dept of Clients 📱

🔗rumatui

WIP Command line Matrix client using matrix-rust-sdk

devinr528 announced:

A clickable command-line client Matrix written in Rust. Although, still in the early stages, enough has been implemented to show a working demo. rumatui uses tui to power the UI and matrix-rust-sdk for all communication with the server. So far the message formatting has been the most visually satisfying feature, although implementing it was not much fun. The goal of the project is to have a UI driven command-line client, useable from either keyboard and/or mouse.

Big thanks to @poljar for allowing me to work on matrix-rust-sdk, @jplatte for the opportunity to work with the ruma crates and everyone in the Matrix community for being so helpful!

Check it out https://github.com/DevinR528/RumaTui! Help is welcome, although as matrix-rust-sdk develops the design and structure of rumatui will evolve quickly.

#rumatui:matrix.org is the room to join.

2020-04-17-0VcOE-rumatui.gif

🔗Nheko

Nheko is a desktop client using Qt, Boost.Asio and C++17. It supports E2EE (with the notable exception being device verification for now) and intends to be full featured and nice to look at

Nico (@deepbluev7:neko.dev) reported:

Nheko is preparing for the 0.7.0 release! You can find the first release candidate here: https://github.com/Nheko-Reborn/nheko/releases/tag/v0.7.0-rc1

0.7.0 will contain a lot of work, including replies, e2ee attachments and a completely rewritten timeline (the full changelog is too big for TWIM, but you can find it in the github releases). It also fixes a lot of issues. We should probably released it a lot earlier, but we always had one more feature we wanted to finish... For the future we plan to do smaller, more regular releases!

If you want to see Nheko translated to your language, you can translate it here: https://weblate.nheko.im/engage/nheko/

If you are a packager, it would be awesome if you can check, that you don't have any build issues. If you need support, just message us in #nheko-reborn:matrix.org !

🔗Riot Web

Ryan reported:

Cross-signing and E2EE by default for private rooms is nearly here! 🎉 It would be great to have more people testing this, as we're very close to release, and extra testing will help reveal those last issues. Please help test cross-signing on https://riot.im/develop (suggesting develop since there's already some fixes there beyond the RC on staging) and the latest RiotX build. It would also be great to test E2EE search in Riot Desktop Nightly.

Matthew added:

e2ee by default and cross signing and encrypted search is almost here - please test the release candidates! (urls at https://twitter.com/RiotChat/status/1250881462066446336)

🔗RiotX

benoit announced:

We are finalizing cross-signing, QuadS and bootstrap. We will release a new version next week. We are still working on migration of the database from Realm to sqldelight solution.

🔗Riot-iOS

Manu reported:

Let me copy Riot-Web and RiotX-Android: Cross-signing and E2EE by default for private rooms is nearly here! 🎉.

A TestFlight will be available over the weekend. Here is the link if you want to join the program. This release candidate still needs some polish but a new release will be definitely available on the AppStore next week.

In parallel of that, the maintenance work is going well. We are erasing our technical debt as much as possible. The new Apple Push API raises some privacy concerns. We may no longer be able to offer CallKit as it requires events to go in clear between servers.

🔗Dept of SDKs and Frameworks 🧰

🔗Ruma

Ruma is a Rust project to create a comprehensive set of APIs for Matrix. Previously there was a Ruma homeserver project.

jplatte said:

Many of you will probably have heard already, but Ruma is now officially dead. The homeserver, that is. Outside of that, the API definitions in ruma-client-api have seen some work and our first two endpoints in ruma-federation-api have been written! ruma-api and ruma-identifiers are also being worked on, with the following new releases being published in the past week:

  • ruma-api 0.15.1 was released with a small bugfix

  • ruma-identifiers 0.15.0 was released with loads of changes; this might be the last 0.x release!

  • identifiers are now stored as strings (with minimal additional data)

  • before, we would parse the server name into a url::Host

  • this means that parsing now doesn't allocate at all under some circumstances, and obtaining the string representation of one of our identifier types is essentially a no-op

  • there no longer is a single non-optional dependency, everything that requires them is now behind a feature flag

  • some new helper functions have been made available, mostly around user IDs

🔗Dept of Bots 🤖

🔗CovBot v0.1.4

Peter Roberts reported:

  • When there are a lot of matches ask the user to be more specific rather than sending a huge list.

  • Let user know if we can't make sense of the age given to !risk.

  • Fix formatting of !compare tables on old Riot for android.

  • Refactor into separate files for bot and data sourcing.

GitHub

🔗Dept of Interesting Projects 🛰

🔗Doctor Who confinement watchalongs

Brendan offered:

We've been doing Matrix editions of Emily Cook's Doctor Who watchalongs since confinement started around Europe. The concept is pretty simple: on a given day, at a given time, everyone presses play on the same episode. Folks are then free to then watch it on their own, or discuss the episode as they watch it in the Matrix room and/or in the Jitsi call. We're also bridging tweets sent from directors, writers, comedians, etc. watching the episode at the same time to Matrix.

If folks are interested in joining in, head over to #doctor-who-watchalong:abolivier.bzh!

The next watchalong is planned for next Sunday (Apr 19th) at 7PM BST; and we'll be watching the epic two-episode long season finale "The Stolen Earth" & "Journey's End", with Russell T Davies (writer), Graeme Harper (director), David Tennant (The Doctor) and Catherine Tate (Donna Noble) tweeting along (and possibly more to come) 😀

🔗Tweetalong bot

Brendan reported:

To relay the tweets from guests during Doctor Who watchalongs, I've written a simple bot that reads the timeline of a Twitter list, optionally filters it by a hashtag, and posts the tweet to a Matrix room.

The code is available at https://github.com/babolivier/matrix-tweetalong-bot, and there's already an instance running in #doctor-who-watchalong:abolivier.bzh if folks want to see it live.

🔗Dept of Guides 🧭

Lots of new guides this week! I particularly encourage you to read neilalexander's guide to state resolution - I found it very approachable.

Matthew said:

neilalexander wrote a kickass guide to how state resolution works and should be implemented: https://matrix.org/docs/guides/implementing-stateres

and then

Kaushik Chakraborty wrote an awesome NixOS tutorial for setting up Synapse+Riot+Jitsi as a response to my Debian one! https://kaushikc.org/posts/matrix-jitsi-nixos.html

suddenly

...and Pablo Fredrikson recorded a fantastic video run-through in Spanish of setting up Synapse on Docker! https://www.youtube.com/watch?v=ZiVQalt5xhk

🔗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.net394
2maunium.net437
3fairydust.space472
4maescool.be493
5dodsorf.as495
6nerdsin.space540
7c.mau.dev569
8matrix.vgorcum.com571
9digi.co.hu623.5
10elcyb.org716

🔗Final Thoughts 💭

While discussing the use of QML in Nheko, aa13q became extremely energised, so I'm including this piece:

Qt/QML fanboy here, feel free to skip, just a love letter to the framework :D

Qt/QML is super-awesome, it's hard to describe how pretty declarative syntax is and how beautiful MVC approach with native Qt C++ side integration %) It is very hard to contribute to HTML/CSS/JS projects when you have seen QML once.

Talking about resources, there are even projects for very low-level embedded boards with arm cortex m7 core [1,2]

I'm actually thinking Qt is the bright future of very wide development areas. I'm both frightened and intrigued looking at relatively low popularity of the project. Since I want it to live and prosper even more but afraid of the possible mistakes for even harder tasks. The better popularity of the project will be harder to coordinate and the future tasks will be even harder. Similar to other cool projects (like matrix! :) I guess it's very challenging to balance between running as hard as you can and not to "die" from exhaustion %)

I don't even know is there something similar comparing to the Qt project, that's also why I'm worried about the future of the project %)

So-called software crisis (the late 60s – mid-80s [3,4]) was successfully overcome by introducing Object-Oriented Programming (it's always funny to see some people who are more into functional programming hates OOP in that context [5]) And notably Alan Kay is not only OOP pioneer (Smalltalk language) but also a first GUI applications developer. While the current OOP languages like Java and C++ are quite imperative, OOP is not only about the objects but also about the messages between them (Smalltalk is probably a nice example here too).

Qt in that context restores interesting balance to quite imperative C++ introducing the so-called meta-object system (for the messaging between objects). After that in ~Qt5, the declarative QML approach was introduced to develop these ideas even more. Not only GUI subject matter could be expressed with QML (like Qt Quick), but the others too (for example, QBS build system).

Sorry for typos and poor style, not a native speaker :) And I could be wrong in my views.

[1]: https://www.youtube.com/watch?v=p9_Qy3kw1wc
[2]: https://github.com/siili-auto/respirator-qt-for-mcu
[3]: Cox, Brad J. There Is a Silver Bullet // BYTE Magazine, October 1990.
[4]: Dahl, Ole-Johan. The Birth of Object Orientation: the Simula Languages / Owe, Olaf; Krogdahl, Stein; Lyche, Tom (eds.). From Object-Orientation to Formal Methods. Essays in Memory of Ole-Johan Dahl. New York: Springer, 2004.
[5]: https://i.imgur.com/49Vajzh.png

🔗That's all I know 🏁

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