Combuster wrote:
With top-down, where you build everything for the precursor OS first, you are equally liable for locking yourself in to the architecture of that platform and not making any real difference. There's no one true way in going about this.
This is definately true. Especially if you are relying on standard api's for everything. One repeating pattern you'll notice throughout history is that the operating systems almost always are written in a different language than the platform they are developed on.
Consider C. It was written specifically for Unix systems, and many of the system calls reflect that. There are many problems that can been seen in hindsight, but because the tool allows systems programmers to do the things they need effectively, we're naturally inclined to port libc rather than roll our own. If your kernel is tightly hugging the C language, then you're knocking off Unix.
Now, I'm not saying you have to go out and create a new language if you want to be innovative. Just put time into creating an API that suits your needs. For now, it can simply be a wrapper around libc, but when you write your kernel you can make it native.
@alexfru, when I used the word "platform", I'm talking about the environment, not the architecture.