As we start the new year I’ve been reflecting on 2017, which by any standards was a busy year for the Node.js project. Overall, 2017 was a year of continued growth and adoption of Node.js and you can get more insight into the trends and factors driving this growth in the Node.js Foundation’s 2017 user survey.
As was recently reported in node-by-numbers, the Node.js ecosystem, based on contributions to core, number of contributors, and downloads, continues to grow at an accelerated rate. From that data, we can also see that the adoption by the community of the LTS Release process, which provides stable and predictable releases, is helping customers plan and migrate between releases, with use of 4.x tailing off, version 6.x being the mainstream, and version 8.x (just released last October) on a rapid growth path.
I have the great privilege to be IBM’s community lead for Node.js™, along with the freedom that gives me to spend my time working in the Node.js community. As I reflect, I’m thinking about IBM’s contributions and thinking about what we should focus on as we move forward. Throughout 2017, IBM’s contributions to the community were driven by a number of key goals:
- Working with the community to ensure there is a high quality Node.js runtime with predictable releases for our customers and the overall Node.js ecosystem.
- Facilitating growth of the overall community by supporting its welcoming processes and working with community members in a transparent and inclusive manner.
- Ensuring first class support for Node.js in IBM’s products including IBM Cloud and the many others that embed Node.js.
- Addressing the needs of our customers and providing the support required for them to succeed.
Node.js core community involvement in 2017
Some of the things IBMers (10 collaborators + many more contributors) contributed to in the community are listed below. Of course this is only a small subset of the overall work in the community, but I’m proud of the contributions made by IBMers in 2017 and look for us to keep this up in 2018.
- Getting things done day-to-day – IBM is active across the Node.js GitHub organization and has members in the build, release, benchmarking, security, diagnostics, post-mortem, N-API, and user-feedback teams/working groups who often help lead/schedule/moderate the meetings for many of those groups. I also have the privilege of being the chair of the Technical Steering Committee (TSC). While 4 of the top 20 individual Node.js committers (based on number of commits in node core) in 2017 were from IBM, we have a strong focus on collaborating with community members to achieve more than any one person can on their own.
- Build – IBMers helped keep the infrastructure needed for releases, testing daily commits, and pretty much everything else, up and running. You can check out this presentation from Gibson Fahnestock at Node Interactive to learn more about the community infrastructure – How build Infrastructure Powers the Node.js Foundation.
- Releases – IBMers have been involved in the planning and release process since the inception of the LTS Release Process. 2017 was no different, with IBMers contributing to the flow of stable and predictable releases. I’m particularly happy that, in 2017, Gibson Fahnestock volunteered to act as the version 8.x release lead, continuing our commitment in this area.
- Diagnostics – IBM has a long history of developing post-mortem and diagnostic tools because for enterprise/production use, it is important that we can help our customers quickly and efficiently figure out problems when they occur. In 2017, our team’s focus was the community node-report and llnode efforts, and I’m excited that we’ll be hosting the kickoff Diagnostics summit in early 2018.
- Security – In 2017, IBMers helped get the community security working group off the ground, with Sam Roberts acting as the chair. IBMers
- helped the Node.js project become a CVE Numbering Authority (CNA) in order to speed the assignment of CVEs,
- helped document a number of the community’s processes, and
- contributed to the process of getting out a number of the security releases.
- Performance – It is important that the project tracks real-world performance in order to avoid unexpected regressions and ensure customers get the maximum value from their hardware investments. In 2017, we continued to be a leader in the benchmarking working group, working with the community to add new benchmarks to benchmarking.nodejs.org. You can learn more about the benchmarking working group from this panel at NodeSummit2017.
- Platform Support – In 2017, IBMers continued to work on adding support for additional platforms to the set being built by the community (which already includes Linux on IBM® POWER®, Linux on IBM Z® and AIX®). In particular, progress was made on support for z/OS® and IBM i in libuv (you can read more about that in Community libuv support for IBM i and z/OS.) In addition, 2017 brought the first Node.js releases for z/OS from IBM, with our long term goal being to contribute all of the changes for z/OS back to the V8 and Node.js communities. Another key contribution was the addition of POWER and IBM Z to the platforms supported by the community docker images. You can read more about that in: Docker support for Node.js platforms.
- Community Committee – In 2017, the community committee was established and a number of IBMers have been supporting this effort by being active members and championing some of the efforts. The work in the Node.js community goes far beyond code contributions, with outreach, education, and user feedback, and it is great to see the community committee picking up speed. One of the areas I’m personally excited about is the end user feedback initiative.
- Strategic Initiatives – In 2017, the Node.js Technical Steering Committee captured a set of strategic initiatives (the community committee did so in early 2018 as well). I have the privilege of being the TSC champion for the N-API effort and am proud of the progress that the team made in 2017. After much work, the initial PR for N-API landed in early 2017 and there was solid progress in moving to the point where it can be made a supported part of the Node.js runtime. You can learn more about N-API from this talk at NodeConfEU – N-API – next generation Node API for native modules.
- Internationalization – Steven Loomis continued to contribute by keeping ICU working and up to date in Node.js. In addition, a number of IBMers helped by contributing to the effort to improve how error messages are generated, one of the steps required if Node.js error messages are to be internationalized.
- Code Quality/Safety Net – The community values Quality with Speed. Throughout 2017, IBMers were active in supporting the key strategies outlined in that blog post by helping to build/maintain the safety nets, including coverage.nodejs.org and CitGM (for example citgm-goes-parallel), and adding CI jobs to support other working groups and teams.
Node.js ecosystem involvement in 2017
Outside the core Node.js community, the IBM teams I work with were also active in the greater ecosystem. In 2017, some of the things those teams focused on were:
- Node.js Support Offering – While IBM has been providing support for IBM products bundling the IBM® SDK for Node.js™ for many years, in 2017 we announced a support offering that includes support for the community binaries and is easier to take advantage of.
- IBM SDK for Node.js – We kept up with the community releases across all of the streams and platforms, and we provided support for IBM i and z/OS while we work to contribute them to the community. This included something like 37 releases through the year.
- Create, Deploy, Monitor. We made it easier for customers to create, deploy, and monitor applications in production. In 2017, we open sourced Node Server, which provides an easy way to build applications that are ready for deployment into production environments including Kubernetes, Docker, and Cloud Foundry. We also continued to enhance appmetrics as a free and open source monitoring option. You can learn more about these tools by watching this presentation from Node Interactive 2017 – Node.js Performance and Highly Scalable Micro-Sevices.
- LoopBack.io – IBMers continued support/development of the open source LoopBack framework, which can be used to accelerate deployment of APIs with Node.js.
- Addressing key pain points for our customers – Examples include being able to easily configure command line options with NODE_OPTIONS, bundling Node.js into existing binaries through support for building as a shared or static library, and improving certificate chain handling.
- Evangelism – We’ve been spreading the Node.js word not just at key Node.js conferences like Node Summit, Node Interactive, and NodeConf EU, but also to a broader audience at conferences like Devoxx US, the Cloud Foundry Summit, Cloud Technical University, IBM InterConnect, Share, and more.
- Node Minds – We’ve been bringing great minds together – In 2017, IBMers launched Node Minds. The output from the initial session was greater recognition of the need for more end-user input, which we’ve seen embraced by the community.
- Ensuring first class support for Node.js – in the IBM Cloud and other products, through testing/validation along with blogs and documentation on how to complete key tasks in these environments/products. Examples include:
- Deploy your Node.js application to Kubernetes
- Getting started with Node.js and IBM Cloud Private
- Microservice Builder for Node.js deployments
- Capturing diagnostic dumps for Node.js applications in Bluemix Container Service
- Add Zipkin trace support to your Node.js application with one line of code
- Finding Node.js performance problems early using appmetrics-dash
- 3 easy ways to enable the Application Metrics for Node.js™ Dashboard for the Node-RED Bluemix Starter Application
Looking forward to 2018
As I look forward to 2018 I believe most of these areas continue to be relevant and important for the community and IBM. Of these, I’d like to call out a few that I think will be significant focus areas for 2018:
- User feedback – This initiative started in 2017 but it should be a focus for 2018 to ensure it ramps up and broadens the channels the community has for feedback.
- Diagnostics – As production use increases, so does the importance of diagnostics tools. The Diagnostics summit is a great way to kick off this effort in 2018 and I believe it will help drive work in this area over the next year.
- Security – There was a good start in 2017 with the kickoff of the security working group (security-wg) and the documentation of a number of processes. I see the security-wg picking up steam in 2018 with one example being more involvement in the reporting/triaging of vulnerabilities in third party modules.
As always, I’m interested in community and customer feedback on whether these contributions and priorities align with the needs of the community and the needs of our customers. I’ve done my best to listen and understand throughout 2017 in order to inform where I focus efforts, but if you have any suggestions or comments, please reach out to me (@mhdawson1 on twitter) or the larger IBM Node.js team so that I can incorporate any additional insights that you have.
If you’d like to keep up with IBM’s work on Node.js both internally and within the Node.js community in 2018, be sure to follow the activity in IBM’s Node.js developer center.