Telodendria, the very-much-a-work-in-progress Matrix homeserver written in C, has undergone some major architecture changes that make it more robust, more maintainable, and more feature-complete. Of note are these new features that came about as a result of the changes, though there are many more:
TLS: We now have full TLS support for both the client and the server. Take your pick of OpenSSL or LibreSSL, or easily add support for another TLS implementation using our simple I/O API.
Admin API: Work on the administrator API has begun. This includes implementing user privileges, and moving the program configuration to the database so it can be managed with a simple JSON API.
We have also done a little work on the Matrix specification:
Account Management: Users can now change their passwords, set display names and avatars, and get information about their account.
User Interactive Authentication (UIA): UIA is basically complete, I’m just working on wrapping up the web fallback pages. You can now use registration tokens to register for accounts on a Telodendria server as well, though as of the time of my writing this, these tokens can’t be created through the Admin API quite yet.
Almost all of Client Authentication is complete and we are almost ready to move on to the core of the Matrix specification—rooms and events.
🔓 End-to-End Encryption is significantly more reliable in Construct this week. E2EE had always been flaky, but it was never clear before where it was going wrong.
⛏️ The ice broke earlier this week when I noticed in a small corner of an Element dialogue that my device_id was being cut off at its : character. After simplifying the device_id grammar things started to light up green again. I was then able to work through a standard list of bugs, ancientcode-rot, and a couple of incompleteendpoints.
🔐 All of this results in robust encryption sessions that survive clear-cache and reload, proper key backups without old sessions hanging around, and interactive verification without random cancellations. At the time of this writing, there is still one remaining hold-up with device verification for cross-signing so this week’s dockers might not finish building until mid-Saturday.
🙋♂️ I’d like to thank Giovanni Bottaro for tracking down an issue leading one of the patches above.
🙋 I’d like to thank qg for tracking down a rocksdb-related bug late last week right after TWIM. This fix has already been shipped in the latest Construct.
Don’t keep your ❤️ for Construct a secret. Join #test:zemos.net to encrypt everything else.
The prototype implementation of MSC 3981 is finished and the first round of feedback is positive.
We’ve extended dev tools - now you can see dev tools from the room list meaning you don’t have to go into a room in order to access it .
Improving notifications in general is also still in progress, next week we’ll be mapping push rules to improve settings pages and make them simpler for all users.
Our improvements to accessibility continue to be delivered also which we’re very excited about.
Element version 1.10.11 is incoming with mention pill support in the rich text editor, bug fixes and performance improvements. We have also made various improvements to the timeline UI, improved our crypto stack and saw the first version of slash commands suggestions
We have fixed various issues around sliding sync, improved notification handling and various root components
We are making very good progress on OIDC and invitation support while work continues on media uploading and the room creation, room detail and user detail screens
Element Android 1.5.32 has been released and will be available soon for everyone. It includes a fix for the double read receipt observed on the timeline.
On ElementX, we are making progress on Oidc support, we are improving the room list and the timeline rendering, user will be able to ignore and un-ignore other users, the app can now list invitations and the user can accept or reject them, and lots of other technical features like feature flags have been done.
Messaging Layer Security (MLS) is an IETF standard for end-to-end encryption in messaging systems. We’ve been working on adapting it to work with Matrix, and implementing a proof-of-concept in Element web. You can view an demo of some of the early progress at https://scitech.video/w/sfMitVx1Zej4Yvvu3fAK5B, which shows creation of an MLS group and exchange of encrypted messages. But things are progressing, and this demo is already out of date. Keep an eye out for more demos.
After having received feedback from the Matrix and Elm community on the Chess client, it is now time for the final development phase: making the SDK developer-friendly so that a version v1.0.0 can be published.
The Elm SDK has received a large refactor, which includes the following changes:
No more Task types! Everything is now packaged in a Cmd type from a Task Never VaultUpdate type, which means that the Vault type handles all potential complaints for you.
When a Cmd fails and the Vault thinks it is wise to try again, it will sneak that one along with the next Cmd you’re planning on giving to the API. Feedback on this behaviour is welcome, this might still change before version 1.0.0.
Greatly improved documentation
The current plan is to implement filters so that the SDK will be butter smooth sailing through that endless initial sync. There’s still a few ambiguities left in the Matrix spec that are holding the SDK back as a pure and immutable language, but we’re slowly getting there.
For demo purposes, here’s a demonstration of how to get all named Matrix rooms from your client:
Join #ping-no-synapse:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.
Rank
Hostname
Median MS
1
777.tf
292
2
zemos.net
520.5
3
dendrite.matrix.org
624.5
4
herkulessi.de
682.5
5
dendrite.kootstra.frl
975.5
6
matrix.org
1246.5
7
test.zemos.net
1741
8
midnightthoughts.space
2755
That’s all I know
See you next week, and be sure to stop by #twim:matrix.org with your updates!
The Foundation needs you
The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.
It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.