This Week in Matrix 2019-03-15

Matrix Live S3E17: Hello Ryan

This week you’re stuck with me, but I’m chatting to Ryan, who works on Riot web. Having previously worked at Mozilla, Ryan has a LOT of interesting things to say about Firefox, the browser market, the importance of decentralisation, Matrix being GREAT, and more.

arewereadyyet.com: Matrix 1.0-ready Federation

https://arewereadyyet.com is not just an amazing domain we somehow managed to buy, it’s also the first place to look for progress towards full Matrix 1.0 readiness. Read more details at https://matrix.org/blog/2019/03/15/matrix-1-0-https-arewereadyyet-com/.

Spec

Lots of activity but most notably MSC 1915 (a blocker for Matrix 1.0) is making progress. https://github.com/matrix-org/matrix-doc/pull/1915

Synapse . . . 1.0?

It’s all about 1.0 for the Synapse gang this week. This means performance improvements across the board in the form of read receipt batching, user directory (room directory coming soon!) and rate limiting on log in and registration APIs.

Brendan shipped the low bandwidth CoAP proxy we demo’d at FOSDEM

As well as a bunch of spec implementation projects to ensure that Synapse (and Sydent) are ready for Synapse 1.0.

Synapse workers projects

Turn-of-phrase of the week from Half-Shot (“make it more performant and less crashy”):

synapse-netcore-workers is progressing as strongly as ever. This week has mainly been supporting a couple of users trying to use the fed sender, and also trying to make it more performant and less crashy. I’ve been using it solidly for two weeks now, and by and large it’s been working nicely :)

Black Hat has been working on Cortex, a similar project in Rust:

Support for replication protocol in Cortex is mostly complete. A federation sender worker implementation is being worked on. If anyone is interested or wants to contribute, please go to #cortex:encom.eu.org

Construct

Lots of progress this week. I’d like to give a special thanks to Yan Minari for another great week of testing, bugfixes and feature requests.

  • We implemented features related to room directory lists, reporting content, ignoring users, VoIP turnServer, prev_content in state events.
  • Improving SSL: allowing configurable lists of ciphers, and sending/receiving SNI.
  • At the lower level: adding support for Linux AIO features that are present in newer kernels, giving a nice performance boost.

For more Construct news watch the repo or join #zemos-test:matrix.org

New Client for Android: Pattle

Wilko announced Pattle, a Matrix client for Android:

Hey all, I’ve been working on my Matrix Android app, Pattle! The goal of Pattle is to be an easy to use app for Matrix, with it’s design inspired by popular apps such as WhatsApp and Telegram. Development happens here, and contributions are encouraged! The app is not currently suited for daily use, but some functionality is there, such as registering, logging in and viewing chats.
Currently it’s an Android only app using the official Matrix Android SDK, but the plan is to support iOS and web too, in the future.
There’s also a sort of design document available, stating how Pattle differs from standard Matrix apps and what it’s goals are. The intent of the design document is to make development easier later on for other platforms

Quaternion 0.0.9.4 beta 2 available

kitsune:

Quaternion 0.0.9.4 beta 2 (too many numbers? That too shall pass) is out, with bugfixes and translation updates. Notably, Quaternion won’t crash on upgraded rooms in some cases, and won’t cry in #gsoc:matrix.org and other v3 rooms. Translators are still strongly encouraged to push forward – due to all the features and fixes, there are many untranslated strings across the board! Also, some bugfixes are still in order before we can call the release RC, and some of them are really easy – so if you’d like to contribute, it’s a great time to start!

Riot Web

  • Preparing for 1.0.4 release with lots of small polish fixes
  • Planning our roadmap for the next few quarters

Riot iOS

iOS released 2 times. Last release was to fix an issue with invalid scalar token.
Review of one PR from the community for iOS10 notifications.
Started implementing device verification with emoji.

Riot Android

We’ve released v0.8.25 on Thursday, containing refresh of invalid scalar token, and some bugfixes. Links on m.notice messages are now clickable again.
Started implementing device verification with emoji.

RiotX (Android)

  • We started to setup build tools and CI configuration.
  • The timeline scroll issues are addressed.

FluffyChat 11 released

Ubuntu Touch fans rejoiced this week as a new version of FluffyChat was made available: https://open-store.io/app/fluffychat.christianpauly

  • Improved stability and performance
  • New translations – thanks to all translators
  • Design improvements to make FluffyChat look more like a common Ubuntu Touch app
  • Better tablet support
  • Lots of Bugfixes which caused a critical error
  • Fixed the automatic scrolling up to the last seen message
  • Fixed disabling account

