Ben Parsons

175 posts tagged with "Ben Parsons" (See all Author)

This Week in Matrix 2018-08-03

04.08.2018 00:00 — This Week in Matrix Ben Parsons

Spec Progress

Progress on the spec has been motoring since TravisR dived (dove?) into it full time a few weeks ago - the Federation API r0 megathread bug that tracks progress on filling in the gaps on the S2S API is clearing its checkboxes at an impressive rate.

Lining up spec PRs for @matrixdotorg sure does look pretty. pic.twitter.com/YHQ00ZgzYl

— Travis Ralston (@turt2live) August 3, 2018

Some points of note regarding current proposals:

  • MSC1466 Erik proposes a soft_logout field to be added to the body of 401 responses, to better help handling of encryption keys. Check the proposal notes
  • MSC1452 agreement has been reached on Homeserver Warning Messages

We're going with pinned messages (option 2) and room tags (option 5) as that seems to be where the consensus is: it re-uses existing bits of the spec and room tags also help clients that don't know about this specific room tag to handle the room the right way

  • MSC1425 Room Versioning It's likely that in the immediate future we'll want to change the properties of rooms in a way that will not be compatible with existing servers - for example, changing the rules for event auth or state resolution, or changing the format of an event id.
  • MSC1318 Documentation describing the anticipated Open Governance of Matrix.org (aka, Matrix.org Foundation)

Python SDK -> Python 3 ?

The maintainers of the Matrix Python SDK are mulling some major changes to the library. In particular, the desire to use await / async syntax means they are considering making Python 3.5 the minimum supported version. Go chat about this change and comment on the proposal issue.

Clients

Riot/Web 0.16

Big congratulations to the Riot/Web team on the release of 0.16. You can read all about it here, but I'll give you the headlines now:

  • Replies are now available, there is UX for them and they look great
  • Jitsi is now the default video conferencing provider across Web, iOS and Android, with new widget integrations for Riot Web
  • New composer (text box) using Slate.js rather than Draft.js, which fixes many existing bugs and improves performance
Meanwhile, Lazy Loading implementation is approaching completion, promising several factors of improved resource utilisation!

nheko 0.5.2

Also now available on flathub!

Go download nheko and check out the 0.5.2 release notes.

New features just in the last week or so:

  • Mark own read messages with a double checkmark
  • Add option to specify the scale factor
  • Add input field to specify the device name on login.
  • Add option to ignore key requests altogether.
  • Show device list in user profile & add option to create 1-1 chat.
Plus lots of improvements and bug fixes.

libQMatrixClient and Quaternion

kitsune has been working on resend functionality:

libQMatrixClient and Quaternion have gained ability to resend and discard unsent messages. this means if Quaternion could not, after several attempts, deliver a message, a user can click "Resend" and it will try again

On the subject of libQMatrixClient, it's exciting that Konversation, the KDE IRC client, may in future start to use libQMatrixClient for Matrix support!

Matrique

Black Hat announces a Flatpak repo for Matrique:

Matrique now has a Flatpak repo. It is the nightly build of the master branch. You can add the repo by typing flatpak remote-add matrique https://b0.gitlab.io/matrique-repo/matrique.flatpakrepo and install it by flatpak install matrique org.eu.encom.matrique As it is still Alpha quality, bugs are expected. Feel free to open an issue if anything goes wrong!

Fractal 3.29.6

New release of Fractal to 3.29.6. Notes from the changelog:

  • Add German translation
  • Message right click menu with: view source, reply, copy text and delete
  • Styles for quotes in messages
  • Initial sync speed up

Neo

Incremental improvements to Neo from fox:

Neo now has inline youtube and image url previews, and handles room state changes such as name, avatar and topic as they occur.

Riot/Mobile

  • Android: a lot of bug fixes and small UI improvements
  • iOS: Lazy Loading is coming to life, showing huge improvements in bandwidth usage and performance in the app

Updates on IRC bridges from Half-Shot

Half-Shot has been working tirelessly on the IRC bridge lately, so I wanted to update on his recent successes:

I've recently been working on mitigating the effects of a netsplit on the IRC bridge, and optimising it to start and run faster. This week I trimmed down the heap usage (where the memory usually goes) to just under a gigabyte on my 10,000 matrix user test bridge. Previously it could spike to as much as 3.5GB. This optimisation is still in a testing phase but results are looking positive.

For reference here is the memory usage of the Freenode process during startup:

And here are the results of my local test bridge before and after the change:

Before:

After:

We also made some internal changes to the appservice-bridge to cache the joined state of all the bridge users and therefore avoiding joining rooms which saves us some time on startup.

Matrix for Grafana, and more from Ananace

In his regular spot, Ananace has made progress on his Matrix sysadmin/ruby suite:

Synapse

Synapse 0.33.1 is out now as a security update release. Please update if you haven't already - it fixes two issues concerning event visibility where if you knew the event ID of an event you could read it even if you didn't have access to it; we don't believe these have been exploited in the wild, but you will definitely want to upgrade now.

Meanwhile the Python 3 port is progressing well (all sytests now pass in Python 3, i think!), and intrepid folks are starting to experiment with running it in production.

Decentralised Web Summit & Matrix Live

Meanwhile, Matthew & Amandine have been in San Francisco for the 2018 Decentralised Web Summit - so this week's Matrix Live is live from SFO and gives a quick overview of the sort of things we got up to!  Some of the sessions are already online thanks to the (somewhat unreliable) live stream (e.g. here's Muneeb (Blockstack), Amandine, Danielle (Dat), and Zooko (Zcash) talking about their respective governance models & growing pains over the last 2 years: https://youtu.be/tsz3ffrJDpw?t=12133).  The summit was a massive success, with lots of discussions about decentralised reputation, UI/UX for decentralised apps, metadata-resistance, the balance of P2P versus decentralised-servers, etc.  Hopefully some of the conversations we had will result in some major improvements to Matrix in the future!

Edit: Here are the slides for our "Diving into Decentralised Communication" workshop, for those interested in a comparison between Matrix/SSB/Mastodon/Status/Vuvuzela/Briar.  They're pretty minimal, as they just formed a framework for discussion, but might still be of interest.

