Deno is a viable alternative to Node

Deno logo

Today marked something new for the JavaScript world. With the launch of Deno 1.0 there is now a viable alternative to Node.js on the market. After more than a decade of its launch Node.js is ubiquitous. It goes without saying it helped spark the JavaScript renaissance, but I feel it is also showing its age.

JavaScript has gone through a remarkable journey in the 2010's from a browser scripting language to something that "powers everything". A big part has been the rapid improvement of the core ECMAScript language specification with new features. Reusable packages from the NPM repository (now incidentally owned by Microsoft) have made the quote "There's a module for that on NPM" a common truth told.

At the same time I think the rapid development left a mark on Node.js. The ecosystem has gone through so many iterations in a relatively short span of time that there have been few long lasting good practises. This in turn has left the NPM repository bloated with code of all sorts. I also dislike is the massive dependency graphs that makes it vulnerable to things like the left-pad incident almost half a decade ago.

Downloading ten thousand packages for "a pristine codebase" is a fallacy and the continuous reinvention of methods to create HTML forms reminds me of a hyperactive weasel more than anything else. Both of these have been the driving force of the JS ecosystem, but in the last couple of years we've settled on declarative UI libraries like React and Vue, but on the server side we've taken Node as a given.

Client side libraries have shed their skin repeatedly, but for the server side its more difficult. There was some turbulence on governance and technical direction circa 2014 with Node forks like io.js. These issues got resolved and unified efforts continued on Node.js. And don't get me wrong: Even if Deno takes off and carves a significant niche like serverless — Node.js will be around for a v-e-r-y long time.

The place and time seems right for Deno: The JavaScript ecosystem is mature enough for a server-side reboot. The core team behind Deno has unique insight into the shortcomings of Node.js. Standardizing on TypeScript for typing and using HTTP and JavaScript Modules for code reuse are key features of Deno. Nothing you couldn't get with Node, but what is need is an opinionated package to get it to stick.

Technical merits alone will not be enough for Deno to break into the mainstream. Gaining critical mass requires adoption and vice versa. A chicken and egg problem, but since Deno shares the same language and core philosophy, I don't see major blockers. Projects like Servest and Nessie already cater for the core web development requirements. It remains to be seen how the ecosystem game pans out for Deno.

To learn more, I recommend watching 10 Things I Regret About Node.js and reading the launch post. I try not to push technologies for the sake of them, and I've certainly not taken to the forums in 2010 to buzz the Node.js vuvuzela. It's hard for me to say this: I'm excited about Deno and hope it takes off!

- Jani Tarvainen, 2020/05/14