miniVector v0.8.25

miniVector is a minified Android Matrix client derived from Riot Android. v0.8.25 keeps it up to date with Riot Android.

Matrix Ruby SDK

Ananace is returning his attention to the Matrix Ruby SDK:

I just realized that I haven’t had lazy loading activated by default in the Ruby SDK, despite having had lazy loading code in place since ages back, so now that’s going to be the default value going forward.

Further:

I started hacking – just a couple of hours or so ago – on a notification sender for The Foreman, a server orchestration system. So it can forward notifications to Matrix. https://github.com/ananace/foreman_notification_send

If you’re using, or considering using, The Foreman for orchestration this may be very useful.

maubot

tulir:

maubot plugins can now add their own endpoints to the main maubot webserver. The pingstat plugin I announced last week uses this feature for the leaderboard widget: https://maubot.xyz/_matrix/maubot/plugin/pingstat/stats?room_id=!MbRaSiMIRhhxDtJENL:maunium.net

matrix-appservice-bridge 1.8.0, matrix-appservice-irc 0.12.0-rc1: room upgrades and more

Half-Shot:

matrix-appservice-bridge got a 1.8.0 release last night, featuring automatic handling of room upgrades for all your room upgrade needs. Providing your bridge uses the RoomStore as designed, it’s literally a few lines to enable :). Changelog here

What is this? A matrix-appservice-irc release? No, it’s a release candidate. Announcing that 0.12.0-rc1 is now out and about for folks to play with. More IRC updates to come in the future :)

mautrix-whatsapp

tulir:

mautrix-whatsapp now has support for postgres databases thanks to a pull request by @Rennerdo30

mautrix-telegram

tulir:

mautrix-telegram got a pull request with a pytest setup and a few unit tests by @V02460. I haven’t merged that one yet, but will soon.

matrix-docker-ansible-deploy supports Dimension

This is really neat, and a shout-out that these playbooks are my preferred way to install Synapse and other components. Slavi:

Thanks to NullIsNot0, matrix-docker-ansible-deploy can now (optionally) install the Dimension Integration Manager.
The playbook can now also assist with serving the base domain from the Matrix server, thus making it easier for some folks to set up well-known Server-Delegation.

Self-hosting guide for NixOS

Florian:

I wrote a Matrix self-hosting guide for the NixOS operating system: Check its progress and give it a test if you’re a fellow NixOS user!

banhammer: new bot for applying a ban policy

jcgruenhage reports that:

I wrote a small bot that takes a kick/ban policy from room state from all rooms it’s a member of and tries to enact that policy. In practice that means it applies a regex to all MXIDs and tries to kick/ban them based on that. It’s been a request of TravisR , source code is available at https://gitlab.com/jcgruenhage/banhammer, documentation is still lacking but will hopefully soon be added

matrix-wug support for Navajo script

Continuing his theme of Native American languages, Dandellion added Navajo script to matrix-wug.

FreedomBox Tutorial: Setting Up a Chat Server with Matrix and Riot

It’s been possible for some time to set up a Matrix server with FreedomBox, and they just recently released a video tutorial showing the process.

Around the Internets

There were a whole lot of outages for the big names this week – good time to think about self-hosting?

That’s all I know

So that’s all I have to say! I hope you enjoyed this edition of This Week in Matrix, and whether you did or you didn’t, I’d love too hear from you in #twim:matrix.org. If you have Matrix news to share, that’s the place to come and do so!

This Week in Matrix 2019-03-08

AreWeReadyYet.com?

From Neil of the Synapse-team

Folks, in the run up to Synapse 1.0, if you are running your own homeserver now would be an excellent time to check that your TLS certificates are up to date. Point your server name at https://matrix.org/federationtester/ and if there are errors check our handy FAQ on how to fix it. If you do not have valid TLS certificates Synapse 1.0 will refuse to federate with you.

benpa has put together a federation checker to quantify how many homeservers are 1.0 ready – https://www.arewereadyyet.com/ – It currently stands at 50.5% let’s try and get that to 60% over the weekend.

Aside from all that, the team have been working on preparing for Synapse 1.0, you can track our progress here. We promise not to just land 1.0 out of the blue – we’ll give everyone a 2 week warning to give stragglers a chance to get their certificates in order.

And this week we have Neil and Erik talking about this in more detail on Matrix Live

JeonServer and related project updates

ma1uta has been working on Jeon – Java interfaces to the various Matrix APIs – and is now getting ready to start work on a homeserver. He was previously asking for a name for this project, but might now have settled on “JeonServer“.

