DSN Traveller

If you’ve spent any time using Matrix public rooms, you’ve probably seen the bot DSN Traveller. This is a post-grad project from Florian Jacob, an informatics student at the Karlsruhe Institute for Technology. This week, Florian handed in his thesis on Matrix!

In summary, I could show that Matrix has few large but many small servers. Large servers reduce the overall network load, but a significant fraction of the load is concentrated in them. Introducing more small servers would further increase the load concentration. The Matrix event graph as a Conflict-Free Replicated Data Type showed to be well-suited for reliable messaging and history synchronization, and is applicable beyond Matrix.

I’m now working on a scientific paper on the results, which will boil down the more than 80 pages of the thesis to something much more digestible. 🔬 You’ll hear it in TWIM when that is finished!

Room for discussions: #dsn-traveller:matrix.org
Website wtih more information on the DSN Traveller: https://dsn-traveller.dsn.scc.kit.edu/

This really is exciting stuff! The thesis will be made available online in the future (we’ll post it here.) Florian is also hoping to continue his work into Matrix research:

I’m currently in the process of trying to secure funding for a doctorate with Matrix as the topic, as that’s where I can proof experience.


All this talk of academia led Mathijs and Cadair to create #open-science:matrix.vgorcum.com, room for discussion of Open Science topics.

Half-Shot IRC Connection Tracker

As you may know, although he’s now back studying for the final year of his Computer Science degree, Half-Shot will continue to dedicate some time to bridge maintenance. He’s been working on IRC Connection Tracker, the next gen bridge for Matrix-IRC:

The IRC connection tracker has had yet more code and love applied to it. The headline changes are:

  • We now have a fully working IRC client that can connect to an IRCd, join channels and chat. These client’s persist over > the lifetime of the service.
  • There is a tool included with the service ircctl which allows you to spawn and use connections en masse. It also lets > you list the state of the currently connected clients.
  • Work has just begun on a client library for connecting this up to the bridge, but should be swiftly completed thanks to…
  • A brand new spec website in the works for describing the protocol (thanks Brendan for pointing me in the right direction)

Spec docs: https://half-shot.github.io/irc-conntrack/
Repo: https://github.com/Half-Shot/irc-conntrack/
Room: #irc-conntrack:half-shot.uk


Alexandre Franke has the handle on Fractal, the Matrix client for GNOME:

This week in Fractal, more refactoring and small bugfixes. About 50 commits by 5 people, one of which made their first contributions this week (congrats Rasmus!).

Julian Sparber, who was part of GSOC 2018 on the Fractal team, has been working on Room History:

The room history refactor I was working on for fractal is upstream, now we can start to improve how messages are displayed and make the loading of older messages better.

Julian is also pleased to still be heavily involved with Fractal outside GSOC.


Synapse was released with Py3 beta support: is an interesting release. On the one hand it contains the usual bug fixes and performance improvements of a point release, but it also our first versioned release where monolith installs can be run under Python 3.5 and 3.6! Python 3 support is very much in beta, so please be cautious but if you would like to try running under a py3 environment we’d love to get your feedback.

Check out https://hub.docker.com/r/avhost/docker-matrix/tags/ for Python 3 docker images of Synapse, look for the v0.33.5.1.dev.py3 tag.

Says Mathijs:

it is functional, but much like python3 support it is still a work in progress, hence the larger size

Matrix on Hyperboria

jcg has set up hypertrix.ovh:

I spent last night setting up hypertrix.ovh, a matrix server only listening on Hyperboria, a cjdns based end-to-end encrypted IPv6 overlay mesh network. I’d be glad if someone could be found to peer and federate with me there! Registration is open, but your client needs to be connected to Hyperboria to be able to talk to the server.

If you are currently using Hyperboria, go join hypertrix.ovh, or start your matrix server listening on it, and go chat to JC!


Lots of discussion about this project, specifically the question of how to efficiently render Rich Text. macOS does not make this easy, so a solution being considered is to use a WebKit for room rendering:

WebKit has the advantage of being super super fast on macOS, and also very low overheads
The current approach uses Cocoa NSTableViews and it’s horrible because Apple clearly couldn’t decide how they wanted them to work and therefore it’s not very optimised
Moving to WebKit only adds about 16mb to the RAM usage and redraws far faster than the NSTableViews can when resizing etc, and we’ll save a lot on the text formatting too which currently is a bit of a mess

Cadair and Half-Shot on the Slack Bridge

Cadair has been helping Half-Shot with bridge maintenance, specifically by contributing to matrix-appservice-slack.

matrix-appservice-slack is a Node project, built on matrix-appservice-bridge, which is designed to bridge messages and metadata between Slack and Matrix. These updates:

  • Improves pills substitutions to use the new slack mentions
  • Add Gitter style edit bridging
  • Adds a config option to specify the directory the user-store.db and room-store.db files go in
  • Converts slack snippets to inline code dumps in matrix

ma1uta tests for client

ma1uta has been adding tests to jmsdk.


Black Hat has been working on the client formerly-known-as-Matrique: Spectral:

I added elevation shadows for some components, such as message bubble, panels, etc.

Native Tor onion service enabled for matrix.org and riot.im

Cloudflare now provide Onion routing, this service has been enabled for matrix.org and riot.im. Cloudflare have a thorough explanation which is worth reading: https://blog.cloudflare.com/cloudflare-onion-service/.


September was mainly spent cleaning up loose ends on the Spec after all the releases at the end of August, and catching up on the never-ending maintenance burden of improving Synapse.  However, in October the plan is to to go back again to working full out on the S2S r0 release. Wish us luck…


  • Lazy loading members is now on by default on riot.im/develop – reducing Riot’s RAM by 3-5x.  Please give it a go and test it before we ship it in Riot 0.17 (probably next week) so we can iron out any last bugs (which will probably look like user profiles going missing)
  • Lazy loading also ships by default in Riot/iOS in Testflight 0.7.4 – if you want in on Testflight let us know in #riot-ios:matrix.org and we’ll share an invite link!
  • Lazy loading in Riot/Android coming real soon now; it’s behind a labs flag on the develop branch if you want to experiment.
  • Travis has started attacking the Riot/Web ‘First Impressions‘ project (starting with unbreaking onboarding in Riot/Web when GDPR consent is enabled)
  • Lots and lots of UX work from Nad on E2E, Communities, Onboarding and the overall redesign, complete with a redesign workshop with Jouni.
  • Aiming for end of Oct for first cut of redesign to be live as an experimental branch on riot.im.
  • Lots and lots of E2E implementation work in general; backups, cross-signing, and verification.

The end is nigh!

But only for this blog post! Check out Matrix Live below, and we’ll see you back here next week. :D