The number and variety of npm packages were always a topic for irony and ridicule. If you are not getting what I am talking about, check out the is-odd npm package with 76 million downloads, is-positive/is-negative packages, literally a package to bless your code and many others. While this seems funny, this poses a serious problem, which may lead to negative consequences. But this time, the community pushed even further and introduced NodeOS, an “operating system powered by node.js and npm”. I am going to explain why this is not true and what it says about the JS community.
Powered by Node.JS and npm?
What problem does it solve?
Unfortunately, this is just not true. There are no use-cases for NodeJS CLI over bash, npm over apt-get, an interpreter over an operating system. By letting go of a regular Linux shell (which was not done in any other Linux distribution (!)), you are letting go of everything people love Linux for. Say, for example, you launch your Express.JS backend in a docker container running NodeOS and it crashes. You attach to the container to investigate, and then what? Yes, the NodeOS team reimplemented some core commands such as cd, ls, cat, the full list here, but why reinvent the bicycle? The conventional versions of these exist, they were tested and used for decades, they were perfected beyond NodeJS’s wildest dreams, what NodeOS possibly has to offer here?
Maybe it is performance?
Sounds reasonable. A Linux distribution running NodeJS as PID 1, it should probably be faster at running JS applications. Only two issues here:
There is no mention of a performance boost on NodeOS’s website, nor any benchmarks. For an issue as big as performance (especially in the era of cloud computing), this looks sketchy. And it would be reasonable for a beta version, but it had reached version 1.0!
Programs such as bash, which is used as a command prompt in most Linux distributions, grep, which is a search and filtering tool, apt-get which is a package manager, etc, were written in C (1), and were written for computers much, much slower than the ones we have now (2). I seriously doubt that some JS developers could write something that would perform better.
Harm to the open-source community
Not only this project is pointless, but it also hurts the open-source community, despite being open-source itself. The nature of this paradox is that instead of helping the maintainers of the Linux kernel itself and addressing specific challenges important to JS developers, all this effort is used to create yet another JS package/Linux distribution. Right now we are left with thousands of abandoned projects/libraries/operation systems for this very reason: developers choose to reinvent the wheel, fueling their egos, instead of working for the greater good.
Then how come?
Beats me. Not only it has 6.1k stars on GitHub, but it is also said to have won the 9th National Free Software Championship. This says a lot about the JS and FOSS community, and, being a part of it, I feel uneasy and shamed. The lowered bar for entry is good, but we should always try to be the best developers we can be and not appropriate other’s achievements. This reminds me of a Russian programmer who renamed Ubuntu to Bolgen OS in its source code and introduced as a revolutionary new operating system back in 2009. We were laughing back then, but it does not seem so funny anymore.