Adventures in Nodeland by Matteo Collina - Issue #3
Hi Everyone! I’ve started a newsletter to share my thoughts on technology, the advancements of Node.js and to keep all of you up-to-date of what I’m working on. This newsletter might be weekly, biweekly or monthly… we’ll see how it evolves in the coming months.
This edition is lighter than usual on Open Source libraries as I spent most of my time preparing and delivering talks at various conferences… my OSS activity will resume ASAP!
More than one year has passed since we all went in various degrees of lockdown. It definitely seems more than a year since I took my last plane, coming back from Phoenix on the 23rd of Feb 2020. It’s a different world now! Anyway, I have found this “remote work survey” done by Miro extremely interesting, it’s worth a read:
Node.js Core
Node.js core activity has started to accelerate given the looming release of Node.js v16 and the PR has been opened for a while now https://github.com/nodejs/node/pull/37678.
There are a few interesting breaking changes in v16:
- http.OutgoingMessage is now more aligned with stream.Writable - I suspect this will break a few, be careful.
- runtime deprecation of process.binding() for a few module internals, making Node.js more resiliant agains monkey-patching its (unsafe) C++ parts.
V8 will also be updated to v9.0, which should bring significant performance improvements compared to v8.6 of Node v15 and v8.4 of Node.js v14. Read more at:
This newsletter has already been incredibly useful to self-reflect on my OSS contributions.. this time I found a significant performance regression in the http stack between Node v14 and the latest Node v15. See https://github.com/nodejs/node/issues/37937 for more details.
Wild Modules
Progress on thread-stream is continuing. In https://github.com/mcollina/thread-stream/pull/5 I moved away from using Atomics.wait and adopted polling with exponential backoff: instead of blocking the worker thread using Atomics.wait and stopping the event loop, the event loop can keep spinning, enabling the use of the network and other asynchronous things.
Conferences
This week I was the last day keynote at Codemotion Italy with my talk “Be The Glue”, where I speak about my journey from Software Developer to Technical Director. I hope we will get the video online soon!
“If you are using promises, you are using them wrong” - cit James Snell.
Fastify
We have shipped Fastify v3.14.1 with a few docs updates and bugfixes. We switched to use the main branch instead of master. Read up at https://www.zdnet.com/article/github-to-replace-master-with-main-starting-next-month and https://github.com/github/renaming. Thanks to this new Github App, we can automatically merge the Dependabot updates again. Read up the article to know more.
Jonas Galvez explains a new approach for Full Stack development that combines Fastify, Vite and Vue 3 for turbo-charging your application development. I’m stunned by the flexibility of Vite for Full Stack development and I would definitely consider these libraries for future projects.
The Fastify ecosystem is composed by a lot of repositories, and automating the dependency updates has been a critical factor in reducing the maintainance effort. However recent security update in Github Actions broke our integration. Here is an article explaining our solution to this new challenge:
Finally, thank you Jesse for the kind words:
Open Source Governance
There is mounting criticism against single vendor Open Source, and I have been very vocal about it. I tend to distinct Open Source from Open Governance: you want them both. Good examples of this are are the Linux Foundation with their related projects such as OpenJS Foundation and Cloud Native Computing Foundation, and the newly created Rust Foundation.
I believe only a plurality of economic interests can make a “big” Open Source project sustainable.
Thanks!
I would like to thank you all for the warm support of this newsletter! Thank you all. As usual, let me know if there are things you’d like us to improve!