Mathias Buus's logo

I am an npm module author. I've written close to 500 modules. Just this past week I've published around 10 new ones. Modules I maintain have been downloaded more than 750 million times. Lots of my close friends are module authors as well. You could say I'm invested in the Node.js ecosystem. The priorities of Node has changed in the past years. I love Node. It is a flexible platform that makes it easy to write a range of different programs. It is used for http servers, bittorrent clients, build tools, next generation p2p social networks, desktop apps and lots more! In my opinion, Node works because of two things: It has a small core with modules to interface with things like the file system, network, etc. It has npm which gives you access to more than 350.000 modules. The Node module system is built with backwards compatibility as a first class feature. It allows you to use many versions of the same module. Core modules, unfortunately, do not have this feature. When you require a core module you get the one that was shipped with the version of Node you happen to have installed. Effectively this makes Node core a "peer dependency". If you are not familiar with the term, it basically means a dependency that is given to you but that you cannot version. You just have to deal with the one you've been given. When writing modules, peer dependencies are especially frustrating. You cannot rely on new features being available as different users will have different versions of Node installed. Even more problematic, if you make a breaking change to a peer dependency you risk breaking old stable code. Luckily until recently Node core has been somewhat stable. Old code tends to just work. Innovation shouldn't come from Node core. It should come from modules. It should come from modules because they are easy to publish and they are extremely easy to update. We bump the major version when we want to make breaking changes and it doesn't break any old code as that'll just keep depending on the old version. Core doesn't have this luxury. Core's job is to be boring: never break, upgrade v8, and be fast. Going forward I hope we make a few changes to the way core works.

CypherHunter Plus

Subscribe to distraction-free reading, and unprecedented access to our data.