Insights Into Node by Numbers 2018
We’ve been providing these annual insights since 2015, and I’m pleased to present the analysis and data for the 2018 edition of Node by Numbers. Aside from sustained growth in Node.js adoption during 2018, analysis of the past year shows the impact of greater stability in the larger Node ecosystem.
In addition to data sourced from Github, I’ve included data from the 2018 Node.js User Survey in my analysis, leading to some interesting conclusions.
Interesting Trends in LTS
Three long-term stable (LTS) release lines were actively supported during 2018. Although Node.js 8.x “Carbon” went into Active LTS status in October of 2017, it didn’t surpass the Node.js 6.x “Boron” release line in terms of raw download numbers until late January. However, interest grew steadily thanks to the popularity of features like Async Hooks, which allows users to track any asynchronous activity in an application. By October 2018, as the Node.js 10.x “Dubnium” release line became the Active LTS series, Carbon had become the most-downloaded LTS series.
What’s more, Carbon isn’t just popular relative to the other LTS release lines; at its peak it was downloaded 692,869 times in a single day; nearly double the peak day for the Boron LTS line, which was downloaded 388,417 times on October 25th, 2017.
As Node.js continues to make improvements, the dependencies to Node.js are also evolving and improving, boosted by interest and adoption. Significant improvements to Google’s V8 engine landed in 2018, resulting in raw performance improvements of up to 20% in Node.js, making the adoption of Node.js 8.x much desirable. It bears mentioning that the Carbon release line is one of the most-tested and stable releases to date, making it a wise choice for use in production environments.
Adjustments were made to the Node.js LTS release schedule to move the 8.x release line to maintenance LTS status in January of this year, and maintenance for this line is scheduled to cease in December 2019 to align with the scheduled End-of-Life for OpenSSL-1.0.2.
After being surpassed in popularity by the Carbon LTS series in January 2018, downloads of the Boron release line steadily decreased through the remainder of the year, even as the Node.js 10.x “Dubnium” release line, which entered Active LTS status in October 2018, steadily gained popularity. This is an encouraging trend to see in action, as maintenance support for the Boron release series is scheduled to end this coming April. As we noted last year, the adoption of new LTS release lines remains a steady march, rather than a sprint, indicating that Node.js is being used in more mission-critical production applications, thus requiring a more cautious approach by users to major version upgrades. The Dubnium release series included an updated version of OpenSSL, allowing for better security and faster SSL handshakes. More on what was included in this release line will be covered in an upcoming blog post.
While the Node.js 4.x “Argon” LTS release line officially reached end-of-life in April of 2018, downloads of this and even the preceding Node.js 0.10 and 0.12 release lines (not shown) have declined but are not zeroed out. This may be because some teams made heavy modifications to these early versions of Node.js and are hesitant to upgrade, or it could be a bit of old-fashioned nostalgia in the community at large. Whatever the reason, we strongly recommend sticking with actively-maintained LTS release lines for all production applications using Node.
As always, more information on the Node.js release schedule can be found on GitHub.
Generally, overall downloads of all Node.js versions combined continue to grow, with the total recorded downloads up by 40% year-over-year. On average, Node.js was downloaded more than 1 million times each day of 2018 (368,985,988 downloads total). To put this in perspective, Node.js celebrated its first day with over 1 million downloads on April 25, 2017, hitting this milestone number several more times in October, November, and December of the same year.
If you look at the downloads by OS in the chart below, you’ll notice that Linux is by far the most dominant OS. Since Linux is predominantly a server OS and a production environment of choice for many teams, we can interpret this number as an indicator that more teams are using Node in a production environment.
The Downloads by OS (from nodejs.org) has the more interesting pattern here. Let’s take a look. Although Linux has grown a bit in the past 3 years, going from 57% in 2015 to 78% in 2018, MacOS downloads have remained at a constant 5%, while the Windows OS share of overall downloads has decreased from 36% in 2015 to 17% in 2018. We think that generally Linux remains a leader, not only because it is the environment of choice for production, but also as Windows 10 users may be developing in the Ubuntu mode in Windows 10, giving Linux numbers a boost. In spite of this, we still believe Linux may be underrepresented in the above chart - larger enterprise organizations are likely not inclined to download directly, there are a lot of distros that have it available in their package manager.
Similarly, MacOS is likely more popular among developers working on local machines than this data indicates. We suspect that the relative dominance of Linux compared to MacOS downloads can be attributed in part to the frequency with which tools like nvm automatically download Node.js, which may artificially inflate the number of Linux downloads reported.
Core Contributor Trends
The number of new contributors to the Node.js project dipped slightly as seen below, with 578 newly-added contributors in 2018 as opposed to a whopping 741 in the previous year. While the growth in new contributors has slowed somewhat, Node.js maintained a healthy average of just over 107 monthly unique contributors this past year, and in both 2017 and 2018 the months with most core contributors were October and November—following the annual Node + JS Interactive conference and clustered around the release of a new Active LTS line in both years. While this stat is worth watching closely in the future, the count of unique contributors to Node.js Core remains healthy, and we believe this to indicate trends comparable to any mature stable platform with a steady pace of improvements and innovations.
After years of steady decrease, the average number of releases per month ticked up slightly in 2018 to 5.25, compared to an average of 5.08 per month in 2017. Although the Release working group has done an overall amazing job applying rigorous planning and a detailed schedule for Active and Maintenance LTS release cycles, the total count of releases for the year also includes changes in Current (non-LTS) release lines as well as unscheduled but essential security updates.
Besides numbers related to Node.js itself, we also notice a few interesting trends based on the third annual Node.js User Survey conducted by the Node.js Foundation, published early in 2018. Users are most frequently deploying Node.js in production in the cloud, with nearly 1 in 3 respondents running production Node.js on Amazon Web Services alone. Surprisingly, other major infrastructure providers including Google Cloud Platform and Microsoft Azure are comparatively far less popular as either production or development environments for Node.
As we examine these trends, we’re excited to see continued growth in the adoption of Node.js as a technology, and the many contributions of the Node.js community and broader ecosystem are what makes this possible. We look forward to continuing to support the growth of Node.js by bringing you new tools and solutions that allow you to fully embrace Node.js as part of a modern technology stack.