GSOC: Implementing End-to-End Encryption in the Matrix Python SDK

01.08.2018 00:00 — Tech Ben Parsons

Following on from the previous post, we have an update from zil0 on his GSoC project, which entailed implementing E2E support in the Matrix Python SDK.


The goal of my project is to implement Matrix's end-to-end encryption protocol in Python, as part of matrix-python-sdk. My mentors are Richard van der Hoff (richvdh) and Hubert Chathi (uhoreg).

It was easy to get started on the project, since the simple parts came first (adding API calls), and then the whole process to follow is documented in an implementation guide, while there is also the reference implementation in JavaScript. And most importantly, the community is nice. :)

Some parts of the work consist in wrapping around the cryptographic primitives implemented in libolm (via Python bindings), in order to handle encrypted events. Others are less straightforward, such as tracking device lists of users, or finding the right way to persist keys and related data between startups.

An interesting aspect of this project is that I am working on a new part of the Python SDK, while also having to integrate with existing code, which is a cool balance between freedom and guidelines.

As the encryption documentation is a bit outdated and incomplete, one (fun) difficulty is to look for information across old issues, Gdocs and source code (and asking my mentor when in doubt). For anyone trying to implement E2E, it should be better by the end of the project, as I am currently working on documenting the missing bits.

I have had a great experience so far. Working on an open source project differs from my previous coding experiences, as people are actually going to use what I write! I have learnt to think about the best design from a usability point of view, discuss different approaches, and I had to write tests and document my code, which sadly is not something I do on personal projects. I enjoyed reviews, and the discussions they led to. And of course I have learnt quite an interesting lot about the E2E voodoo, along with some new Python tricks.

Currently, the implementation is in a working state. Some of the code is merged, and some is awaiting review. It is possible to try it here before everything is merged. The project will be finished in about one week, after some tidying up and when I release device verification and key sharing, which should be the last missing features compared to Riot.

Dendrite Progress Update

30.07.2018 00:00 — Tech Ben Parsons

As you may know, for the last few months anoa (Andrew) and APWhiteHat have been working on Dendrite, the next generation Matrix homeserver, written in Go. We asked for an update on their progress, and Andrew provided the blog post below. Serious progress has been made on Dendrite this summer!


Hey everyone, my name is Andrew Morgan and I've been working full-time over the summer on Dendrite, our next-generation Matrix homeserver. Over the last two months, I've seen the project transform from a somewhat functioning toy server to a near-production-ready homeserver that is working towards complete feature support. I've appreciated the thought put into the project since day one, and enjoy the elegance of the multi-component design. Documentation is fairly decent at the moment, but comments are plentiful throughout the codebase, while the code itself tends towards simple and maintainable rather than complex and unmanageable.

Application Service Integration

The main focus of my time here has been on the implementation of application service support for Dendrite. Application services are external programs that act as privileged extensions to a homeserver, allowing such functionality as bots in rooms and bridges to third-party networks. Supporting application services requires a few different bits and pieces to be set up. Currently all planned features have a PR for them, with the bold items already merged:

  • Sending events to application services
  • Support user masquerading for events
  • Support editing event timestamps
  • Support room alias querying
  • Support user ID querying
  • Support third party lookup proxying
As you can see a decent portion of the functionality is already in master! The rest will hopefully follow after some further back and forth.

Google Summer of Code

I certainly haven't been going at this all on my own. Alongside extensive help from Erik, who's been mentoring me, our resident Google Summer of Code student, APWhiteHat, has been tackling feature after feature in Dendrite wherever he can find them. Application services received a good deal of help on client-server endpoint authentication side, however, APWhiteHat has mostly been focusing on federation and some other very useful pieces. While his GSoC period still has a week or so before its conclusion, he has so far implemented:

  • Idempotency to roomserver event processing to prevent duplication
  • Username auto generation
  • Tokens library based on macaroons
  • Lots of left-over federation stuff: state API & get missing events being the major ones
  • AS support to clientapi auth
  • Typing server: handling of PUT /typing by clientapi
  • More typing server stuff on its way
From my perspective, APWhiteHat was an excellent developer to work with. He asked good questions and was quick to answer any myself or the community had as well. His code reviews were also very comprehensive. I learned a lot from working with him and everyone else :)

OpenTracing and Prometheus Monitoring

Placing any large server into a production environment requires extensive monitoring capabilities in order to ensure operations are running smoothly. To that effect, Dendrite has been both the addition of OpenTracing and Prometheus support. Prometheus, also used heavily in Synapse, allows a homeserver operator to track a wide range of data including endpoint usage, resource management as well as user statistics over any given range of time.

In Dendrite, we are taking this one step further by introducing OpenTracing, a language and platform-agnostic framework for tracking the journey of an endpoint call from incoming request to outgoing response, with every method, hierarchy change and database call in between. It will be immensely useful in tracking down performance issues, as well as providing insight into the most critical paths throughout the codebase and where we should focus most of our optimization efforts on. It also comes with a lovely dashboard courtesy of Jaeger:

Community

We've also seen some encouraging interest and development work from the community in the past couple months. While PR review from our own side is admittedly slow due to our focus on getting the foundational work in place, that hasn't stopped both old and new developers from sending in PRs and performing code reviews. A huge thank you to everyone involved! From this we've gotten API implementations and application service fixes from @turt2live, an end-to-end encryption implementation from @fadeAce, filtering support from @CromFr, and some PRs and numerous helpful review comments from @krombel.

We've also started to see some people running Dendrite in live environments, which is incredibly exciting for us to see! While Dendrite is not considered production-ready yet (though it moves closer every day), if you are interested in giving it a go please consult the quickstart installation guide. We look forward to any feedback you may have!

This Week in Matrix 2018-07-27

27.07.2018 00:00 — This Week in Matrix Ben Parsons

mautrix-telegram now supports double puppeting

tulir has been working away on mautrix-telegram, and has a major breakthrough:

It means you can log in to the bridge with your Matrix account to make messages you send from other Telegram clients appear from your Matrix account.

It can also be used to enable bridging of ephemeral events, which synapse doesn't send to appservices (read receipts, typing notifications, presence).

