Hi,
Candy wrote:As I said above, I'm aiming too high. That includes only considering stuff that's in full PD as fully open, the rest has at least one string attached, attempting to recreate everything and to understand everything to the lowest level I can comprehend myself. I'm partly satisfied with make, mostly satisfied with gcc (but at the moment not at all with ld), mostly satisfied with yasm and somewhat satisfied with common shells. I intend to recreate them all, plus OS kernel, libraries and so on. All together until it forms a full system again that isn't built layer on layer.
I guess I'm also aiming high, but in steps, where the first step is a working kernel and boot code (followed by generic device drivers and required system code (CLI, GUI, file systems, etc), my own emulator, my own tools on top of that, and finally many more device drivers).
For the first step the difficulty isn't so much the goal, but the details - a modular micro-kernel with formal specifications for all the interfaces between each "boot module", "kernel module" and the rest of the system; allowances to become the foundation of a peer-to-peer distributed system, support for NUMA/SMP/hyper-threading, fully asychronous "everything", provisions for centralised administration of the distributed cluster, support for headless and/or diskless machines, security, self-testing, hardware auto-detection and as much self-configurations as possible; all hopefully done with high quality code, supporting documentation, no "cut & paste" GPL/BSD/PD code and minimum reliance on third party tools.
So far, one thing I've learnt is that the longer it takes the longer it will take. For example, if I worked 60 hours a week on it I could probably finish the first step in 2 years, but if I only work 30 hours a week it might take 6 years, and at 15 hours a week it'd take 18 years. This is mostly due to the underlying hardware changing while you're trying to support it.
The other thing I've learnt is that for me, "aiming low" takes longer, because half-way through I decide to add support for some other feature...
I just wish I had a time machine, so I could go back to when I first started this project and change my initial goals - if I had enough foresight, I would've been finished the first step by now.
Cheers,
Brendan