First Release Candidate of the Jeon Project with upcoming Client-Server API 0.5, Server-Server API 0.1.1, Application API 0.1, Identity API 0.2 and Push API 0.1.
Also the RC of the jmsdk has been prepared with Java Matrix Client for Client-Server API 0.5.
Changes in the C2S: Added the m.push_rules event, removed presence list methods and other minor fixes.
Added S2S API of the 0.1.1 version.
I prepared a very simple page https://ma1uta.github.io/ with links to the swagger schemas (json and yaml) for all Matrix API which generated from the Jeon code.

Chat more in #jeon:matrix.org or #jeon:ru-matrix.org.

Construct updates

There’s a lot of progress, a few endpoints and features have been implemented this week such as Room Tags and all of the spec features for /createRoom. Most of the progress has been with testing and bugfixes thanks to Yan Minari, and tulir and mujx.
We’ve fixed several interactions with synapse such as invite accept/deny and synapse’s ability to join and leave construct created rooms without any issues.
Lastly and most important, we’ve generated an official issues list thanks again to our star tester Yan Minari available here https://github.com/matrix-construct/construct/issues

For more new Construct news watch the repo or join #zemos-test:matrix.org

OpenSAPS: Open Slack API Server

pztrn has created a new mechanism for relaying apps that use Slack webhooks into Matrix:

To everyone who wonders how to connect his application to Matrix (at least for notifications of some kind) – use OpenSAPS! It just reached v0.1.0.
OpenSAPS stands for Open Slack API Server and able to retransmit messages from applications (like Gitlab or everything that can send data to Slack) to somewhere else. Right now these “somewhere else” is a Telegram (with HTTP proxy support) and Matrix! Written in Golang to ensure minimal memory footprint. Take a look at https://gitlab.com/pztrn/opensaps
Tested with Gitlab and Gitea but should work with almost any service.
Join #opensaps:pztrn.name to talk with developers or get help. BTW, there is OpenSAPS instance in our room that transmits everything from gitlab.com into room!

(almost) immediately after 0.1.0 comes 0.1.1, with fixed URLs parsing and fixed inability to login into servers which use .well-known for delegation.

It should work [with other webhooks]. If something strange happens there is also a possibility to write own parser to make everything work :)‚ Tested with Gitlab and Gitea ATM. Share application names that work, I’ll start to make a list of them. :D

matrix-puppet-bridge: matrix-puppet-slack and matrix-puppet-hangouts updates

tom reports from #matrix-puppet-bridge:matrix.org:

MiniVector update

bubu let us know about MiniVector updates

Minivector, a minimalistic fork of riot-android had a new release last week, getting rid of a few more unused dependencies. This brings the final apk size down to 13mb vs riot android’s 25mb. This work was done by @hrjet:matrix.org. The project room is here: #miniVectorAndroid:matrix.org

matrix-docker-ansible-deploy, now with Discord and email templates

The volume of discussion about installing/configuring Synapse and other Matrix-related components is like a subculture in itself. Standing tall within this is Slavi‘s matrix-docker-ansible-deploy collection of Ansible playbooks. They’re a great way to quickly and reliably get a Synapse instance running.

Thanks to Lionstiger, matrix-docker-ansible-deploy now supports Discord bridging via matrix-appservice-discord.
Those wishing to give it a try can refer to the Setting up Appservice Discord bridging documentation page.

Thanks to Sylvia van Os, matrix-docker-ansible-deploy now has the Ability to customize mxisd’s email templates

Quaternion 0.0.9.4 beta

kitsune:

between chasing bugs in Quaternion 0.0.9.4 beta (translators, your help is hugely needed to catch up with new and updated strings) there happens almost literal bikeshedding in #qmatrixclient:matrix.org, under an excuse of discussing The Universal Algorithm to Colour Usernames. Join the fun!

Bifrost bridge gatewaying

Half-Shot:

Bifrost is now starting to comfortably support gatewaying. For those that don’t know, gateways allow a remote user to participate in the matrix network without prior bridging, it’s very fancy. The latest changes are that XMPP clients can now ask for the public room list by querying the bridge component. There is a video on this using the Yaxim XMPP client on Android (Credit to Ge0rG). Come chat with us in #bifrost:half-shot.uk

You can check out the video of the bridge in operation here:


 

Spectral development restart

Black Hat:

Spectral development now continues after a short break. The new “material design” has been merged into master, along with a few bug fixes. I plan to work on Kirigami port in the following two weeks.

Fractal

Alexandre Franke reports on Fractal:

Since our last update about Fractal we landed typing notifications, found out we actually weren’t logging anything, recovered the ability to log, and restored spellcheck support.
We are also now tagging uploaded audio files as such and adding thumbnails to image files, courtesy of our Outreachy intern, and we fixed a bunch of other things.

#ping:maunium.net

tulir making crazy maubots this week:

I made a room for !pinging echo maubots: #ping:maunium.net. The room has a bunch of echo bots, currently on maunium.net, c.mau.dev and matrix.vgorcum.com. It also has a new maubot plugin called pingstat, which collects the pong data and makes a leaderboard website. The website is linked to the room as a widget.

Check out instructions to get your own maubots setup here: https://github.com/maubot/maubot/wiki/Setup

synapse-netcore-workers

Half-Shot:

Not much news to report on the netcore-workers other than it’s maturing and we have nice things now like logging, metrics and a docker image you can run at home. I’m running the federation sender fulltime on half-shot.uk to dogfood it and will announce when I think it’s good for general consumption :)

Related: Black Hat is investigating a similar project in Rust. Anyone interested in that please do go chat, and take a look at the repo they’ve created.

matrix-wug, IPA rendering bot, gets support for cherokee

Dandellion on matrix-wug:

This is “script” or written language has a very interesting story behind it, where the creator of it actually couldn’t read and write. Regardless, he wanted to write down his language, and developed his own writing system.
The characters look a lot like latin characters because he tried to imitate the characters of a bible. Just a fun history lesson!

weechat-matrix

Paul created a dockerfile to install weechat-matrix:

since weechat-matrix is a bit involved to install, I create a dockerfile that takes care of it: https://github.com/poljar/weechat-matrix/pull/60 . And people allergic to docker can look inside to check the steps (just reading the readme doesn’t give a full picture)

modular.im

Modular.im is a Matrix-as-a-SaaS offering. It’s suitable for users who want the benefits of having their own Matrix homeserver, but don’t want to host and run one.

There are some new announcements this week:

Today we are pleased to announce that you can now customise your Modular hosted Riot at the touch of a button, through the Modular host admin interface. Better yet, this is available to all Modular customers at no additional cost.

Today we are also launching a proof of concept for purchasing additional content via the Modular integration manager.
For the initial experiment we’re offering a set of “snazzy”, limited edition Matrix stickers for the princely sum of $0.50. These are digital versions of the Matrix and Riot hexagons that some of you may have seen in real life.

Still more!

decred.org are an organisation concerned with blockchain technology, and they also use Matrix for their communications! They now have a stickerpack available in Riot, so if you’d like to use their stickers you can add the pack and get going with blockchain-related memes.

If you have a stickerpack you’d like to see included, please let me know.

Celebrating the creation of a new homeserver instance at kde.org, Jonathan Riddell has written an article.

sortebill created #drums:matrix.org:

I’ve made a room for anyone interested in drums and percussion. Acoustic, Electronic, Played or Programmed, anything goes as long as it’s rhytm related. The room is focused on both playing/programming drums and equipment.

There was a somewhat longstanding bug that affected a number of users: often manifesting as unexpected and frustrating “Unable to decrypt” messages – this has now been fixed, take a look at https://github.com/vector-im/riot-web/issues/6838

They think it’s all over…

It is now! If you’d like to have your project included in this post, come chat to us in #twim:matrix.org!

Bridging Matrix with WhatsApp running on a VM

This guide will live with the documentation at https://matrix.org/docs/guides/whatsapp-bridging-mautrix-whatsapp, but you can find the text below.


Matrix is:

an open standard for interoperable, decentralised, real-time communication.

In this article we’ll benefit from all three of these attributes:

  • interoperable: we’ll see how Matrix can be made to interact with WhatsApp
  • decentralised: you can perform this on your own server while still enjoying the benefits of being connected to the rest of the Matrix federation
  • real-time communication: we’ll see how to send and receive messages in real-time

Install your homeserver and install mautrix-whatsapp, the WhatsApp bridge

Firstly, you need to have a Matrix homeserver installed. If you don’t currently have one, take a look at the instructions at Installing Synapse, and also in the Synapse README.

Next, install mautrix-whatsapp by following the instructions at mautrix-whatsapp/wiki.

If you are starting from scratch, I suggest you take a look at matrix-docker-ansible-deploy, as this project will enable you to deploy Synapse, mautrix-whatsapp and other components easily.

For example, if you have an existing deployment using matrix-docker-ansible-deploy, you can add mautrix-whatsapp simply by adding the following line to your configuration file:

matrix_mautrix_whatsapp_enabled: true

… and re-running the setup:

ansible-playbook -i inventory/hosts setup.yml --tags=setup-all

Either way, you will soon have a functioning Matrix Synapse homeserver and mautrix-whatsapp installed with it. Next, we will set up an Android VM.

Set up an Android VM

The best way to run an Android Virtual Machine is to use the Android Studio tools from Google. First, install Android Studio, making sure to follow the post-install steps, as they will install additional tools we need, including AVD Manager.

Once installed, run AVD manager by choosing Tools -> AVD Manager from the menu.

Follow the steps to create a new virtual machine, in this example I have a Nexus 5X running Android 9, but almost any configuration is fine here. Make sure that you give the device access to the Play Store.

Install WhatsApp and sign-in

Launch the Virtual Device, the open the Play Store and sign in. Now use the Play Store to install WhatsApp on the Virtual Device.

You will be asked to verify your phone number, use your number on another device to complete this step.


Setup mautrix-whatsapp bridge

Now that you have WhatsApp working in a VM, and Matrix working on your server, it’s time to bridge them togther!

Per the instructions at mautrix-whatsapp/wiki, you must start a new chat with @whatsappbot:<yourdomain>. Type login to begin the authentication process.

mautrix-whatsapp operates by using the WhatsApp Web feature of WhatsApp – which means it uses a QR code that you must now scan on the device running WhatsApp – which in your case is the AVD. In order to scan the presented QR code, set your AVD camera to passthrough the camera device on your host machine – see the images below.


Once this is complete, you can type sync, to start bridging contacts, and sync --create to automatically create room invites.

And that’s it! You may need to take a little time to watch the sync happen, particularly if you have a very large number of chats on the WhatsApp side, but there is no further configuration needed.

Demo!

 

 

This Week in Matrix 2019-02-22

Matrix Live S03E15 – Push To Talk and XMPP Gatewaying!

(sorry that the audio from Nad & Half-Shot went missing from the recording… :( )

nheko_reborn roadmap

red_sky has continued to work on nheko, and shared a general roadmap in #nheko-reborn:matrix.org:

The remainder of 0.6.x is expected to be bug fixes. This includes bug fixes in mtxclient as well as nheko.
0.7.0 will be the next feature release. The end goal here is to add some of the capabilities that people have been requesting, and other things that people haven’t been requesting.
AFTER 0.7.0 releases, I will then focus on updating the encryption to include more than just text messages.

libQMatrixClient project, Quaternion

kitsune has been writing the codes this week, Quaternion now supports room upgrades and more:

Master branch of Quaternion can now store access token in your secure storage/keychain, better integrating into frameworks of GNOME and KDE, as well as macOS and Windows.
Also, you can see the room version and upgrade rooms in Quaternion (just like Matthew said on FOSDEM ;) ) – this feature is enabled by libQMatrixClient, so other clients are welcome to support room versions/upgrades too!

All this is within the work on the upcoming release of libQMatrixClient 0.5 and Quaternion 0.0.9.4 – stay tuned!

Oh we will. Spectral support for these new features when?

Synapse

Neil:

With all the interest generated through Riot 1.0 we’ve seen a surge of new and returning users on matrix.org. So we’ve spent much of the week investing in stability and performance. We’ll ship a new point release (0.99.2) next week.
Once again a big flashing advert that Synapse admins should no longer be using self-signed certificates for their federation API. Synapse 1.0 is scheduled in early March and will not accept self signed certs – so servers that do not update will lose the ability to federate with 1.0 servers. Updating your certs is straight forward, see our guide and FAQ for more info.

Matrix Ruby SDK

Ananace has continued his work on Ruby Matrix SDK:

Just tagged and pushed a new version (0.0.4) of the Ruby SDK, since I’ve completely forgotten to do that for a while now.

What’s new?

A whole bunch of small stuff I did, mostly just additional exposed methods and parameters, and some fixed issues as well. I did add support for HS URL discovery using both SRV and .well-known though, which I think is probably the largest new feature.

As if all this wasn’t enough, a room on Matrix!

Created a discussion room for the Ruby SDK – since it seems like there are now people who have actually used it apart from me; #ruby-matrix-sdk:kittenface.studio

synapse-netcore-workers

A project rarely seen has recieved a lot of attention this week!

Half-Shot has been working on federation workers:

I’ve been working on a federation worker for synapse written in .NET to improve outgoing federation performance. It’s still pretty barebones, but progress can be followed at https://github.com/turt2live/synapse-netcore-workers/pull/5