Also, the bridge has a new HTML parser which should be much better than the old one. It might have caused some new bugs though (like m.emote bridging breaking)

Coffee and the FAQBot

I've been slowly working on matrix.org the last couple of months, updating the FAQ, updating content and UI/appearance of try-matrix-now. As you may know, the FAQBot, created and maintained by Coffee, uses try-matrix-now for it's data, so Coffee updated the bot to start to use some of the new fields.

The final puzzle piece needed for FAQBot has been put into place: https://gitlab.com/Matrixcoffee/extract-web-to-org
This is the bit that grabs "Try Matrix Now!" and turns it into questions that FAQBot can use.
While I was working on that bit of code anyway, I also added support for the new 'home', 'repo', 'room' and 'language' fields. FAQBot will now give more and better information accordingly. For example, it is now possible to ask, "where is the Riot Android source code?" although it is generally better to just ask "where can I find Riot Android?" which combines several fields into a single answer.
4 of 7 items are now completed: https://gitlab.com/Matrixcoffee/FAQBot/issues/2
and the remaining 3 items before FAQBot's release are just the final review and integration tests.

New Discord Bridge Maintainer

Half-Shot has been working stridently on the Discord Bridge lately, and the project has now attracted a second maintainer:

We've got a new member of the maintainer crew in discord bridge land (bringing the total count to 2.) I'd like to welcome Sorunome :). They are going to be helping review the influx of PRs, chew some issues and be a point of contact in the community. They've already filled my PR queue up and it's going to help us move even faster!

In other Bridge news, matrix-appservice-bridge 1.5.0 is out now, uses the latest matrix-js-sdk and matrix-appservice-node, and contains a lot of changes.

Bruno unit tests

Bruno, the latest and greatest addition to the [riot-web] team, has been working on configuring end to end unit tests. His scripts now install synapse from the metal, install riot and then run a test suite. Take a look at the animation below to get the idea!

Fractal 3.29.5

Alexandre Franke tells us about new features in Fractal 3.29.5, and how the project has benefited from GSOC 2018 contributors:

Fractal got a big new release 3.29.5, which includes Eisha's multi-line input (with markdown syntax highlighting) and Julian's room details redesign, as well as his refactor on avatar code which leads to a perf boost.

Ananace: Grafana webhook for Matrix notifications

Ananace, always working on sysadmin tooling with matrix, comes back with a new tool: Grafana webhook for Matrix notifications. This release is described as "the very first 'It doesn't crash instantly' version", but this is surely a useful project.

Quaternion / libQMatrixClient support local echo

kitsune had a surprising week while working on his QMatrix projects:

/me accidentally found a year-old feature branch in his Git and thought of rebasing it in order to eventually continue working on it. As a result, libQMatrixClient and Quaternion master branches support local echo from today. Too bad the same trick doesn't work for E2EE.

Too bad indeed!

Riot/Web

  • Cut the release candidate for 0.16-RC1
  • Lots of final polishing on Jitsi; all bugs fixed now
  • Likewise all Slate bugs fixed - many thanks to t3chguy for finishing them off
  • Lazy Loading Members implementation progressing well
  • Release due on Monday
  • On crypto: uhoreg has also been progressing on hooking up incremental key backup

Riot/Mobile

  • Room version upgrade support!
  • Replies UI implemented on iOS and working well
  • Lazy Loading Members is done and working on iOS - speeds up launch by a minimum of 3x

Synapse

  • Hawkowl is running the first ever Python 3.6 synapse! RAM usage looks to be 2-3x less than on Python 2.7. Still work to be done to merge all the PRs though.
  • Landing all the Lazy Loading patches; 3 down, 3 to go
  • Gathering feedback on the state res prop - thanks to uhoreg for wading through it!
  • Catching up Lots and lots of PRs
  • Implementing room versioning and gathering feedback on the MSC
  • Perf fixes - optimising current state res a bit & fixing sync performance
  • => End-to-end message latency on matrix.org has been improved by 3-5x over the last few days(!!!)

Dendrite

Super-exciting to see end-to-end encryption working with Dendrite thanks to a massive PR from first-time contributor fadeAce!! https://t.co/SLIPvgYGAm pic.twitter.com/s47SWjY46o

— Matrix (@matrixdotorg) July 27, 2018

  • OpenTracing support has been dusted off and is working again cross-service
  • See the community update for much more!

Spec

  • Travis continues to blitz through the S2S spec, PRs are flying around everywhere (and even landing!)
  • Uhoreg continues to work on the E2E spec merges with Zil0

We'll meet again…

See you next week, and don't forget to watch Matrix Live below!

This Week in Matrix 2018-07-20

20.07.2018 00:00 — This Week in Matrix Ben Parsons

Spec Updates!

First of all: we've just released the first draft of the proposal for our next generation State Resolution algorithm as MSC1442 (State Resolution: Reloaded).  This is the result of a massive amount of work from Erik - if you are at all interested in the problems that state resets have plagued us with, then you will want to read the proposal and please comment on it!

The next step on State Resolution: Reloaded (once approved) is to be able to actually roll it out - and to this end, richvdh has proposed MSC1425 (Room Versioning proposal). This was published at the beginning of the week but we haven't had any feedback yet - again, please read & give feedback as the intention is to start working on this as soon as possible!  Matthew's also been updating the Lazy Loading proposal (MSC1227).

Meanwhile, the Matrix Spec is now awash with activity, lots of work from TravisR, Cadair and others to accelerate progress. Take a look at the proposals list to stay up to date, or straight to the matrix-doc repo and #matrix-spec:matrix.org room to get the raw activity.

Finally, discussions relating to the spec proposal process itself have attracted attention: MSC1426 and MSC1421, and we're already trialling the new process (using Github PRs rather than Google Docs) in MSC1442 (State Resolution: Reloaded) already.

nheko 0.5.x

nheko 0.5.1 is out, and it's great! Get a version for your platform from bintray.com. I've been using it for the last week or so (on macOS) and found it very stable and usable. mujx commented that "highlights were encryption support & desktop notifications on all platforms", but you can get much more thorough notes from the release notes.

