Talks to Watch

10 Things I Regret About Node.js - Ryan Dahl - JSConf EU

662K views · Jun 6, 2018 · 26:42 · 6 HN recommenders · 20 mentions · discussed 2018–2025

Node.js creator Ryan Dahl discusses ten design mistakes he made in Node, including package.json, npm, and module resolution. The talk sets out the motivations behind his later project, Deno.

Why Hacker News points people here: HN treats it as the classic talk on why Deno exists and on lessons from design mistakes in a widely used platform.

“Ryan Dahl's great talk on design mistakes he made with node.js is something I think about all the time”HN comment, 2023

What Hacker News said 20

Strongly recommendsbin_bashJan 2023

“Ryan Dahl's great talk on design mistakes he made with node.js is something I think about all the time”

Great talk on design mistakes in Node.

Full comment

Ryan Dahl's great talk on design mistakes he made with node.js is something I think about all the time: this video Even though he considers things like `require('./something')` defaulting to either `./something.js` or `./something/index.js` a mistake, he also admits these are not possible to change at this point. I think Python made a mistake trying to correct design problems in 2. The cost of change simply wasn't worth the price of migration. Is `print("text")` really that much of an improvement over `print "text"`?

in “Breaking the Snake: How Python went from 2 to 3” · view on HN
RecommendsazemetreJun 2020

“He had a great talk [2] about the lessons he learned when creating/maintaining NodeJS.”

Lessons from creating Node that are applied in Deno.

Full comment

Deno [1] is a new JS runtime by one of the creators of NodeJS, Ryan Dahl. He had a great talk [2] about the lessons he learned when creating/maintaining NodeJS. Many of these lessons are being applied to Deno. [1] link [2] this video

in “Design Doc: Use JavaScript instead of TypeScript for internal Deno Code” · view on HN
Recommendsj1eloJun 2020

“this nice talk about the regretful mistakes done in Node”

Nice talk on regretful Node mistakes.

Full comment

I just hope in 5 years we're not seeing a talk saying that in retrospective, dropping static types was a huge error... and DoNe is a new project to fix issues like that! (I'm just referring to this nice talk about the regretful mistakes done in Node: this video )

in “Deno will stop using TypeScript” · view on HN
RecommendskybernetikosJun 2020

“Here's the classic video on the topic”

Classic talk on why Deno exists.

Full comment

Well, in all the initial presentations Ryan Dahl gave about Deno, he phrased it as solving the things he'd come to realise he hated about Node. So that's what I take as the raison d'être of Deno - taking the lessons he'd learned from some years mainly coding Go and thinking about what he'd learnt from Node, and fixing what he could. Here's the classic video on the topic: this video

in “Deno will stop using TypeScript” · view on HN
RecommendsbartlomiejuDec 2020

“For the reasons on why creating Deno I recommend "10 Things I Regret About Node" by Deno's author”

Explains the reasons behind creating Deno.

Full comment

Deno is a JavaScript runtime much like Node. For the reasons on why creating Deno I recommend "10 Things I Regret About Node" by Deno's author [1] Deno is different than Node in several aspects; most notably: - Deno supports only ES modules, there's no built-in support for CommonJS modules - Deno's APIs are all promised based - Deno does not use NPM, instead it can pull code from any URL, much like browsers do - Deno has built-in permission system that by default runs your code in full sandbox allowing to opt-in into breaking out of sandbox (eg. to read a file from disk) - As you've mention Deno can run .ts files without explicit build step - Deno comes with a full toolchain in a single binary (formatter, linter, test runner, bundler, doc generator) [1] this video

in “Deno 1.6 supports compiling TypeScript to a single executable” · view on HN
RecommendsonetomFeb 2021

“Recommended "literature": 1. 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU”

Listed as recommended literature.

Full comment

Recommended "literature": 1. 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU ( this video ) 2. Brendan Eich: JavaScript, Firefox, Mozilla, and Brave | Lex Fridman Podcast #160 ( link )

in “Choose Boring Technology (2015)” · view on HN
Cites itwhatever_dudeJun 2018