TravisR too has been working on the project:

I’m also working on my own netcore workers project by setting up an appservice sender. It’s also very barebones (doesn’t even send a transaction), but is being tracked here: https://github.com/turt2live/synapse-netcore-workers/pull/6
Also, if you’d like to follow along with the project from the comfort of Matrix, head on over to #synapse-netcore-workers:t2bot.io

koma project

yuforia is working on koma:

Fix txnId generation that made sending messages unreliable. Work around a bug in OkHttp that crashed the dispatcher thread when the server certificate was not received in time.

Good thing to fix! Here’s a screenshot of Continuum-desktop, the client from koma:

yuforia continues:

Fix text processing in the bot avecho, feel free to try it out in #koma-im:matrix.org

mxisd v1.3.1 released

Max:

mxisd v1.3.1 is out. It is a maintenance release that fixes a set of regressions following the changes in v1.3.0 to massively improve performance. If you haven’t updated to the v1.3 branch, now is the time!

Construct progresses toward Matrix 1.0 Spec

Over the past three weeks Construct has made rapid progress with covering the Matrix 1.0 specification!

Last week we implemented room version 1 and room version 2 authentication rules.
This week we implemented device support and management, and have nearly wrapped up successful End-To-End Encryption testing.
The Construct is a community-driven server implementation written in C++ for maximum performance. To all experienced C++ developers out there: we need your contributions to accelerate and test the 1.0 release!

Please check out https://github.com/matrix-construct/construct and stop by #test:zemos.net / #zemos-test:matrix.org today!

uMatriks planning

mariogrip announced his plans for going ahead with uMatriks:

  • Clean up c++ code
  • Make the c++ code less heavy, we should focus on speed
  • Offload js code to direct qml binding, with this i mean instead of having ablock if-else code that modifies qml object that runs on component load, we do this directly in qml: see 0a800fc and https://github.com/uMatriks/uMatriksblob/0a800fcdc0af4fa2e08526dbff88e06bcb591779/uMatriks/componentsChatItem.qml as an example for a cleaner code
  • Make all ui depended calls async, we should NEVER block ui
  • Offload heavy js logic to c++
  • Cleaner UI, with less crust
  • Async everything
  • Merge our WIP call support
  • Finish impl of call support (maybe move to a standalone webrtc module)
  • Slowly start moving to QQC2
  • Implement reply
  • Implement sending of media

Riot Android

  • Finalising version and delivery of Riot 0.8.23 on the Play Store.
  • RiotX: testing library to render events in the timeline.

Debian packaging

andrewsh:

Since Debian has entered soft freeze, updates to Synapse have been slow lately, but nevertheless we’ve got 0.99.1.1 in

matrix-archive-keyring

Linda is continuing to prepare matrix-archive-keyring:

matrix-archive-keyring (from last week’s TWIM) is ready to be uploaded to Debian. Attempting to get it uploaded to unstable right now as I speak.

Riot breadcrumbs

We linked to the annoucement last week, and have been using it for even longer, but somehow I missed a great labs feature that shipped with Riot 1.0: “room breadcrumbs”, which you can enable from the Labs page of Riot settings. This gives you a series of quick links with the history of rooms you were most recently in. So if you’re like me, clicking between rooms all day, you can get where you’re going a little faster.

mautrix-whatsapp

There is no big news about mautrix-whatsapp this week, other than that I installed it on my own server and found that it works really really well. I’d love to switch to this as a main interface for my less-decentralised friends, but like others, I’ve been stung by this issue in an upstream project. If there are go-fans reading (and I know there are), I wonder if it’s an issue which can be fixed?

Around the Web

A tidy little article on “non-centralised” applications. Article by Jontheniceguy helps pin down some of the terminology around decentralisation and the like. https://jon.sprig.gs/blog/post/1041

joenas wrote an article on configuring Synapse with Traefik: Matrix homeserver (Synapse v0.99.1.1) with Traefik

That’s it

All good things must come to an end – and here we are!

Matrix is getting a lot of attention recently (has it been on the front page of HN every day this week? I remember that I used to be excited seeing that happen), and seeing a lot of growth as well.

If you have something to say here, something to add, come chat to us in #twim:matrix.org – I love that this is a supportive and engaged project ecosystem, so come share what you have!

This Week in Matrix 2019-02-15

Matrix Live, Synapse roadmap and Synapse 0.99.1.1

As you may have seen, Matrix Live this week features Neil and Matthew discussing the newly announced backend roadmap.

We also have Synapse v0.99.1.1 available, as the race to Synapse v1.0 gets closer and closer and closer!