Plasma

It's been several weeks since we mentioned Plasma, but work on the C2S parts of the spec implementation have been happening quietly behind the scenes. Project lead Nico said recently:

I've updated the CI test server with the latest snapshot version of plasma. createRoom and invite C2S endpoints are fully implemented and should work as expected.

You can find the full list of implemented endpoints in the readme, and also read the architecture overview.

kitsune, live on stage

kitsune presented an introduction to Matrix (for a technical audience) at the Tokyo Linux Users Group - you'll need to skip to 1h41m16s into the video.

GTAD pulls in description and summary fields from the API

kitsune continues working on GTAD, and this week has started automatically including docs in libQMatrixClient:

GTAD is now aware of description and summary fields in API descriptions so you can use them with Javadoc/Doxygen. As a result, libQMatrixClient master branch now enjoys doc-comments throughout its CS API layer - the rest of the library builds in envy.

SimpleMatrix

MTRNord introduced us to SimpleMatrix:

SimpleMatrix is my approach on making an Android App that is more easy to use than the official one in Terms of UX and UI. Planned is also a Android Wear App within this App for mostly Notifications.

SimpleMatrix is planning to use matrix-java-sdk, but for now is a visual mockup, it doesn't currently connect to Matrix.

Room: #SimpleMatrix:matrix.ffslfl.net Git: https://git.nordgedanken.de/Nordgedanken/SimpleMatrix

Tales of Half-Shot and his many Bridges

Arrival of the Discord DMs

After lots of begging, frustration and eventually an offer of a free lunch (thanks Anoa): I give you Discord DMs.
This first cut bridges over existing regular and group DMs to Matrix. In the future we will also allow you to create DMs from Matrix so that you can contact users without even logging into Discord. With thanks to the #discord:half-shot.uk community for helping shape this feature!

Currently this is in PR form but is very likely to make it into the 0.3 release of matrix-appservice-discord.

Half-Shot fixes the Foonetic IRC bridge

For those who (want to) use Foonetic IRC channels, Half-Shot is here for you! Previously this bridge had been down due to invalid certificates, but this is now resolved.

Synapse

Synapse 0.33 landed on Thursday, boasting 2x speed-ups for /sync and (briefly) meaning that the matrix.org homeserver felt impressively snappy and fast!  Ironically traffic levels promptly grew again such that the synapse master process is now the bottleneck once more, but between incremental state res, python 3 and upcoming room-sharding work we should see the performance fixes continuing to come!  Meanwhile, lots of PRs in the queue for Synapse 0.34 - including Lazy Loading support as per (MSC1227), and a whole new set of stats functionality for tracking per-room and per-user stats.

Riot

