Matrix Live, featuring Erik and the Interns πŸŽ™

Thanks Erik, Jorik and Oliver!

Note that there is a audio hiccup around 2m30 - video is ok otherwise.

Dept of Spec πŸ“œ

Highlights

Movement on Matrix URIs

Sudden interest in matrix-org/matrix.to/pull#47 means we're getting a lot closer to agreement on Matrix URIs. Kitsune even added support for them in Quaternion (see below).

Dept of Servers 🏒

Dendrite

anoa:

Dendrite continues marching forward! As more attention is turned towards our fairly lengthy PR list, contributors who have not done so already are reminded to merge Dendrite's master branch into their PRs, as converting the project to go modules caused a lot of conflicts. A tag has been added to each PR that needs forward merging, visible here.

Our GSoC student cnly has been working away on implementing profile retrieval over federation as well as updating his various other PRs and would likely have a lot more if they were getting more reviews, but worry not as things look on track for that next week.

We've also got plans now! Plans for how to properly ship this thing over the coming months so look out for that soon!

Synapse 1.1.0 released

This week we shipped v1.1.0, which provides an overhaul of docker configuration, more authentication options and improved db io. It’s worth noting that v1.1.0 is the first Synapse release to drop support for Python 2 (and Postgres 9.4), this paves the way for using Python 3 only functionality.

We’ve been working on supporting soft logout, more edits and reactions support, open tracing support not to mention a complete rewrite of the push server Sygnal. We’ll be rolling out new Sygnal gradually over the next week or two.

Finally, aided by dropping Python 2 support, we’ve been putting in a bunch of work to improve Synapse in resource constrained environments. This will be a constant theme over the coming months.

Dept of SDKs and Frameworks πŸ—

python-matrixbot

Brian Γ“ appeared to tell us about python-matrixbot. This is a project that has existed for some time.

A Python module meant to act as a base class for a Matrix bot.
The MatrixBot class will connect to the Matrix server, start a listener on each joined room, and listen for room invites from other users. It also includes helper methods you can use to extend the functionality. It is built on the Matrix Python SDK which can be directly accessed via MatrixBot.client

koma

yuforia:

koma got some improvements, based on what's learned developing Continuum, which is a desktop client based on it.

  • Make api calls suspendable functions (which are like Kotlin's flavor of async). This way, the caller don't need to worry about forgetting to call await or a coroutine being left unstarted.
  • Borrowing from functional programming, model the outcome of a call as a discriminated union, which can be either a success or a failure. The successful case is optimized with inline classes, an experimental feature in Kotlin 1.3, and wrapping is avoided.
  • Make MatrixError a subclass of HttpError, because the http status code can be handy

Ruby SDK

Ananace:

Just released version 1.2.1 of the Ruby SDK, fixing an error in the media download URL generation

Dept of Bridges πŸŒ‰

matrix-appservice-bridge release 1.9.0

Half-Shot was seen to exist IRL this week, he also found time for a new release:

Today we have a new matrix-appservice-bridge release 1.9.0. The bigname feature this week is a new store for mapping matrix events to remote ones, so bridges can handle changes made to sent events like reactions/threading/edits/redactions :). The reason for this feature appearing suddenly will become clear very soon.. 😈

mx-puppet-bridge (inc slack, tox, discord)

Another week, which means more work on the mx-puppet-bridge ecosystem! A new > bridge has been added, mx-puppet-discord. Soru finally added license files > (Apache-2-0) and some readmes.

mx-puppet-bridge

  • bugfixes
  • implement optional double-puppeting (also logging into your matrix acc)
  • relate remote event IDs to matrix event IDs
  • handle edits in both directions
  • handle redactions in both directions
  • initiating conversations from matrix! Invite a ghost for 1:1 or follow a > room alias for rooms
  • bot provisioning: list users and rooms

mx-puppet-slack

  • add linting
  • map channels and slack pills
  • handle message edits
  • handle message deletions
  • properly handle /me messages
  • handle ghost invites
  • handle room joins via alias

mx-puppet-tox

  • add linting
  • improve bootstrapping
  • improve file transfers
  • handle ghost invites

mx-puppet-discord

This is the new puppeting bridge! The idea is that, in the long run, this will > be run in conjunction with matrix-appservice-discord Half-Shot/matrix-appservice-discord), where mx-puppet-discord handles DM > puppeting and matrix-appservice-discord the remaining. For this, the message > parsing was split in a new repository, matrix-discord-parser. The idea is that, in the > future, when inviting a ghost on matrix-appservice-discord it'll initiate > conversation within mx-puppet-discord

  • basic text messages
  • handle files
  • handle edits, deletes

mx-puppet-discord does only DMs, for non-DMs please use matrix-appservice-discord

If you have any questions for any of these, please join our channel > #mx-puppet-bridge:sorunome.de. Software doesn't write itself, please consider > donating on liberapay!

matrix-appservice-slack

Cadair and Half-Shot have been doing substantial work on matrix-appservice-slack.

We've got a dedicated room for slack bridge development over at #matrix_appservice_slack:cadair.com, since it's picked up in terms of community PRs and general interest. It's not currently being used as a support room, however.

They mention,

warning may contain ranting about the codebase

But that could be any room, so it seems ok to me.

WARNING: LATE ADDITION

Hi everyone! Myself and Cadair have been working hard on a new Slack bridge release, and we are finally ready to push out a release candidate for 0.3.

