This year I applied for Google Summer of Code again and chose Fractal to work on multi-account support. I got accepted (that’s why I’m writing this), so today I start the coding (and design) period to achieve that.
Any of you who had followed what happened in my internship in 2020 and afterwards might remember that I had the same goal back then. The problem was that the way the app was structured internally made it incredibly difficult to do so without all hell breaking loose. You can remind (or read) the details in my final report last year and what I learned in the process.
After that, I kept on integrating matrix-rust-sdk in Fractal and removing completely the old backend. That was completed in January this year, but after fixing all the shortcomings in the code that dealt with the server (and introducing new bugs related both to Synapse not fully conforming to the official specification and a few bugs in matrix-rust-sdk), I tried to work further to enable the encryption machinery in the backend, but the undertaking to do so and make the UI workable at all was much greater than we expected previously. My #1 concern when I started on this project was maintainability, so I started thinking that probably the only sane way out was to rewrite Fractal, something that I suspected since August when I still was in the middle of GSoC 2020. The fact that GTK 4.0 was just released, its binding crates had better support for using XML templates and subclassing and we already had proof that matrix-rust-sdk could work for our needs made it a very compelling alternative, “just” needing to rewrite the UI from scratch.
This happened more or less when Julian Sparber started working on encryption support, so whatever the choice was, it had to allow him to focus on his task as soon as possible. It was deemed that keeping with the incremental refactors would be much slower for everyone, so Fractal-next got started with proper support from third-party libraries. Julian started working on it, getting a basic chat feature set going on in a few weeks that allowed him to get part of his goal done in parallel. He posted what he did and an overview of the architecture of Fractal-next in his blog. I looked around occasionally just to give some advice at the beginning, mostly concerned with code organization and modules.
One big milestone ahead to make Fractal-next just be Fractal is to reach feature parity. That’s something that Kai will work on as part of his GSoC internship, as he explains in his blog. In the meantime, I will add support for logging in with multiple accounts. I think we won’t clash each other, so we can do our own thing independently.
Hopefully by autumn we should have a really nice release that brings new features that the community has been looking for in a long time and make the project much more future-proof.