> This month we made a hard decision to convert our internal runtime code from TypeScript to JavaScript. There were several factors that led us to this decision: Complicated and slow build process on each build of the Deno internal runtime code was typechecked and bundled before being snapshotted.
There was a design doc[1] that described the problem and some subsequent discussion that goes beyond the GitHub PR history, and a HN thread[2] 6 months ago.
I've been learning ES5 for work, and I wanted to get better at more modern JS while I was at it. I decided to write JS solutions for Advent of Code and had to choose between deno and node.
My preferred way of running an advent of code challenge is to pipe in the problem input. I ended up using deno cause it was a lot faster for me to figure out how to make that happen (as somebody who's only used browser-side JS)
> This change had a significant impact on the module ecosystem, making some popular modules unusable until maintainers adjusted the code to work with isolatedModules.
Does this mean Deno introduced a breaking change in a minor version (1.5.0)?
Still no Node or npm compatibility? Not even on their roadmap? Still think Deno is DOA, then.
TypeScript is great, sure. I love TypeScript. But I wouldn't touch Deno for just about any serious development if I couldn't be certain that I could search npm for a library and use it without a potential hassle.
It's like wanting to convert a Tesla into a hybrid. Replacing npm with url imports was one of the main motivations to create deno. I don't miss npm at all. I am happy that I don't have to deal with it anymore. But if you want npm you can just continue using node.
Most of the issues are just stemming from its centralized nature. Typo squatting for example and other security issues. Beyond that the whole ecosystem around npm is just so bloated. The amount of data you have to pull for any tiny project is ridiculous.
Granted some of those issues is just down to growth of the ecosystem, so it could happen to deno as well. But my hope is that deno community will not repeat most of past mistakes. And it's decentralized nature will help with that.
So it's doa because it shedded some fairly major legacy tech debt in npm and the commonJS format?
While I have concerns about the dependency management style of deno being looser than node's package.json, I do think it is a net positive with realigning to "web standard library" over reinventing interfaces for everything.
This is the greatest reason to switch to Deno. NPM is, in most cases, a dumpster fire. If you need 1000+ dependencies to write a couple lines of code you have failed and I want nothing to do with you, your team, or any of your code.
There is a compatibility library https://deno.land/std@0.83.0/node. But they're at about 10 out of 35 for the Node Standard Lib. And There is no way to handle Node libs that use node-gyp - although I don't think that's _most_ modules.
If they finish the compatibility layer, I think that's enough for most scenarios.
There was a post on HN yesterday about Rust not having a strong web ecosystem yet, especially for writing web API libraries and working directly with microservices.
Woah