The headline features are:

  • Implement message deletion.
  • Add support for edits.
  • Add support for reactions.
  • Add support for threading (using replies).
  • Support displayname and avatar lookups for Slack bots.
  • Replace channel mentions with canonical aliases for bridged rooms.
  • Support for slack attachments (Thanks @umitalp for the initial groundwork and @Cadair for the cleanup)

The new release is having very final minute checks, and will be available at https://github.com/matrix-org/matrix-appservice-slack/releases shortly.

Dept of Clients πŸ“±

RiotX (Android)

After an internal release, we are working on improving the performance, especially for initial sync and for navigation between rooms.
Also we are fighting bugs.

Pattle 0.9.0 and Testflight available

Wilko:

A new version of Pattle has been pushed to F-droid and TestFlight!

Changes:

  • Fix the infamous FormatException: Not a valid url: error!
  • Room upgrades are now handled!
    • Upgraded rooms are now hidden from the overview
    • To access older messages from the previous room, simply scroll up: the timeline is seamless
  • Improve performance of loading the overview. Opening the app should be a lot quicker now!
  • Improve performance of loading a chat
  • Add ability to swipe through images in a chat (thanks to Nathan van Beelen!) See preview here!

Get Pattle from F-droid for Android by adding this repo:

https://fdroid.pattle.im/?fingerprint=E91F63CA6AE04F8E7EA53E52242EAF8779559209B8A342F152F9E7265E3EA729

APK also in assets of this release.

For iOS: join TestFlight here

Report issues to the repo, you can login via GitHub and Gitlab.com.

Follow development in #app:pattle.im!

To support Wilko: you can now do so via Liberapay and Patreon.

I've invested a lot of money in making Pattle happen on iOS: MacBook, Apple Developer Program, and an iPhone. Pretty costly, so any donations will be greatly appreciated!

What to expect in the next release:

  • Fix timeline jump issues
  • Remove redundant state messages when a room is upgraded
  • Start work on chat details screen (members, change name, etc.)

Quaternion now with Matrix URI support

kitsune:

to push things forward on Matrix URIs front, Quaternion master branch now supports matrix:user/userid, matrix:room/roomalias and matrix:roomid/roomid URIs. For example, Quotient/Quaternion room can be opened by a link matrix:room/quotient:matrix.org.

This will be so much easier to use! Also:

Quaternion has got a new contributor, Roland Pallai (https://github.com/rpallai), who added colouring of messages sent by the local user and support of drag-n-drop of text and images on Quaternion, along with general improvements on the timeline. Many thanks!

Windows builds of Quaternion (CI and future releases) come with Qt Keychain enabled, storing your access tokens in Windows secure storage.

Spectral news

Black Hat:

A lot of improvements have been added to Spectral last week.

  1. Spectral uses QtKeychain now. Access tokens are stored in system keychain instead of in plain text.
  2. Room list's filter has a better UX(aka TabBar). Switching between rooms and DMs is now as easy as switching between, well, tabs.
  3. Notification count in system tray icon, implementation modified from nheko.
  4. Display initial sync progress. Some people have been complaining about not knowing the progress of initial sync so I added an indicator.
  5. A better room setting page. Specifically displaying aliases and changing room avatar are working.
  6. Big emojis.
  7. Typing indicator UI is tweaked and looks better.

Riot iOS

  • Reactions in e2e rooms
  • β€œShow all” button when there are too many reactions
  • Support edition of emotes and replies
  • Edits history (even in e2e rooms)
  • Fix joining new upgraded room through federation
  • Use via parameters to join a new room (useful in case of federation)

Riot Web

  • Allow resending edits, reactions and redactions through context menu, also better visualization of send errors.
  • Allow redacting and viewing source of edits in edit history dialog

Dept of Ops πŸ› 

K8s

Ananace:

Bumped the K8s optimized Docker image to 1.1.0, with the same dropping of Python 2 and Postgres 9.4 support as the official image.
NB: The upstream docker configuration changes do not affect the K8s-optimized image, no configuration change is necessary to upgrade from 1.0.0 to 1.1.0

avhost/docker-matrix image

Mathijs:

As announced last week, with the release of synapse 1.1.0 the avhost/docker-matrix image switched to running synapse with jemalloc by default

Dept of Services πŸš€

modular.im starting to make Small instances available

modular.im are making the much-asked-for SMALL instances available. This service is rolling out starting with people who have previously enquired about availability, which I gather is a lot of people. Go sign up if you're interested!

The wait is almost over ... We're now rolling out our trial of Small Hosted Homeservers for Matrix. Have you got your golden ticket yet? πŸ˜€πŸŽŸοΈ pic.twitter.com/iUkAIHW9MY

— Modular (@ModularIM) July 3, 2019

we've been working on a v1 admin dashboard for managing your Synapse instances through Modular. This is now live on the site and provides a basic suite of functionality including:

  • Viewing users of your synapse homeserver(s)
  • Creating users
  • Deleting users
  • Resetting user passwords
  • Viewing user profile and server access / activity
  • Sending messages to all system users as the system alerts user
  • Information about the synapse instance versions

Final thoughts πŸ’­

Ananace is "continuing the rewrite of the release tracker project. Working towards getting it to only store state in Matrix so it can be run in a read-only environment like a K8s deployment."

lino "wrote a script to update riot. It also works so far, but still needs some improvements"

Black Hat has been working "to add .well-known support for libQuotient" - presumably this will come back to be used in Spectral when it's ready.

Somehow I had a tab open with a maubot for Urban Dictionary.

That's all I know 🏁

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

The Foundation needs you

The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.

It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.

Support us