This post is from Michael Dawson who is a Node.js Collaborator, the Technical Steering Committee (TSC) Chair of the Node.js Project, and IBM’s community lead for Node.js. In this blog, Michael provides a general overview and background on strategic initiatives coming out of the Node.js Project and why he thinks they are important. Happy reading!
Over the last number of years, the Node.js community has been highly successful in delivering value without a structured or pre-planned “roadmap” documenting the content to be part of each release or explicit timelines for future features.
The reason for this is because contributions come from a broad range of individuals and companies, with many of the contributions coming from volunteers working on their own time. This makes it hard to ‘commit’ to deliverables in a certain timeframe. Look at the authors for Node.js Core and the number of working groups with active participation to get a sense of the range of contributors.
Individuals and organizations who are passionate about Node.js identify, work and contribute innovation in areas that they are interested in, based on a schedule they can manage. This has worked remarkably well with significant new features and performance improvements in each of the releases. Adding to this, the community adopted an LTS strategy a few years ago to provide stable releases on a predictable timeline allowing end users to plan for upgrades (the LTS schedule is available here).
Although the Node.js community does not have “roadmap” line items, there are organized efforts around building significant new features, which when ready, will end up in a specific release. In addition, there are other more general organized efforts. Some current examples include:
- Community Events (Community Committee (CommComm))
- Education (CommComm)
- Evangelism WG (CommComm)
- i18n (CommComm)
- Node.js Collection (CommComm)
- NodeTogether (CommComm)
- Office Hours (CommComm)
- User Feedback (CommComm)
- http2 (TSC)
- Modules (TSC)
- N-API (TSC)
- OpenSSL Evolution (TSC)
- Workers (TSC)
- Error Messages (TSC)
- Core Promise APIs (TSC)
- TSC Governance (TSC)
- New Streams APIs (TSC)
- Async Hooks (TSC)
- V8 Currency (TSC)
These have been documented as “Strategic Initiatives” and they are captured here:
- TSC- https://github.com/nodejs/TSC/blob/master/Strategic-Initiatives.md
- CommComm — https://github.com/nodejs/community-committee/blob/master/STRATEGIC-INITIATIVES.md
So why start to document Strategic Initiatives now ?
In my opinion, there are a number of good reasons:
- Enable New Contributors: As the community continues to grow, there are more individuals and companies who want to be involved. Many of those will have their own ideas of what they think is important, but for others, it will be easier to start contributing by helping with items the community believes is important. Having documented strategic initiatives helps them identify what those items are and who to contact to get involved. Two good examples where new contributors joined the community as a result of strategic initiatives, included initiatives around N-API and http2.
- Identify gaps: There are a lot of moving parts (dependencies, new features like modules, etc.) that go into the Node.js runtime. Documenting current efforts as strategic initiatives helps capture those that have been identified and are being worked on. This provides a lens to see if there are any missing areas that should be worked on, but don’t yet have an effort started. In some cases, it may even motivate individuals or companies to get involved to help close the gaps.
- Socialize and Promote: Individuals or companies may identify an initiative that they will help support, but often making good progress requires more effort than they can contribute on their own. Strategic initiatives provide a way to “socialize” and “promote” an initiative so that they can unlock the multiplying effect the project gets by leveraging contributions from across the community.
- Support: One of the roles of the TSC and CommComm is to enable and support community efforts. The TSC/CommComm can work to ensure that those efforts have the support and resources that they need to move forward through documenting the strategic initiatives .
- Inform: While it is difficult to commit to providing an exact time when work will complete, documenting strategic initiatives provides more information to developers and end users as to the progress on key features. This allows them to better understand when features might be included in a release, when they can start testing out early versions, and so on. As was the case with the adoption of the LTS releases, this will help users better understand what future versions may look like and plan accordingly.
These are some of the reasons I think strategic initiatives are such a good idea.
I encourage you to look into the details of the various initiatives. You will see that they cover a broad range of different areas including technical, organizational and community matters. There will be additional blog posts going into more detail on these initiatives throughout the year.
The Node.js community is still in the process of working through the best way to capture and document information about the strategic initiatives. If information is lacking on a particular initiative, feel free to reach out to the champion of that initiative to get more information and to learn how to get involved.
I’d like to close by mentioning that I’m personally involved in a number of the initiatives and I’ve found it rewarding to be able to work with larger groups within the community in order to progress initiatives that would be too much for a single individual to complete. It is a great way to meet new people, learn from other community members, help accomplish longer term goals and to have an impact on the overall project. If you have time, I’d highly recommend you find one or more initiatives to get involved with, or propose and help drive a new one!