I’ve been a long-time fan of Deno and their ethos of following the web platform. But I’m not sure how I feel about their latest admission which makes their dependency story more like npm and less like the web.
Designing Deno’s module system around HTTP imports was ambitious. It aimed to replace npm with a distributed system over HTTP, aligning with how ES Modules work in browsers. This eliminated the need for package.json files and node_modules folders, simplifying project structures. Deno scripts could scale down to single-file programs without a project directory or configuration.
Deno’s HTTP imports were one of my favorite features! But alas, it seem the dream is dead. Or rather, there were trade-offs.
One trade-off to HTTP imports was decentralization[1], which by definition entails a lack of centralized control. But, when you can’t control the end-user experience of your product, your brand suffers even when it’s not your fault.
It seems this began happening to Deno where folks pointed their module dependencies at a variety of hosts and any poor performance from a third-party was a perceived poor performance on the part of Deno.