“A video of the presentation is here”

Video of the presentation matching the slides.

Full comment

These are the slides to Ryan Dahl's presentation at JSConf EU 2018. A video of the presentation is here: this video

in “Design Mistakes in Node [pdf]” · view on HN
Cites itsteamer25Jul 2018

“Ryan Dahl mentioned that he regrets incorporating package.json and NPM into Node”

Cites Dahl's regrets about package.json and npm.

Full comment

In a recent video, Ryan Dahl mentioned that he regrets incorporating package.json and NPM into Node: this video He has a very early attempt at breaking from compatibility with Node called "Deno". Here's the part in the video about his current thoughts on importing external modules under Deno: this video He has some other security proposals as well.

in “ESLint compromised, may have stolen your credentials” · view on HN
Cites itapoDec 2018

Cited for early Node decisions that now burden it.

Full comment

Meanwhile, Deno (alternative server-side JS built from scratch by the creator of Node) keeps chugging along: link It will be interesting to see which happens first: developers migrate to Deno or Node finalizes its ES module implementation. I think both groups are doing excellent work, but the Node team seems to be at a disadvantage having to continue support for some decisions made early on in Node: this video

in “ECMAScript modules in Node.js: the new plan” · view on HN
Cites itlioetersMar 2020

“I recall hearing Ryan Dahl's regrets about design decisions in Node.js”

Cites Dahl's regrets about module resolution.

Full comment

> ..The node_modules package resolution algorithm is how JS does namespaces.. I wonder whether they got that right through sheer genius, or by accident. I recall hearing Ryan Dahl's regrets about design decisions in Node.js, a few of which had to do with the module/package resolution algorithm. 10 Things I Regret about Node.js - this video There are some good aspects of it though. I like how modules/packages are just imported objects (the path resolution is a bit weird and seemingly inefficient, i.e., checking every parent folder's node_modules folder). It goes together well, that modules are also self-contained function scopes by default (I suppose a kind of anonymous namespace), that exports a plain object with assigned properties. --- Wow, I just learned about C++20 Modules, looks like a game-changing feature. link

Cites itokareamanMar 2020

“Ryan Dahl (creator of node.js) is working on Deno as a replacement because he thinks he made a mistake with node.”

Cited as reason Dahl is building Deno.

Full comment

Powershell has a security model. Also, Ryan Dahl (creator of node.js) is working on Deno as a replacement because he thinks he made a mistake with node. 10 Things I Regret About Node.js - Ryan Dahl this video

in “Building a backdoor with Node.js” · view on HN
Cites itTechBro8615Mar 2021

“Also see "10 things I regret about Node”

Related reading on Dahl's views of Node.

Full comment

Ryan Dahl (author of the announcement post) is the creator of Node.js, so I think he's got a right to say these things! Also see "10 things I regret about Node" [0] [0] this video

Cites itTheDongMar 2022

“The creator of nodejs talking about some of its mistakes”

Example of a creator discussing mistakes in their design.

Full comment

If you want a couple other examples here's what I've got offhand.. Perhaps the original example, Hoare helped popularize null pointers, and then gave the "Null Pointers: The Billion Dollar Mistake" talk link The creator of nodejs talking about some of its mistakes: this video Nada Amin was part of the Scala team, and also wrote a wonderful paper about how Scala's type-system is fundamentally unsound: link bradfitz was a core go team member, and wrote a post about what their net.IP type got wrong link I have no doubt there's many more examples too, but those are the ones I can think of offhand.

in “Rust's unsafe pointer types need an overhaul” · view on HN
Cites itswyxJun 2022

Listed among great dev tool pitches.

Full comment

i also asked this on twitter so just putting some replies here: - Doug Engelbart link - Twilio link - Stripe - "7 lines of code" - Netlify - link - Heroku - link and git push heroku master - Cloudflare - link - Node ( link ) and Deno ( this video ) - Firebase (reportedly) - link smaller companies/less impactful pitches that i still like - Redux link - Stackblitz link - Comm link - Mongodb link - Let's Encrypt link - Figwheel-Clojurescript link - Svelte link

