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
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 refering 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.
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.
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.
This week we welcome Bruno to the Riot team, he’s off and away working on getting integration tests set up.
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.
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.”
Max has been working on VoIP bridging between Matrix and regular phones using Freeswitch:
We have successfull 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.
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
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!
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.
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.
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.
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.
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.
Last week we linked to Julian‘s blog notes on the User Settings panel – this has now landed in Fractal master.
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: released an RC for 0.15.5. This RC includes some small bugfixes.
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.
Working on perf. On stability too (like killing build warnigs). Users can now re-request keys when they have UTCs.
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 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 ligth 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 compability 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:
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.
Naming things is hard. neilalexander‘s previously nameless client and Matrique both came under discussion for naming issues.
benpajust discovered VS Code markdown preview and can’t believe the time he wasted before
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.
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
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)
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:
and my friends can register.
these token can be restricted as one time usable only or by an expiration date.
Last week dendrite was filtering events from user’s into seperate 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 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.
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!
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
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).
mtxclient E2E progress
Big E2E progress from mujx, developer of the nheko client on his project mtxclient. As 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.
Plaintext view to be able to click long links and such
Fixed some bugs
GDPR-capable release! 0.15.4 out today
Various bugfixes and performance regressions.
Sticker sending is ready modulo some CSS bugs; we’ll get it pushed shortly.
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
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.
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
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-devhere.
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.
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.
Work continues in the Ruma space. This week saw the release of
ruma-events0.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.
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.
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.
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!
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.