by Michael Dawson Updated March 18, 2019 - Published November 30, 2018
Since it was first released in 2009, developers have downloaded Node.js one billion times. Looking at the future, all signs point to increased growth and adoption of the runtime.
IBMers have been involved with the Node.js project since 2012, contributing millions of lines of code, serving in leadership roles across the community, and generally pushing the project and the community forward through our involvement. In this blog post, we’ll take a closer look at how our contributions have gotten us to where we are today and what we envision for the future of the Node core and community.
In 2012, IBM recognized the importance of Node.js and wanted to ensure it was fully supported and integrated on IBM platforms, such as POWER and IBM Z. We ported the community’s existing code, and, while we worked to contribute that port back to Node.js and dependent projects like V8, shipped it as the IBM SDK for Node.js to our customers.
As we contributed ported code back to the community, our team started to get more actively engaged in other work as well, helping with general issue triage and fixes. A number of contributors to Node.js in this timeframe are now IBMers, adding to our collective history and experience with the early days of Node.js.
In late 2014 as tensions rose within the Node.js community over the existing governance model, IBM worked to bring people together to find a good path forward. IBM’s long-standing commitment to open governance allowed us to share the benefits and value of moving towards that model.
Unfortunately, despite our early efforts, it wasn’t possible to resolve tensions within the community quickly enough, and there was a fork of the Node.js project which threatened to fragment and collapse the Node ecosystem.
IBM redoubled its efforts and worked as a mediator between groups with different visions for the future. We championed the benefits of moving the Node.js project under open governance, demonstrating how this model would allow the different groups to achieve their specific goals while working together.
The end result was that IBM, along with other key stakeholders, helped to establish the Node.js Foundation. We continue to be a platinum sponsor of the foundation.
The results speak for themselves. Since the Node.js project adopted open governance under the Node.js Foundation, the project has flourished. The number of collaborators and the pace of innovation and change has rapidly increased.
With the Node.js Foundation and open governance in place, companies and individuals were empowered to step up and contribute to the direction and leadership of the project. IBM prides itself on allowing its people to do just that. A few examples include Todd Moore, the VP of Open Technology at IBM, who chairs the board of the Node.js Foundation and my role as chair of the Node.js Technical Steering Committee. There are many more examples.
Presently, we have members on the Technical Steering Committee, Community Committee, many of the working groups, as well as 10 Node.js core collaborators. Just as important are the contributions of an even larger cast of Node.js collaborators, TSC members and other contributors that spent part of their careers at IBM working on Node.js.
IBMers are very active in the day-to-day development of Node.js, helping to triage, fix, and land pull requests as well as answering questions in the help repo. At the same time, our strategy is to focus on strategic or longer-term initiatives that empower the larger ecosystem.
Examples of our contributions over the years include:
Contributing support for ICU to enable better internationalization.
Helping to develop the community’s LTS strategy and then actively working to implement it.
Building and contributing CiTGM as an additional safety net to ensure that new releases don’t break ecosystem modules.
Fixing how tests run with FIPS support enabled and working to add those tests to the regular Node.js CI runs.
Forming and leading the benchmarking working group. Adding nightly benchmark runs to the community and publishing the data to benchmarking.nodejs.org so that we can track performance, avoid regressions, and evangelize the consistent improvement in Node.js performance.
Championing the N-API effort to give native module developers a stable Node API.
Helping to form and lead the security working group to ensure we have well-documented processes for security releases and that CVE’s are assigned consistently.
Actively working with the community on diagnostic tooling. For example, we contributed node-report and helped with early work on llnode to help customers quickly and efficiently find and fix problems.
Forming the package-maintenance team to create solutions to problems our users face when they depend on a number of key packages within the ecosystem.
In addition to these contributions to the Node.js project itself, we’ve also worked to:
Make it easier for developers to focus on their code while deploying to Cloud Foundry, Docker, and Kubernetes while getting the qualities of service (monitoring, health, etc.) required for production deployments. Watch this video for more information.
Provide enterprise-level support for Node.js, including the open source Node.js runtime and key packages like LoopBack and Express.
Help developers choose modules by providing data on key modules through Module Insights.
Launch CloudNativeJS.io, which includes assets to help developers build and deploy cloud-native Node.js applications via Docker containers and Kubernetes orchestration.
Release LoopBack 4 to enable developers to quickly create APIs to export data from their existing data sources.
As you can see, IBM has been deeply engaged in the Node.js community and we’re excited about where the Node.js community is headed. We plan to sponsor and speak at key Node events and to continue to drive adoption and maturity in the project.
April 26, 2019
April 18, 2019
Artificial intelligenceCloud Foundry+
Get some quick tips for how to get syntax validation, schema validation, and highlighting working with GraphQL.
Back to top