Brendan also said, regarding low-bandwidth:

Some of the week has been spent finalising the components used in the low-bandwidth demo we did at FOSDEM. This required polishing some internal developments, which are now almost ready to be published to the wide world! This should happen in the next few days so stay tuned :)

Riot 1.0.0, and hotfix 1.0.1

If you’re following Matrix much at all, you will surely have seen it by now: Riot, the most popular client, has announced the v1.0 milestone. I won’t reiterate the features and improvements here, but do check out the blog post, or just head over to https://riot.im/app and see for yourself!

Particularly exciting is the new encryption verification process, involving sharing a list of emojis out-of-band:

MSCs update provided by MSCBot

In Progress MSCs

Work has continued on trying to resolve MSC1194.

Riot iOS

  • Last iteration on key backup UX
  • Finish reskin
  • Support Room v3 events ids
  • Key import (manual or backup restore) has been optimised. It is now 30x > quicker
  • An RC candidate will be available over the weekend

Scheduling, holidaying and illness means no update from Riot Andorid this week.

Artificial Intelligence Chat Bot tutorial

I like this short series on creating a Chat Bot using textgenrnn:

New(ish!) Python SDK: matrix-nio

Since we haven’t featured their work here at all I wanted to give some space to poljar. They’ve been working on a Weechat-Matrix protocol script, but as part of this project they created a new Matrix client library, matrix-nio, “designed according to sans I/O principles”.

As if this wasn’t enough! python-olm is a library providing Python bindings for Olm (enabling E2E encryption for Matrix.)

FluffyChat v11 preview

FluffyChat is a pure QML Matrix client, designed to be used on smartphones running Ubuntu Touch. Krille, the author is working on:

