Node.js and the Web Platform
Following Node.js Interactive 2017, I came away with a strong conviction that one of the most important things the Node.js Platform can do is to continue to align itself with the Web Platform. In my Node.js Interactive 2017 Take-Aways, I outline 3 major facts about Node.js in 2017:
- Node.js extends the reach of the Web Platform.
- Node.js is the leading application language in the Cloud Platform.
Feedback from the Web Platform
Over the past month, I have had the opportunity to share my thoughts and reach out to leaders across the Web Platform for feedback and I have been met with resounding enthusiasm. That is enthusiasm anchored in a desire to collaborate with Node.js representatives to achieve better alignment. Now, Node.js has to begin to actively engage.
Individuals like Jordan, together with Bradley Farias of GoDaddy, are working hard to ensure that we keep things well aligned. For Node.js, this has to be done with our own commitment to backwards compatibility in our platform. The Node.js package registry, npm, is the largest in the world and the stability of our end user ecosystem is paramount.
This platform development process is lengthy and requires extensive context to be able to protect compatibility. In order for Node.js to ensure a consistent developer experience, we need to align with language implementors, browser vendors and framework authors to provide end users clear indications of the path forward.
Key Areas of Collaboration
I have identified 3 key areas that we can focus on to ensure effective alignment of Node.js and the Web Platform.
- ES Modules
- WHATWG Streams
The state of ES Modules is the most active and well cared for thanks to the tireless efforts of Bradley Farias and the support he’s getting at GoDaddy. We seem to be revisiting folks concerns around .mjs frequently, which is unfortunate.
At this point, we need the Node.js Technical Steering Committee (TSC) to come to consensus on the official path forward for Node.js. If you have any open questions about why we got here, I highly recommend watching Bradley Farias’s Node.js Interactive 2016 talk: The Path to ES Modules.
While that may come to pass, we need to move forward while respecting and protecting the existing infrastructure. I’ve had some early, encouraging conversations with Babel contributors at the recent Chrome Dev Summit to see how we can provide a path for frameworks with large ecosystems to embrace new syntax while continuing to support the needs of framework users.
I am particularly excited about working on WHATWG Streams because the problem surface area is much smaller, especially on the browser side of the ecosystem. It is also a new standards body for us in the Node.js Ecosystem. If we are going to maintain broad compatibility of the Web Platform, we are going to have to come to the table at every one of these standards bodies.
Node.js embraced streams as a core primitive for data transfer. We prioritize low-level performance in Node.js. Matteo Collina, of nearForm, who is one of the lead maintainers of Streams in Node.js, thinks we will need a lower-level abstraction to be able to maintain our performance profile. Matteo, James M Snell and Jeremiah Senkpiel have begun working on new low level streams abstraction.
If we can align Node.js’s low-level abstraction to the high-level WHATWG Streams spec, everybody wins. Node.js will continue to need to collaborate with the high-level abstraction as it evolves and we should look for opportunities in the platform to see where it could integrate as well.
Talking to Jake Archibald about Streams led to some useful context about the spec building process. He shared these resources which are useful in the spec building process:
- WHATWG Infra — The Infra Standard aims to define the fundamental concepts upon which standards are built.
- Web IDL — An IDL variant used to describe interfaces that are intended to be implemented in web browsers.
- Bikeshed — A pre-processor for spec documents.
Call to Standards Action
The second blocker I see right now is people.
We need more individuals who are passionate about areas where standards work is taking place. We need individuals to share context of around existing standards. Standards work takes fortitude and patience. Standards work takes time. Most of the folks I know who do standards work are employed by companies interested in those standards.
If you’re all of these needs line up, let’s talk! If you’re passionate about standards, but don’t have time and permission, I’d love to help out. We can explore how to pitch standards work to business stakeholders or we can explore where to look for a more supportive employer. Node.js needs you.
Go Deeper into Node.js and the Web Platform
I’ve have a monthly mailing list which I publish at the beginning of every month. You should join dshaw — A List.