Final Report

It's the end of Google Summer of Code, and I've achieved what I set out to do! I want to say a big thank you to my mentors anoa, Nico and red_sky for the help they have given, and to the others in the community who have made suggestions for or comments on this project. I've learnt a lot in the past couple months, like how to work on big codebases within a big ecosystem, why unit tests can be useful, a bit of C++, and how to be on Matrix Live :-)

Links to all the work I've done are below, but in summary:

For more details about each stage, see the blog index.

Of course, there are still a few things to do:


Before the start of the coding period I worked on a couple of good first issues for Synapse and Nheko in order to get a feel for the codebases and workflows.

As the first part of the GSoC project, I wrote an MSC which describes how registration tokens in Matrix would work. I then started work on the server implementation in Synapse. This is the bulk of the code I wrote for the project, and was gradually improved over the course of the coding period. Included is: a configuration option which requires the registration token user-interactive authentication stage to be completed for registration; an endpoint for checking the validity of registration tokens; a fallback web page for clients that do not support the authentication type natively; and an admin API for managing registration tokens. Before I started work on the client implementation, I reorganised the code for the registration page in Nheko to make it easier to understand. I then added support for the registration token authentication type to mtxclient (the Matrix library Nheko uses), and used this in Nheko. When a server requires a registration token, Nheko presents an input dialog where the user can enter one. During GSoC I found out about synadm, a CLI tool for convenient use of Synapse's admin API. Towards the end of the coding period I added support for the new registration token admin API to synadm, which has made token management much easier.

How to try it

None of the code has been released yet, so you'll need to get the latest sources of each project. The Synapse implementation is released in v1.42.0, but for Nheko you will need to get the latest source:

git clone
and follow the installation instructions using the bundled mtxclient.

<- Back to index