in “Ask HN: Best dev tool pitches of all time?” · view on HN
Cites itstack_framerJun 2022

“I first saw Ryan Dahl's talk about his Node.js regrets[0] during the early days of the pandemic.”

Talk about Node regrets that motivated interest in Deno.

Full comment

This explanation resonates with me. I first saw Ryan Dahl's talk about his Node.js regrets[0] during the early days of the pandemic. I thought I'd be eager to try Deno when it became more mature, but I still haven't tried it. I guess I'm not convinced that it's 10x better than Node.js. [0] this video

Cites itmodernerdAug 2022

“See Ryan Dahl's “Design Mistakes in Node” PDF or talk for more”

Cited for Dahl's views that node modules were a mistake.

Full comment

> …I already have taken care of a lot of those Node issues in my own projects, there is not a ton that I see compelling in Deno. I felt this way too before using Deno for a while. So far I enjoy: - Breaking from npm/node modules support on purpose turns out to be a real plus for me. It's refreshing to have dependencies referenced by URL, and it's good to have them cached centrally by default (in $HOME/Library/Caches/deno on macOS and $XDG_CACHE_HOME/deno or $HOME/.cache/deno on Linux, for example). - Use of web platform APIs ( link ) and the work to standardise those across platforms ( link ) is encouraging. - `deno lint` and `deno fmt` make adopting and using JS/TS feel more like Rust/Go/other languages with good built-in ceremony-free tooling. - Fresh is turning into a very nice Next.js/Astro alternative ( link ) that I found very easy to learn and deploy, with great performance and developer experience out of the box. Bun is interesting, but I wish it didn't embrace node modules: perpetuating its use instead of attempting to move the community on by recognising it for the mistake it was feels sad to me. (See Ryan Dahl's “Design Mistakes in Node” PDF or talk for more: link and this video )

in “Will Bun JavaScript Take Node's Crown” · view on HN
Cites itlolinderMay 2023

“Goal #2 (after security) was to simplify the module system”

Cites the talk's goals to rebut a claim about Node compatibility.

Full comment

Are we talking about the same talk? 10 Things I Regret about Node.js [0]? Goal #2 (after security) was to simplify the module system, and the very first thing he said about that was no node compatibility. [0] this video

in “Deno 1.34: Deno compile supports NPM packages” · view on HN
Cites itjrmann100Mar 2025

“see his talk "10 Things I Regret About Node.js"[1] for more of his motivations in designing it”

Points to Dahl's motivations for designing Deno.

Full comment

I believe the Deno permission system[0] does what you're asking, and more. (Deno is a JavaScript runtime co-created by Ryan Dahl, who created Node.js - see his talk "10 Things I Regret About Node.js"[1] for more of his motivations in designing it.) [0] link [1] this video

in “Malware found on NPM infecting local package with reverse shell” · view on HN
Cites itafavourMay 2025

“Dahl had a whole talk about the mistakes made with Node”

Cites Dahl's talk about Node mistakes.

Full comment

Their original announcement post covers it pretty well: link IMO their logic still holds up. Dahl had a whole talk about the mistakes made with Node: this video

in “Reports of Deno's Demise Have Been Greatly Exaggerated” · view on HN
CriticalechopomMay 2021

“I just know very well that Ryan is redoing exactly the same mistakes as Node”

Full comment

> Just because they are attempting to address it does not mean they will succeed. Strongly agree this statement , hence I don't see how switching from "npm" to "raw urls" will solve anything... The problem with Node dependency is bigger than just "npm is not a good package manager"... Honestly in this case just fork node and replace npm with something else... Here the problem relies on a mixture between poor built-in apis which are buggy a lack of vision with the language , which have been core to the language since it's origin.;. Deno doesn't seems to address those at all... Again it's just seems to be "npm is bad , and i want to use typescript natively with web apis"... I just know very well that Ryan is redoing exactly the same mistakes as Node with the same obsession he had on "EPOLL"[0] back then that will end up in a new fiasco. [0] this video Can't find the specific part where he mentioned "EPOLL"