So, it's been six months.
The project was going well for the first 3 months, and I got a lot of things working, but I can't claim that I properly finished. I got bogged down with school and work and other things after summer ended, and fell way off track. The friend who was helping me also ultimately did very little, and I was sort of counting on having some help to get all the pieces working.
At this point, it has enough of a TCP/IP stack working that it can serve basic HTTP requests (purely from kernelspace), can switch to and from usermode, and load files from a CD. Not too shabby for what was effectively 4-5 months of work, but a far cry from a proper UNIX-like system.
Fortunately, I can salvage some good pieces because of the design. The Pinion project is a mirror of the piece of the system that runs in kernelmode and provides threading, paging, and interrupt handling facilities to the rest of the kernel. It's not super-advanced, but it's stable and likely useful as a base for other systems. I'm going to be updating the github repository with the latest version today or tomorrow.
So, here's what I'm going to do: try it again. I've learned a ton about TCP/IP, and have ironed out most of the kinks in the funky Actor-model modular kernel design I was trying to build, and I think I can get it to work this time. I'm going to take an official break for a couple of weeks to get some things in order, then start with a fresh fork of the Pinion base. However, the ultimate goal has changed a bit: what I'm really trying to build is a system that:
- has a full TCP/IP stack
- can serve dynamic webpages
- is modular and extensible, and makes it easy to write concurrent code
- is highly robust/fault tolerant even running C code in a single address space
Whether this is a proper OS, a webserver running on an exokernel, a low-level asynchronous server framework, a standalone networking toolbelt, or just a cool toy may become blurry, but I want to build it essentially from start to finish in at most six months. Otherwise, it's just no fun.