Mícheál Ó Foghlú, Red Hat CTO for mobile recently engaged in a discussion with the Computer Weekly Open Source Insider blog as to why we have seen such exponential growth in Node.js at this time.
Specifically, the questions posed to Ó Foghlú centred on:
• How Node.js enables developers to be 30 times more efficient when developing mobile apps.
• How Node.js is contributing to a new “mindset” when it comes to enterprise mobility and agility.
The below text is all attributed to the Red Hat CTO himself:
When Progress Software acquired Node.js player, Modulus, last June, Progress’ CTO, Karen Tegan Padir stated that the Node.js community is growing faster than that for any other language.
We would strongly agree with that statement. Where the exponential growth is coming from, is in the supporting ecosystem around the modules that are supported on Node. One of the key things that Node has that other communities don’t have is in the tool called the Node Package Manager, the npm.js (https://www.npmjs.com/), which is really flexible and lightweight and packages the modules that you need for each individual application as a separate dependency tree.
So you don’t get the dependency issues that you get with a lot of languages, where ‘it worked on my machine because I’ve got that library installed, but you’ve got a different version installed so it doesn’t work on yours’, for example.
190,000 modules and counting
Each program has all of the dependencies bundled individually for that program, so it’s hugely collaborative and the Node module community has grown to nearly 190,000 modules in the five years of Node’s life, which is more modules shared within the Node community than the entire Java Maven Central or the entire CPAN module.
Both of those communities have had ten or twenty years of activity behind them and the Node ecosystem is bigger than either of those already. The central npm.js registry reached 2.5Billion downloads last month.
Immature in comparison to a mature stack like Java
In the context of mobile app development, where pressure is on to create and deploy apps at ever faster rates and where mobile developer resources are scarce relative to app demand, this is highly attractive. However, even though Node is growing rapidly, it is still relatively immature in comparison to a mature stack like Java, putting the onus on developers to understand the ecosystem and what it offers.
The formation of the Node Foundation and the governance it will provide will go a long way to address inherent weaknesses that can be attributed to this immaturity. But, in terms of how long it takes to get projects done, Node.js is significantly more productive and that’s only going to get better as the third party ecosystem improves. If it is possible for your organization to reuse some of these open source modules, you can get closer to a solution even more quickly by understanding the ecosystem. So it is worth investing time in understanding what is already there in this Node community.
There are two things driving the growing adoption of Node.js:
1. The mindset of the lightweight approach leading to more productive code, where you have fewer lines of code doing more jobs for you.
2. Secondly, there is this developer attraction to Node. There is definitely a positive buzz around people working in Node.js. You increase your developer retention and developer morale by having a Node team as part of your IT ecosystem. It’s perceived as an exciting, cool thing to be doing, so you create this positive atmosphere in your own company by embracing Node that leads to other huge payoffs.
A low resource footprint
So, those two things combined: the mindset of the developers and the technical advantages of the lightweight approach really come together. It’s probably been best articulated in the new focus on the architecture of microservices. Node lends itself really well to this microservices architecture, because it has such a low resource footprint, in terms of its CPU and computing power and RAM usage.
You can have thousands of Node processes running on a medium-sized machine and it can very efficiently cope with billions of transactions. Very few other language stacks have that level of small flexibility to be able to do that. When you put all that together you get a different mindset to how to solve enterprise IT problems; with a set of developers who are motivated to solve them; with a very fast set of tools that are evolving to help them to do that and this leads to a very, very productive environment.
Mícheál Ó Foghlú writes on Twitter here.