boring refactoring stuff :-( at the moment to prepare everything for e2e encryption work

. . .which seems to me not boring at all – we can expect, in the next few months, another Matrix Client with E2EE support, and on mobile!

In my role as editor of this particular blog post, I enjoy certain luxuries that others might envy. For example, today, I tried a new preview build of FluffyChat. This I installed on my barely-repaired OnePlus One running Ubuntu Touch 16.04.

Fractal

Chris from Fractal:

Over the past week, Fractal has adapted its main view and room settings views for mobile phones, and implemented long-press for right-clicks on messages for touch devices. It’s also received some changes in the backend to use the serde_derive Rust crate instead of parsing JSON by hand.

matrix-tag-manager

To celebrate tags being available again in riot-web, TravisR has created matrix-tag-manager:

If you’re a power user which uses room tagging to organize your rooms, I’ve made a web UI for you: https://tags.t2bot.io/

mxisd v1.3.0 released

Max:

mxisd v1.3.0 is out! This release brings the massive performance improvements, bug fixes and enchancements. This release also marks the two years anniversary of the project. Thank you to all our users for your undying support!

EdimCoder new room

krixano reports that:

I made a room for my ed-inspired modern line editor called EdimCoder. Come check it out at #edimcoder:amorgan.xyz!

avecho

yuforia reports that:

a new bot avecho is created using the koma-library. It’s a simple bot that echos text messages prefixed with avecho, but renders it into an image and include the sender’s avatar.

Ananace’s k8s docker image

Ananace reports that:

Pushed 0.99.1.1 for the K8s optimized docker image, going to stop building Python 2 images after 1.0.

Half-Shot’s .NET SDK

Half-Shot reports that:

More improvements to the .NET sdk, to make it stable in this 0.4.0 world. To that end, I’ve written a room archiver app (for moving “old” rooms into a archive tag without removing them) and a simple caching project for bridges https://github.com/Half-Shot/matrix-cache. Progress as always can be followed in #dotnet:half-shot.uk

mautrix-telegram now at 0.5.0rc2

tulir has been working on the venerable Matrix<->Telegram bridge, mautrix-telegram:

mautrix-telegram got a bunch of changes and a release candidate.\nMain changes this week:

  • Added Matrix room upgrade handling
  • Fixed bugs
  • Added new admin commands and config options
  • Added new bugs to fix later
  • Stopped using the ORM part of SQLAlchemy

Get release notes for v0.5.0-rc1 and v0.5.0-rc2.

QMatrixClient project: libQMatrixClient and Quaternion

kitsune finds time to work on QMatrixClient!

QMatrixClient project has been busy merging PRs from contributors (close to tray and middle-click in room list and user list, to mention a couple) and streamlining the translation process before the upcoming releases of libQMatrixClient 0.5 and Quaternion 0.0.9.4. At the same time the feature branch to support room versions and room upgrades is at an advanced stage; expect the features to land in master next week.

matrix-archive-keyring

Linda has been working on new Debian package called matrix-archive-keyring:

I’ve paused porting Synapse to OpenBSD this week, while I attempt to both fix and revert some security issues caused by sudo apt-key add for Matrix.org and Riot.im packages for Debian-based GNU/Linux distribution users.

matrix-org/synapse PR #4609 was my first attempt to fix the problem, however I fell short this time in ease-of-use and my implementation had other issues. (Read: The repo-key.asc downloaded from Matrix.org Debian repository should go to /usr/share/keyrings, and must not be added by apt-key add or added to /etc/apt/trusted.gpg.d directly. I attempted the latter with my first PR; but that would’ve allowed the Matrix.org signing key to also be used to verify packages from Debian’s main repositories. Yikes!)

As my second attempt, I’m now creating a new Debian package called matrix-archive-keyring. There’s multiple things this package intends to do:

  • A post-install script to remove any previously added Matrix.org package signing keys from /etc/apt/trusted.gpg. (This is the file apt-key add most commonly uses, and the most commonly found bad advice on the Internet.)
  • Convert repo-key.asc to a de-armorized .gpg format, understood better by apt(8). (Essentially, gpg --dearmor.)
  • Install the converted .gpg key to /usr/share/keyrings.
  • Make sure apt(8) uses the newly added key for Matrix.org repository only?
  • Deliver any updates to repo-key.asc directly to you via apt upgrade. Your operating system might then also do it automatically for you if unattended-upgrades(8) is installed on your system. 😊
  • Make sure everything goes away when this keyring package is uninstalled. No more sudo sh -c 'apt-key del C35EB17E1EAE708E6603A9B3AD0592FE47F0DF61; rm /etc/apt/sources.list.d/matrix-org.list to get rid of the repository.

I have one more interesting enhancement to disclose.

We can ask you with debconf if you want to install deb https://matrix.org/packages/debian $(lsb_release -cs) main to /etc/apt/sources.list.d/matrix-org.list while you’re installing the new keyring with apt install matrix-archive-keyring.

You’ll most likely notice the difference in install instructions, as a result of this package. Before and after:

# Before
sudo apt install -y lsb-release curl apt-transport-https
echo "deb https://matrix.org/packages/debian `lsb_release -cs` main" |
    sudo tee /etc/apt/sources.list.d/matrix-org.list
curl "https://matrix.org/packages/debian/repo-key.asc" |
    sudo apt-key add -
sudo apt update
sudo apt install matrix-synapse-py3
# After
sudo apt install matrix-archive-keyring
sudo sh -c 'apt update && apt install matrix-synapse-py3

If you are a Debian or Ubuntu user and Synapse homeserver operator using Matrix.org repositories, I’ll be towncrying when this package becomes available as much as I can. All you should need to do then is apt install matrix-archive-keyring and it should patch the security holes in your operating system if you’ve formerly installed packages from Matrix.org or Riot.im! (The command may change a bit, because next Debian operating system release “Buster” has entered soft-freeze just today (2019-02-12) and not accepting new packages into that release.)

PS: I’m at #debian-matrix:matrix.org, please come talk to us if Debian packaging interests you!

 

For the eager early testers not afraid of building from source, matrix-archive-keyring version 2015.12.09+debian0.10 is available for early testing (attached).

# Something like this!
sudo apt install devscripts
tar -xfvJ matrix-archive-keyring_2015.12.09+debian0.10.tar.xz
cd matrix-archive-keyring_2015.12.09+debian0.10
debuild -us -uc
sudo dpkg -i dpkg -i ../matrix-archive-keyring_2015.12.09+debian0.10_all

Please follow Debian Bug#922155 for updates. Debian binary packages will be available later sometime this/next week from Debian’s unstable distribution (contrib), if all goes well and there are no remaining Debian policy violations or serious bugs.

See also:

Gridepo

Max again:

Gridepo, as a Matrix Homeserver, is gaining basic support for Matrix Client API. We have basic login, room creationg, message sending and sync working! A little screen recording of the progress can be viewed here for live action with Riot. As a reminder, Gridepo is a clean rewrite of mxhsd.

This is not usable yet outside of a dev environment but we should have a first usable version with federation in a couple of weeks!

Mention Bots page

We have a new location for listing bots: https://matrix.org/docs/projects/bots, message benpa with any you think should be included!

That’s all I know

That’s all we have for now, but come join us in #twim:matrix.org to share your project and share the fun, and I’ll see you back here next week.