March Status Update

Hey everyone!

As you might have noticed, there's been a lot of activity in the last week or so, and I'm hoping that will continue, although I am getting busy again so I'd expect things to slow down a little bit.

  • The Refactor: The string-memory-management refactor actually went really smooth. There wasn't a ton that had to be changed; just a few low-level things and everything else clicked into place. The difference is incredible though; the code is a lot simpler, and writing new code is so much easier than it was before.
  • Ports: A few fixes were committed that make Telodendria more portable, particularly to barebones systems that implement just enough POSIX to be useful. As a result, I was able to build Telodendria on Haiku OS and Android. There's talk of a MINIX port, but that's no small task, as even the MINIX porting documentation says that "porting software to MINIX from Linux or FreeBSD is non-trivial in most cases..."
  • User Interactive Authentication: The Uia API is now pretty much stable, although there are plenty of TODO comments scattered throughout. It works for single-stage flows, but needs a bit more work for multi-stage flows, and right now we have only implemented dummy and password authentication. Next up to work on is registration token authentication.
  • Bug Fixes: A number of bug fixes have been made throughout the code. The most notable fixes were made in the JSON parser, which now properly handles empty arrays, and prohibits trailing commas.
  • Static Pages: Matrix homeservers are expected to serve a number of static HTML pages. I haven't implemented any of the user-interactive authentication static fallback pages yet, but Telodendria now has a login fallback page that should be fully functional, and as a bonus, the JS has been made to work with LibreJS. I've built out an Html API that does the hard work of building HTML pages so we can just start dumping HTML, CSS, and JS to the client without having to worry about all the boilerplate HTML stuff. One thing you'll notice is that all static pages are baked into the C source code as string literals, instead of loaded off the filesystem at runtime. The reason I've opted to do it this way is twofold:
    • I want Telodendria to be as self-contained as possible.
    • It avoids the some of the security pitfalls of running a web server.

We are well on our way to having client authentication completed. Registration, login, and basic logout are fully functional. We just have to implement /_matrix/client/v3/logout/all, finish up user interactive authentication registration tokens, and add a few trivial endpoints for deactivating users, changing passwords, and things of that nature.

I've got plenty of other thoughts on stuff that is in Telodendria's future, but I think that's good for this week. As always, if you like what's going on, you're more than welcome to donate (links at https://telodendria.io), or just say hi in #telodendria-general:bancino.net.

Previous Post Next Post