People love LEGO. It’s fun, simple to use and fairly intuitive to build some amazing things with it. After all, Google used it to build servers, and i heard that they built a house with it, so it’s got to be fantastic to build cars or airplanes out of it, right?
Well, no. No it’s not.
Turns out that LEGO does have some rather significant issues once you start really going up in scale and complexity. You see, PVC plastic is not really that good at containing high pressure, high temperature reactions or maintaining structural integrity across the friction joins.
So, that kinda brings us to Node. Don’t get me wrong. Node is a fun system to work in, and folks can build some fairly impressive things with it, but i can easily predict that building an operating system out of Node will pretty quickly end in tears.
Heck, building an operating system out of nearly any single language is damn hard; C being about the only one and even there, a fair bit of code skirts awfully close to assembly. Go dig into a device driver or two and you’ll see what i mean.
But i suppose this gets back into the whole “What is an Operating System?” discussion again. i tend to take a fairly large view of an Operating System. i believe includes everything that makes a computer able to run, From the device drivers (which provide standardized calls that allow interaction and control of things like memory, keyboards, disk drives, et al) to the Kernel (which provides communication and management for device drivers, multitask management and monitoring), and i’ll even go so far as to include a shell app (which provides a means for users to direct the Operating System to conduct tasks). Even with those broad catagories, i’m damn sure i’ve missed some elements (e.g. signalling and common error logging). It’s possible to create a toy operating system that does much of this, but it’s going to be just that, a toy.
i’ve got a RaspberryPI happily humming along on my network. It’s more powerful than the first few computers i bought, but i’m not going to be doing media rendering on it. (Frankly, compiling vim on it was pushing the CPU a lot harder than i thought it would.) i’ve got other, better tools for the job.
And that’s kind my point. When you find something that’s fun, it’s very seductive to keep wanting to use it. Why not? It makes you happy, after all. The important thing to remember, though, is to always take a step back and consider if it’s actually appropriate. Hammers are fun tools as well, but really shouldn’t be used for brain surgery.
That said, i don’t see why you couldn’t build a shell app using Node (or some other JS library) that calls into the actual operating system and remotely calls apps. i wouldn’t want to do the security review for that, but that’s just me getting ahead of myself.
Then, maybe work on things like multi-thread support and isolated memory support.