ToaruOS 2.0, and the long-term roadmap

Once again, it has been quite some time since I last published a new blog post, and quite a lot has changed with ToaruOS.

Misaka achieved feature parity with "toaru32", SMP support stabilized to the point where I now run all of my test environments with multiple cores, the new network stack grew to finally include some support for hosting servers, and Kuroko gained a multitude of critical features. It seems like ToaruOS 2.0 is right around the corner. So, what exactly is left to do?

I first started thinking about "ToaruOS 2.0" even before 1.0 was released. I had so many things I wanted to do, and it seemed so far off, it became a dumping ground for every major functional improvement. Readers will already be familiar with two of those: x86-64 and SMP - the two I'm quite excited to say have been achieved. But looking back at my old planning documents, and even my newer planning documents, there are a number of features I wanted to have that will sadly not make it in. USB support is likely the most notable: As much as I've poked at an XHCI controller driver, there's too much left to do before even basic HID support is ready. AHCI/SATA disks was another thing that has now been pushed back. I think my main mistake with 2.0 was grouping all of these things together with the 64-bit kernel. That project alone justifies the major version number bump, and while I've been looking at 2.0 as an end goal it really needs to be a checkpoint.

So USB will be a target for 2.1. AHCI for 2.1.something. Possibly even an aarch64 port for 2.2. Where does that leave 2.0? If x86-64 support has landed, if SMP support is functional, if the OS is just as - if not significantly more - capable as it was before even the NIH project, what's still on the docket? What's the hold up? I keep finding new things to distract myself with - most recently, Misaka got a whole new debug logging interface so it can spew text at startup (even though startup takes two seconds, or less); the bootloader has seen a number of improvements no one actually asked for... and yet, the version number remains at 1.99.8 as of today.

The last remaining thing I want to have before 2.0 is listening TCP sockets (and probably also packet resending). Misaka's network is a completely new affair with little relation to the one found in toaru32, and while its predecessor also lacked TCP server support the new stack should be much more capable of the job. I have had another project, something that even predates ToaruOS, that I have been waiting to be able to merge with the OS: A web server. Once ToaruOS can run that, it will be ready for 2.0.