Lots of activity in the build up to Riot/Web 0.16 - merging the new Slate rich text editor to /develop (try it now!), upgrading Jitsi and turning it on by default (at last!! - again, try it on /develop, although you'll have to enable it in Labs).  We'd be particularly interested in how Jitsi is behaving, as so far for us it's been unrecognisably improved over the previous deployment.

Meanwhile, lots of work on Lazy Loading members on Riot/Web and Riot/iOS, and lots of stability perf work in general across mobile.

State Resolution Special... Matrix Live!

And finally, all you could ever want to hear about the new State Resolution algorithm on a special edition of Matrix Live, starring Erik & Matthew!

This Week in Matrix 2018-07-05

05.07.2018 00:00 — This Week in Matrix Ben Parsons

matrix-synapse for Docker and k8s

Ananace has been working on configuration files for Synapse:

So now the K8s stuff has configuration examples for Synapse + Riot + mxisd + coturn, all runnable on your very own Kubernetes cluster - though with some manual tinkering required at the moment.
I've updated the Kubernetes configuration examples to include everything you need for a full Matrix stack; Synapse + Riot + mxisd - using the built-in K8s ingress
And + coturn of course, not to forget

Take a look: https://github.com/ananace/matrix-synapse

mautrix-telegram is now the primary Telegram bridge on t2bot.io

TravisR:

t2bot.io is now running mautrix-telegram as the primary Telegram bridge. Feel free to join the other 10k users on the bridge and bridge your own Telegram group to your room: https://t2bot.io/telegram/.

We should give a big shout of thanks to tulir for his consistent and continued work on mautrix-telegram.

Debian packaging

andrewsh:

I'm packaging Circle IRC/Matrix client for Debian and backporting synapse to stable.

Google Summer of Code

The second evaluation for GSOC 2018 is nearly here, so we have some updates from the student participants:

apwhitehat is working on Dendrite

Dendrite updates for TWIM (before GSoC 2nd eval): This month we've got most of the federation APIs working on Dendrite. These are:

  • State APIs #486
  • Get missing events API #516
  • Query user devices #498

We still need to figure out pagination for backfill API.

On applications services, we've got a lot of APIs working, thanks to anoa. Authentication now acknowledges App services, though lot of other stuff is under review. I am eagerly waiting for it to land.

On the same topic, anoa says:

We've had a PR from fadeAce/dirichlet_zby for the server-side implementation of end-to-end encryption support in Dendrite. Will be looking forward to seeing that land as well.

There is an explanation of the endpoints required for this in the CS API docs.

Zil0 is working on E2E in the Python SDK

Sounds like Zil0 has been going great guns on the matrix-python-sdk:

Encryption in matrix-python-sdk should now work fairly well.
The biggest parts to write were device tracking and key persistence. All the PRs are now opened, and the code is fully tested and documented.
It is possible to try out the implementation before it lands by referring to instructions written here.
Also a special thanks to poljar for some great work on new Olm bindings, which allowed the project not to get stuck with packaging issues.
Further work include encrypted attachments, device verification and key sharing.

koma, kotlin client

Last week I mistakenly referred to Koma as being written in Rust, then Java. This was all incorrect, though being written in Kotlin, Koma does run on the JVM and use JavaFx.

sideboat:

This week in koma, we are improving the room info window used for viewing and editing the name, icon, and aliases of a room. In the upcoming release, user power levels will be taken into account, so that editing options will only be shown when the user has enough power.

Synapse

Neil says:

We've just cut the next release candidate for Synapse: 0.32.0rc1.
The upcoming release focuses almost entirely on security; fixing federation bugs and adding new features for countering abuse.

Riot

This week we welcome Bruno to the Riot team, he's off and away working on getting integration tests set up.

Otherwise:

  • More work on the Jitsi integration
  • More work troubleshooting E2E failures
  • v0.15.6 and v0.15.7-rc.1 now available

Self-reference

This week was only six days long, but to make up for it we'll have a bumper eight day edition next time! Come join us in #TWIM:matrix.org and share what you've made.

This Week in Matrix 2018-06-29

29.06.2018 00:00 — This Week in Matrix Ben Parsons

Welcome

Welcome to This Week in Matrix, let's see what updates the community has to offer this week!

koma

Announcing his update nearly a week ago, radicus released v0.7.3 of koma.

There have been quite some changes since updates of the project were last posted, but the major ones are:

  • Upgrade to JavaFx 9
  • Experimental support for infinite scroll on message list
  • Rewrite ListView to improve performance and reduce jar file size

dialogflow connector

vurpo has released matrix-dialogflow, which allow the use of DialogFlow agents as chatbots:

I've written a little bot for connecting a DialogFlow agent to Matrix as a chatbot. I did this for my own personal purposes but I know someone else might find this handy as well.

mautrix-telegram

tulir:

New stuff in mautrix-telegram:

  • A basic telematrix database import script
  • Improved config for relaybot message formatting, including the option to use Matrix displaynames (instead of just mxid localparts) I've also been planning an improved Matrix->Telegram formatting converter and a provisioning API for integration managers like Dimension.

jmsdk

ma1uta has been working on a matrix client this week. To that end, he has implemented jmsdk, a "very early version of the matrix sdk and common classes (client, bot, …)"

Currently implemented the matrix client on the java with full support of the C2S API. It still under development and contains bugs.

He has also been working on a "bot sdk with core classes to write custom bots and appservices."

matrix-appservice-voip

Max has been working on VoIP bridging between Matrix and regular phones using Freeswitch:

We have successful VoIP bridging between Matrix and regular phones using Freeswitch, for 1:1, both directions! a v0.1 is scheduled in a few days once configuration is possible and a getting started doc is written.

Next steps:

  • more voice backends (think Jitsi, etc.)
  • SMS support with Twilio and/or OVH initially
  • mxisd integration to automatically invite bridge users if needed and suggest bridge users
  • mxgwd integration to auto-join HS regular users if a VoIP bridge user invites them, so > calls are directly seen
  • And much more in later releases
Join #matrix-appservice-voip:kamax.io for more info, or visit the Github repo

transform

A wild bettiah appeared, announced a completely new homeserver implementation in TypeScript:

I have been working on a homeserver implementation over at https://github.com/bettiah/transform . It is fairly basic at the moment, but the development experience is straight-forward and even fun.

I'm interested to see a TypeScript backend running, and of course it's great to have more homeserver implementations! Some highlights from the readme:

Transform is a matrix homeserver built using Typescript and Redis. It is not fully functional yet. Status: Register, Login, CreateRoom, Invite & Join seem to be functional with riot web client. But quite a lot of functionality is missing and the software is definitely not ready for deployment in a public facing role. Design: A lot of the code is auto-generated from the excellent swagger specs for the client-server api. Contributing: It is early days yet. However, Typescript has enabled safe & rapid progress. Redis streams too seem to have a very well thought out api and the whole thing has been a fun experience so far. Contributions are very welcome.

dsn-traveller source code released!

Good news for those following the progress of dsn-traveller, the source is now publicly available!

From Florian:

I received permission to publish the source code of the DSN Traveller bot (https://dsn-traveller.dsn.scc.kit.edu/) prior to handing in my thesis: You can find it at https://github.com/florianjacob/dsn-traveller, it's written with ruma-client and Rust async/await.

Room remains at #dsn-traveller:dsn-traveller.dsn.scc.kit.edu.

E2E for Python SDK

Late breaking, but not itself broken, &Adam has news from matrix-python-sdk:

first olm-centered E2E PR for the python sdk merged to master (finally). Lots of great work from Zil0 still to be merged waiting on PR review. https://github.com/matrix-org/matrix-python-sdk/pull/224

Fractal

From Tobias:

No new Fractal release this week. Development was quite active nevertheless, with Jordan's new inline audio player landing in master, Julian getting close to landing the first part of the new room settings, and Eisha working on improving the image viewer.

Riot

New Rooms

And so…

All good things must come to an end, so it is with this blog post! Watch this week's Matrix Live (hosted by yours truly) below, and come see us in #twim:matrix.org!

This Week in Matrix 2018-06-08

08.06.2018 00:00 — This Week in Matrix Ben Parsons

GSOC Updates

With the first evaluation date coming up, let's take a look at what some of the GSOC students have been working on.

Zil0 on the matrix-python-sdk

I am working on implementing end-to-end encryption in the Python SDK. As of now, I have done a good part of the encryption and decryption work with Olm and Megolm, enough to allow communicating with Riot in an encrypted room. My next goals include device list tracking and key persistence, which are the main steps left before the implementation starts being usable in a real environment.

apwhitehat on Dendrite

My aim is to achieve feature completion on Dendrite. Have got lots of help from anoa, for which I'm very grateful.

Features worked on this month:

  • we made a transactions cache/table for idempotency. So now dendrite will not reprocess events as far as client-server api is concerned.
  • added request authentication function which recognises an application service user (partially landed.)
  • username auto generation, which let's you register without username (will be used for guest access later.)
  • We also added a tokens library based on macaroons, however we might not be using it anytime soon. Since it's been known to be very problematic (on synapse).
  • Other small bug fixes not big enough to mention.

Clients

We are rich in client announcements this week!

palaver

Arne has announced v0.1.0 of Palaver:

More news from the JVM-world: I've just released the first Alpha version (v0.1.0) of Palaver, a Desktop client written in Kotlin: https://github.com/MrCustomizer/palaver/releases/tag/v0.1.0. As backend it uses the matrix-java-sdk, the GUI is written in TornadoFX, a Kotlin-Wrapper for JavaFX. The room for this client is #palaver:matrix.localtoast.de. The current features are listed in the changelog: https://github.com/MrCustomizer/palaver/blob/v0.1.0/CHANGELOG.md. And there is a little demo video on youtube, too: https://www.youtube.com/watch?v=AuGuxAPuRIM.

I enjoyed this video enough that I'm embedding it here:

matrique returns

Black Hat is working on Matrique:

a matrix client using golang and QtQuick controls 2. It is not ready...Yet. PRs and issues are welcomed!

neilalexander has a new macOS Client: seaglass

neilalexander has begun work on "seaglass", a client for macOS using matrix-ios-sdk, he's only just begun, but for now see the screenshot below:

kitsune: GTAD and libQMatrixClient

kitsune has announced GTAD v0.6 and libQMatrixClient v0.3. We've covered GTAD before, but I think it's worth including this note from the readme:

GTAD (Generate Things from an API Description) is a generator of code from a Swagger/OpenAPI specification. Initially made to generate marshalling/unmarshalling C++ code for Matrix CS API, it can be extended to support other API descriptions and other programming languages with static type checking.

kitsune regarding the GTAD 0.6 release:

A new version of API code generator, GTAD, 0.6, has been released today, adding support of variant types, proper dealing with definitions referencing other files ($ref) and more options to override schema names - even defined inline. Most importantly, GTAD has got extensive README.md that describes (most of) the things needed to start writing your own templates! As usual, kitsune will be happy to help those who would like to try it (both with C/C++ projects and other languages).

libQMatrixClient has been benefiting from GTAD over the last 4 months or so - but this is the first release where GTAD is stable and feature-complete enough to be shared with other projects.

#gtad:matrix.org is the new room for GTAD chat and support.

and libQMatrixClient 0.3:

A new version of libQMatrixClient, 0.3, comes out this weekend. This is the first libQMatrixClient release to include (almost) all CS API requests and supplementary (non-event) definitions, thanks to GTAD 0.6. Notably, it now includes jobs to register users, manage devices and keys on the server (no local key management yet - E2E work has just begun). This version also gains centralised request error handling so that clients could deal with problems in a unified way, and support "Consent not given" errors of GDPR fame, so that client authors could automatically open consent pages. You can also trigger logging out of all devices through libQMatrixClient thanks to a very recent addition to CS API spec from TravisR.

Fractal

Last week we linked to Julian's blog notes on the User Settings panel - this has now landed in Fractal master.

nheko

nheko v0.4.3 is now available, from the release notes:

  • Overdue fixes for some regressions with regard to widget height introduced in the previous two releases
  • The matrix id will be shown on hover on the display name.

riot-web

Riot-web: released an RC for 0.15.5. This RC includes some small bugfixes.

riot-android

We have been working on Riot stability: fixing crashes and adding more tools to control code quality The community on android adds a more readable display of keys and a floating actions menu is coming.

riot-ios

Working on perf. On stability too (like killing build warnings). Users can now re-request keys when they have UTCs.

Other projects

anoa on dendrite

We've got a shiny new application service component which runs as a separate process (if you're doing multiprocess dendrite) that handles all outbound communication to application services. Last week I got event sending working. This week I'm hooking up an internal API for other components (roomserver, c-s api) to talk to the app service component, as we occasionally need to ping AS's to ask about existence of rooms or users. Getting those two endpoints covered is the goal of this week.

ma1uta Full Spec Implementation in Java

ma1uta appeared with an extremely ambitious piece of work. His goal:

I want to create a full spec's implementation on java (all 5 specification). After that I want try to write a homeserver (2 variants: distributed on java+kafka and simple which can run on a light vps). But it's a long-term goal.

So far work has begun on an implementation of the Matrix API in Java:

https://gitlab.com/ma1uta/jeon - another java implementation of the matrix api (client-server, server-server, application server, push server, identity server) using jax-ws. It corresponds the specification on https://matrix.org/docs/spec. On the next step I want dive deep into synapse to parse it's api and fill the gaps of the spec with sending pull request. May be I will write something like a TCK (test compatibility kit).

And an SDK for which there is a sample bot for mastodon:

Also this project has a very early sdk (client, bot). I will fix it after finishing works with the spec. https://gitlab.com/ma1uta/mxtoot - matrix-mastodon bridge. With this bridge you can invite a bot and read your home mastodon's timeline, post messages, reply and boost messages.

There are rooms to follow progress on these projects:

Also find updates on Mastodon: [email protected]

The Continuing Adventures of Half-Shot and the Discord Bridge

Half-Shot has been at work on matrix-appservice-discord, and has made a v0.2.0 release! Looong feature list below is taken from https://github.com/Half-Shot/matrix-appservice-discord/releases/tag/v0.2.0:

  • Support Node v10
  • Option to disable @here and @everyone on the bridge - Permission based mentions coming soon.
  • Sending large files over the Discord limit now sends them as URLs
  • Added support for external and animated emoji - Thanks @Sorunome!
  • Initial support for m.sticker
  • Sender avatars are now thumbnailed - Thanks @turt2live
  • Support for message edits. Thanks @anoadragon453
  • Support for custom and animated discord emoji parsing M->D. Thanks @anoadragon453
  • Throw discord.js logs into our logging to help debug connection issues
  • Warn when turning on encryption that the bridge will no longer work.
  • Clarify where to specify protocols in the registration config. Thanks @anoadragon453
  • Add attachments into the event store and fix up some of our Inserts. Thanks @eeeeeta
  • Fail if the event.content.url is not present.
+ lots of testing and fixes

t3chguy matrix-search including e2e

t3chguy, straight out of exams, went back to working on matrix-search, now with a working release, including e2e chats!

a local Full Text Search engine for Matrix, which will index the events locally and then provide a search api interface for matrix clients to query it matrix-search mimics the standard /search API

toml has already been looking at this and has created a docker container for it: https://github.com/matrix-org/matrix-search/tree/toml#to-run-in-a-docker-container

Ananace on Kubernetes

Switched the Kubernetes-oriented Synapse image over to running on the official one as a base, seems to still work quite well. Even if there were some issues at first due to Alpine and busybox.

I've been building slightly specialized Synapse docker images since 0.25.1 - and running them on my Kubernetes cluster at home. Moved them to being based on the official images now instead of building them on CentOS as I used to.

Synapse 0.31.0 and 0.31.1 released

Changes for Synapse 0.31.0

  • Most notable change from v0.30.0 is to switch to python prometheus library to improve system stats reporting. WARNING this changes a number of prometheus metrics in a backwards-incompatible manner.
  • There are still many changes being made relating to the Python 3 migration.
For Synapse 0.31.1

v0.31.1 fixes a security bug in the “get_missing_events“ federation API where event visibility rules were not applied correctly.

andrewsh has been packaging synapse for Debian.

Guides index

I'm going to start making a list of guides from around the web to be linked from https://matrix.org. If you have, or know of, useful guides relating to matrix, please let me know or share in #twim:matrix.org.

New rooms

other points of interest

The end is nigh...

And here it is. As you may have noticed, I'm leaning much more toward quoting wherever possible, rather than trying to paraphrase. The aim is to keep the content authentic and community-driven, rather than a narrative from one fairly naive observer. The risk is it makes the post awkward to read as it switches voice too frequently. Come to #twim:matrix.org and let me know if you have opinions on this.

Check out Matrix Live:

This Week in Matrix 2018-06-01

01.06.2018 00:00 — This Week in Matrix Ben Parsons

GDPR

It's over. It's once again safe to check your email, and we got some fairly good jokes out of the experience.

Projects

Synapse

hawkowl is technically new to the Matrix Core team but is already integrated and storming the codebase like an old pro. She and notafile have been ramping up on work to the make the Synapse codebase work with Python 3.

matrix-docker-ansible-deploy can now set up your homeserver using the official Matrix Synapse Docker image

@slavi:devture.com sent great news: matrix-docker-ansible-deploy can now set up your homeserver using the official Matrix Synapse Docker image. In his words:

Using this Ansible playbook is probably the easiest way to set up a fully-functioning Matrix homeserver on your own machine. The setup includes Matrix Synapse and some related services required to actually make it useful (automatically-managed HTTPS; STUN/TURN server for audio/video calls; Postgres database for Synapse; optionally riot-web; optionally Amazon S3 storage support)

matrix-registration

Helpfully named Zeratax?utf8=✓ has released matrix-registration, an application which allows you to "easily create tokens to invite users on your homeserver without the need to open up public registration". There is a public demo here: https://zeratax.github.io/matrix-registration/demo.html

Says Zeratax:

my personal problem was: i didn't want to open up registration for everyone i didn't want to register every account manually and have to worry about seeing passwords etc now i can just share a link, e.g: https://zeratax.github.io/matrix-registration/demo.html?token=JargonGingerYankee

and my friends can register.

these token can be restricted as one time usable only or by an expiration date.

dendrite activity!

anoa writes about progress on dendrite:

Last week dendrite was filtering events from user's into separate queues for each application service to eventually be given. Sending these events requires batching them up into transactions and then sending them to an HTTP endpoint on the application service. I'm happy to report that from today, that functionality is now implemented, along with graceful handling of both server and application service downtime.

Fractal

Alexandre Franke from Fractal reports:

Fractal got the beginning of a revamped directory (from one of our GSoC interns), as well as misc bugfixes and performance improvements. It has also been added to Damned lies, the GNOME platform for translations.

neo 0.06

neo v0.06 is out now, release notes:

Beautiful new file upload dialog, with previews, captions and the option to cancel. Making 1on1 chat look a bit nicer.

added: file upload dialog room canonical alias fallback for name 1on1 room now shows avatar+name of partner

changed: getting room name/image in initialSync instead of on render, still not optimal better image/video scaling better local echo various bugfixes

Articles and blog posts

Riot Jouni blog post

Riot is undergoing a visual redesign, thanks to Jouni Helminen. Take a look at the redesign work on the Riot blog. The changes are not radical, but will help standardise and modernise the Riot interface. Early feedback I've seen has been mostly positive.

Julian on Fractal work

Julian is a GSOC 2018 student working on Fractal. He's been working to improve the user account setting panel, and has made progress as described here.

The user can now change the following settings: Avatar, display name, add and remove email addresses and phone numbers. Also, they can see the homeserver and their own MXID.
We will probably make some more small changes on the way to make the UX as good as we possibly can.

Fedora Magazine mention of Fractal

Fractal was featured in Fedora Magazine this week, just a little introduction. I notice the article barely introduces matrix: not sure if that's an oversight or a belief that the audience will already know it!

New Riot theme from MTRNord: blueshine

MTRNord has started work on "a secondary Dark Riot Theme named blueshine". Lots of screenshots are available on the PR, and take a look below too. If you'd like to try it out, TravisR has hosted a Riot instance with the theme included here.

blueshine riot theme

Spec Proposals

Still posting about spec proposals. To get involved in the spec development process, take a look at the Matrix Spec Change Proposals page to find out what's happening, read the proposals, then talk about it in #matrix-spec:matrix.org. One proposal looking for attention and a good place to start:

Interactive Key Verification: Spec proposal from uhoreg

Long-time contributor uhoreg joined the matrix.org core team this week, and is requesting feedback on a spec proposal relating to Interactive Key Verification. Reminder that the list of spec proposals is tracked here, and to join the discussion in #matrix-spec:matrix.org.

nheko packaging

nheko openSUSE packaging

It's now possible to install nheko as a openSUSE package - great to see that there is enough demand for a community package to appear.

nheko 0.4.2-1 package now in Debian

uhoreg provided Debian and Ubuntu packages for nheko 0.4.2-1: https://packages.qa.debian.org/n/nheko/news/20180530T135401Z.html.

New Rooms, also rooms which happen to be new to benpa

That's about all for now…

… and that's plenty for the week! Take a look at Matrix Live below, and join us in #twim:matrix.org if you have something which should be included.

This Week in Matrix 2018-05-25

25.05.2018 00:00 — This Week in Matrix Ben Parsons

GDPR

HAPPY GDPR DAY EVERYONE!!!!1!

  • Our long-awaited new privacy policy & term & conditions for the matrix.org server are here - Phase 1 is complete!
  • Folks are already accepting the new policies - thanks.
  • We're going to start requiring acceptance to access the matrix.org server on Tuesday (May 29th).
  • We're already receiving our first GDPR requests… :|
  • Erasure and Right-to-be-forgotten work (Phase 2) is next up so we can action the requests in a timely manner.
  • It looks like we will go ahead on removing MXIDs on events as a Phase 3 (although for now we do warn people that this is effectively a technical limitation of Matrix, albeit one that we're working on).

Client Updates

mtxclient E2E progress

Big E2E progress from mujx, developer of the nheko client on his project mtxclientAs of this week, mxtclient is able to decrypt group events. When writing (that is, sending encrypted messages) is complete, the idea is to migrate this work back to nheko, though mujx points out this library could be used in any client.

Fractal

Back to work after the HackfestFractal have released version 0.1.30, featuring:

  • Translations support
  • Number of members in the room in the members button
  • File storage configuration support
  • Gold and Silver tags for admins and moderatos
Some coverage of the Fractal design thinking from last week, nothing new but a decent signal boost.

gomuks

tulir came in with some late breaking news about gomuks, the terminal client written in go. New features:

  • A fancy quick room switcher by Evidlo
  • A few basic UI options (hide user/room lists)
  • Plaintext view to be able to click long links and such
  • Fixed some bugs

Riot/Web

  • GDPR-capable release! 0.15.4 out today
  • Various bugfixes and performance regressions.

Riot/Mobile

  • GDPR-capable releases!
  • Sticker sending is ready modulo some CSS bugs; we'll get it pushed shortly.

Bridging

JonTheNiceGuy bridging video

JonTheNiceGuy produced a helpful video describing how to use bridges for IRC, Slack and Telegram, showing the difference between the different bridges. I found this to be really clear and well-paced for following the many practical details of bridging. Watch here: https://www.youtube.com/watch?v=ZNEzgYRLj8g

Discord bridge

anoa and half-shot have been working on the matrix-appservice-discord bridge:

"finished edit passing between Discord and Matrix, as well as support for discord's custom emojis (though UX is a bit manual until TravisR's proposal goes through ?)"

matrix-puppet-facebook-1to1-fixer from Brendan

Brendan shared a project he's been working on this week: matrix-puppet-facebook-1to1-fixer. This project fixes a UI issue Brendan had with the Facebook Messenger Bridge, namely that activity in 1:1 rooms was not clear enough.

This small tool will take the local part of the room ID created by the Matrix<>Facebook Messenger bot once the friend has joined it, identify th friend, and grab their avatar and display name to set the room's.

mautrix-telegram

Lots of progress on mautrix-telegram this lately including v0.2.0 RC. As reported by tulir:

  • A dockerfile by jcgruenhage
  • Option to whitelist/blacklist automatic bridging of specific chats
  • Fixed many bugs

matrix-appservice-sms

eta has been working on matrix-appservice-sms this week:

I have managed to do the first phase of a massive refactor that makes it way more reliable (temporarily store SMS in the database before delivery)

this makes it more resilient to synapse hiccups, as well as general failures

Other Projects

matrixboard, from betz

betz runs the https://hackerspaces.be/ matrix server and has this week, inbetween repairing his Synapse install, been working on a project called matrixboard. This tool is used to output the last five messages from a given room to displayed as HTML, the idea being to display output from a specific room as a website widget. You can see an example using #matrix-dev here.

opsdroid room state connector

SolarDrew implemented a database modulefor opsdroid to allow Matrix room state to be used to persist chat bot memory. (Suggestion apparently came from Cadair, the human not the place.)

The idea of using the room state to encapsulate bot data per-room was well received, discussion in #TWIM:matrix.org suggests this is an estabilished practice for some developers.

matrix-python-sdk

No general GSOC round-up this week, &Adam shared the news that GSOC-student Zil0's first PR towards E2E in matrix-python-sdk landed on master. These PRs are working from efforts previously contributed by pik.

Ruma

Work continues in the Ruma space. This week saw the release of

  • ruma-events 0.10.0: ruma-events contains Serializable Rust types for the events in the Matrix specification. 0.10.0 sees a major update with code provided by mujx, and contains many breaking changes.
  • ruma-api-macros 0.2.2, and ruma-client-api] is also updated to use the new macro.

f0x account migration helper

f0x has started work on a tool to help migrate accounts - including across homeservers. Right now he's working on the GUI, but check out progress at https://github.com/f0x52/matrix-migrate.

DSN Traveller by Florian

Florian reports:

As part of my master's thesis, I wrote the DSN Traveller bot, which is crawling the matrix federation to measure the shape and size of the matrix network, and how distributed it currently is. The bot is already in a smaller number of rooms for testing, and will join the remaining rooms over the next days. All details at https://dsn-traveller.dsn.scc.kit.edu/, room at #dsn-traveller:dsn-traveller.dsn.scc.kit.edu.

Synapse

  • GDPR policy management is welcomed in by Synapse 0.30
  • Means we get server notices too!
  • Explosion of Python 3 activity from notafile & Amber (hawkowl)
  • andrewsh has prepared a Debian package for the 0.30 release.

Dendrite

  • Anoa is on the case, having joined the core team on Monday - Dendrite is already sending events to ASes! Meanwhile APwhitehat is hacking away on his GSoC projects!

Spec

The Matrix Spec Change Proposals list is populated, popular, and under discussion at #matrix-spec:matrix.org. There are multiple issues ready to review, for example: TravisR is calling for attention on MSC1256: "Custom emoji and sticker packs in matrix".

New Rooms

GSOC

Last week I promised an update on the state of the various GSOC projects in the Matrix Ecosystem. There is activity happening but other than what's been discussed above we'll wait a week or two for more detailed updates.

See you soon

As always, if you have things to say, projects to advertise, or anything else, ping me or visit #TWIM:matrix.org. I'm keen to get everyone included and keep this community enthused about all the work going on in the Matrix ecosystem.

Check out this week's Matrix Live: