NodeJS as an… Operating System?

NodeOS appeared back in 2013, but has recently been making strides in the OS communities. Could it be an Ubuntu server competitor?

“selective focus photography of white USB port” by Hello I'm Nik on Unsplash

NodeOS was created in 2013 by Jacob Groundwater. It was created with the primary thought in mind, and one that I’m currently exploring myself: what can NodeJS actually do?

Well as it turns out, it can run at the core of an operating system, and pretty well at that.

The Software

NodeOS is written on top of the Linux kernel and as such, it can feature many of the wonderful programs we have come to expect from any modern Linux installation. But NodeOS has the advantage of utilising NPM, the NodeJS package manager, as the default installation medium. This means you have all of the useful javascript libraries that you use in every day development, right at your fingertips.

The Hardware

What’s more, it was developed to be run basically everywhere, from virtual machines to cloud based deployments, to the brick and mortar machines we’re sat in front of. I find this somewhat unique, as most OS releases are tailored towards one of these environments in my experience, but NodeOS finds itself as a jack of all trades in this regard.

The operating system itself has a low overhead, low enough to be run on a Raspberry Pi. This minimal hardware requirement, when combined with the single threaded nature of NodeJS (basically), means you can run an entire development cycle without ever really having to worry about any hardware requirements or concerns, save for disk size and space. This has the added bonus of increasing development lifecycle speeds, as less consideration needs to be given to the limitations of the hardware and operating system.

The Problem

While NodeOS is a brilliant idea and it certainly is a unique approach to the future of javascript development, I feel hard pressed to call it a fully fledged Node Operating System. I would instead think of it as a highly customised version of a Linux installation, with a very unique set of tools installed that allow for increased speed and execution when developing for the web, and when running NodeJS websites. It isn’t so much a new kernel in itself (the core of an operating system), it is instead a set of interfaces set up for a developer to use that interact very well with the kernel, so the user doesn’t have to.

I love to tinker as much as the next developer, but I don’t see much point in reinventing the wheel with this project. That is, I see no reason why the linux kernel needs to be rewritten into JavaScript, and I can’t think of any advantage in doing so. And I don’t believe that the creators set out with the intention to develop a new operating system from scratch, I think they instead set out with the intention of making NodeJS the core feature of an operating system.

But none of the above is to say that NodeOS is misnamed and that it doesn’t have it’s place; it certainly does. I am saying that I would rather think of it as an environment. However as always I’m a fan of abstraction and removing the need for the developer to interact at a low level with a server, especially during the development phase (as opposed to production).

Side Note: NodeOS reminds me of a similar project I encountered back in 2016, called OS.js. OS.js was (and is) a project that was set up with the aim of emulating an operating system within the web browser. From the demo and a quick read of the documentation, it seems to me that it does this perfectly well.

The Future

So it seems that yes, there is a NodeJS operating system out there, and one that could potentially be running many websites we encounter right now. I wouldn’t feel comfortable calling it a competitor to Ubuntu or similar at this stage, but with a solid team behind it and an ever growing codebase, who knows if my answer will change in a years time. Let me know what you think of the NodeOS.