I use Deno all the time... but it might not be exactly how it's marketed...
Anytime I need to etl some data or transform a bunch of JSON or things of this nature - I use Deno.
It's like a glue language for me at this point. I don't need to focus on configuration or any setup like this - I just create a new dir and I'm off.
This article seems very hyperbolic to me - I still find a bunch of features within deno really helpful and there is still a ton of activity on Deno itself (Had a release yesterday) and many of the internal and community libraries in it's ecosystem like Postgres and Redis (which both had a release within the last week).
That's sad to see.
> If you sense some ire here it’s because I went all-in on Deno. I was fooled. I was rugged pulled.
I don't agree with the author's use of "rug pulled" here. Deno took a shot and not all businesses succeed — they did have unusually strong competition in Bun.
Them scaling down the number of regions might make them sustainable longer with their current customers who have deployments. That seems nicer than a hard shutdown.
Alternatively, this may be Deno’s “Dip”: A tough period of time before continued gains and small breakthroughs that build up over time to a new plateau. Maybe all new creative projects will have this as a part of their journey. I am confident Ryan Dahl is unlikely to give up, and is aware (and working to become more aware) of what is necessary to improve for deno to achieve the vision he has for it.
I loved David Bushell's writing. Very entertaining as always.
I do agree many of Deno's products are in decline.
But I think deno is by far the superior typescript/javascript runtime. And deno can be run on many reputable edge providers. So deno deploy is not necessary. It's too bad because I did like the simplicity of deno deploy, but other edge provides seem to be good too.
Some of it does indeed need tweaking to get it work. But I find many amazing pieces of software written for Deno. And I find deno's tooling and security way more mature than node or bun.
As long as the tooling stays good and the runtime is updated. I'm staying.
I will be willing to switch to bun if the tooling/security gets good. I should revisit bun to see if it is now good. To my knowledge bun does not have granular permission levels like Deno. I don't understand why the runtime should have access to everything by default. I much prefer deno's way of doing things.
The rust reimplementation of the node modules is interesting to read. I took some ideas for the llrt runtime modules. As a comparison Bun Zig implementation is scarily ignoring a lot of edge cases.
One major reason I still haven't switched away from Node and NPM is major stability and support, pretty much everywhere, e.g. full automatic VS Code support. Plus, even if it's ever so slowly, Node.js is legitimately keeping up to date with the latest ES features and always improving its stdlib, and V8 is still the king of performance and likely to remain so, unless, say, a court were to split up Chrome from Google funding by monopoly laws. That said, Node progress is slow. I'm not entirely sure why. I'd be glad to get paid to help make Node.js better if that were a job. And I'm still waiting on #57696 to avoid using async in a few places that I otherwise wouldn't need to.
I don't intent this to be mean to Deno, but did it ever really get traction? Hard to describe something as a decline if it never really held a significant position.
At first I thought this was from a site called "DBUS Hell" and I was excited to read war stories about building the Linux desktop.
i use deno all day every day.
it’s really about taste. deno has insanely high standards, and the choices they make are great.
deno deploy subhosting seems unlikely to go anywhere, even if the serverless fad is coming to its plateau of productivity.
if you’re looking at node and think it’s great, you should use it.
node compat makes me like deno more, not less.
it’s fine to not use it, but most of the points are about deno the business, not deno the tech. postgres, rust, and a lot of other projects find a way out of the vc treadmill.
I wired up some custom middleware on Bunny using Deno and it was the first time I really saw the value of it. It was really nice to just hot load dependencies via a URL, write my code, and go. Beyond that use case, though, not much has stood out.
Deno is great!
I am trying to use it as a FaaS to some level of success
I only wish that the compiled binary retain full Deno capabilities, it would be even better if the permission model could limit file system access and limit cmd to a specific user
I've also been using Deno Deploy for AI integrations, and something I miss is being able to have multy-file projects without deploying from github
Just give me a online vscode environment, limited as it may be
Typescript LSP should be able to run in a worker, and I wouldn't mind having to install a browser extension if necessary
Meh, I worked at Deno until last year and I think the signal of seeing Deploy downsize regions is not much of anything. The Deploy product itself suffered from some early missteps in terms of design. If anything, scaling down to a few core regions puts them in a better position to rebuild a stronger offering.
There wasn't really a rugpull in the https:// dependency space either. It just turns out that the package approach for software is better and there are major unsolved problems in web-identifier-based code distribution.
I was skeptical of the value of JSR when it was first internally announced but TBH, but I think it's a strong offering in the packaging space and is in a better position than alternatives.
node.js compat is hard, packaging is hard, writing performant Rust/V8 hybrid code is hard, but the team is pretty packed with smart people who really understand the space.
This is sad news. I always found NodeJS' APIs to be a bit deficient, and liked Deno's better - with the caveat that they openly admit to copying designs from Go[1], so it's not necessarily original.
IMO in JS/TS world its atm Bun vs. Deno in replacing node, npm, pnpm, yarn whatever other package manager. What i see is, that Deno try to go the vercel way and want to make some money to finance all this open source development. IMO totally legit. And also, normal, when you spin up a (startup) idea, 19 of 20 will fail. So i don't get the point of the article actually. The Article points to all this ideas but forgets that deno's core is the runtime. In between the lines, a node / LAMP-Stack history blinks up.
I like deno's security model where you have to enable things. But I think it made a HUGE mistake to the point of being useless.
Realistically, we need to grant access to env variables, network, etc. So those flags are functionally useless as always enabled.
The issue we face is making sure our dependencies don't do something nefarious. Demo doesn't solve that. I would really, really like to be able to specify these flags at the package level.
I'm not convinced. The author has had a pretty negative view of Deno, JSR, etc since the beginning.
Sorry for putting the security hat, but how does anyone run Deno in production without any worries when this is the state of affairs of their vulnerability notifications and scanning. No SBOM / SCA tool that I know of supports deno.lock and since it has a distributed nature, as far as I understand there is basically no way to be alerted on CVEs, unless you work hard to generate a compatible package-lock.json / yarn.lock file and stay with only npm compatible packages etc. Is it bothering only me?
https://www.reddit.com/r/Deno/comments/1g5mu0l/thats_all_goo...
https://www.reddit.com/r/Deno/comments/1dpexwv/dependency_vu...
From hanging around Deno's official Discord, Reddit, etc, I get the impression that there are simply not that many people using it.
I doubt they are making much money from the public-facing Deno Deploy product, and are probably reducing its number of regions because those who are using it are mostly just noodling around on the free tier.
Really liked Deno, particularly its support of url imports. As primarily a Java developer having to deal with Maven dependencies, I cannot stress enough how refreshing it was to just say "the dependency is right there, go get it".
The problem came when I noticed how Deno was being steered towards SaaS. For example, Deno KV, which uses SQLite internally, became available with v1.33 (https://deno.com/blog/v1.33#built-in-kv-database). But actual SQLite support did not come until v2.2 (https://deno.com/blog/v2.2#support-for-nodesqlite) nearly two years later... and it's a node api!
The fact that Deno is lagging behind Node so it can shepherd people towards a first-party alternative that they just so happen to offer premium services for is... well, it didn't bode well.
I've since abandoned Deno for Bun, which has meant giving up url imports, but Bun always feels so fresh. It gave me first-party SQLite support, not an abstraction around SQLite that they hint hint, nudge nudge me towards paying for. That said, I have felt a little uneasy about Bun since its v1.2 release (https://bun.sh/blog/bun-v1.2).
It's kind of funny but also depressing watching all the frontend people try to force Javascript onto the backend. They've been slowly rewriting their tooling using more suitable languages:
- esbuild (Go) is 100x faster than webpack and friends
- Bun (Zig) and Deno (Rust) are ~2x faster than Node
- Typescript recently announced a rewrite in Go for an expected 10x performance gain
Maybe one day they'll realize that those languages are good for more than developer tooling? Maybe they can even be used for serving web content?
What interests me, are alternatives to Javascript type languages
Deno was a step away from the shortcuts Node.js took, Typescript was a step away from the ones Javascript took.
But time has moved on. Surely there is space for a *modern* garbage collected language (ie disqualifying Rust) for building servers.
I spend my days programming in Typescript, and Rust. Typescript is ancient. (Vaguely Typed Script would be a more accurate name)
Is that language Go?
Does anybody start major projects using Node/[Type|Java]Script anymore?
The article mentions a decline in the number of regions Deno Deploy has in production. It isn't criticizing the runtime, but the confusion is understandable since they have similar product names.
I wonder if there's a reason why there's a decline that the Deno people could weigh in on? Perhaps it's not a money issue, but some other reason why they decided to scale back the number of regions.
Supabase's decision to take a dependency on Deno, IMO caused indirect pain to lot of devs. I have wasted quite a bit of time trying to find or load a package that I needed. And now, with Deno 2.0 apparently everything is node compatible... I don't know what was the whole point.
I like the idea behind Deno. I hope the runtime stays relevant.
JSR sounded amazing on paper, but in practice, it seemed to have a lot of papercuts. You still can't make an account there without a GitHub account, I think.
I wish they made a stronger push for its standard library to be used outside Deno. Such a push would clash with their original goal of not depending on npm, I guess. A well-maintained set of common functionality implemented in a cross-runtime way is still needed by the ecosystem, I think.
I get it, there are heaps of NodeJS systems out there. Both Deno & Bun claim to be an improvement over NodeJS and then invest masses of time to be compatible with it.
I never liked NodeJS and I would much rather prefer a clean room JS environment with absolutely no explicit NodeJS compatability. 100% support for Web API specs would suffice.
Why can't Deno or Bun release a slim version and then a compatability preserving version for those folks who require it?
Agree with the author. Deno recently has been loud about Oracle and the JavaScript trademark. Maybe they’re right, maybe they’re wrong, but it is a “last gasp” when your value proposition is something like: choose Deno, we’re righteous.
Feels like a tactic to gain some attention. That’s just not how the market typically makes buying decisions, so what’s the value of the distraction when your product is in such a poor state?
Many have yet to learn the history of alternative implementations like egcs, IronPython and IronRuby, jpython and jtcl, PyPy, Rubinius,...
Most of the time switching is not worth the effort for the few things they do better than the original implementation, and eventually if the features are really relevant enough, the main implementation will end up having them as well.
Issue with deno deploy specifically: they have Deno subhosting but the model is you create an end user script, push it, then can run it.
There's no concept of "run this once" or eval. So it's a very heavy, deploy per run, model of iteration which is not suitable for the main use case of giving end users an editor to iterate with
For me Deno as a technology is great, the development of Fresh has been slow indeed however it is such a clean and effective way to write modern web applications. With KV built-in and deploy you don't really need to install anything other than the core fresh dependencies.
Not true that its not updated. They just released Deno 2.3 on the 1st of May.
There was no such thing as a Deno rug pull, the author links to the use of http imports which are better used inside a map than directly in a file.
Deno is fine and as a technology gets more mature it should get more boring.
I wanted to create webdav servers hosted by glitch and cpanel. I ended up with exactly the same code on both, nice! Basically they both have node.js capabilities so I could use node.js webdav-server.
But then I got the bright idea of using deno deploy which I've used in the past and loved, even using kv rather than a file system. It works (thanks chat) but it basically required creating my own version of the node.js webdav-server. Kinda annoying.
The bottom line is that deno deploy is fighting a battle it can't win. Deno was the "better" node.js. And then it started integrating node capabilities, trying for a drop-in replacement of node. Nope. Sigh. I still love it for many simple projects but there's a reason node.js is, er, node.
My thoughts on deno/bun:
With Microsoft's move to port the Typescript compiler to Go, Deno faces an interesting technical challenge. They're going to have integrate their Rust code with the Microsoft's Go. It will be interesting to see how this is going to play out.
I tried Deno for awhile — the ability to run Jupyter notebooks was a cool idea — but I’ve been Bun-only for around a year now. It’s just significantly faster and easier to use.
I'm not sure what to make of this article.
I've been involved in the JS ecosystem for a very long while and was a very early contributor of node/v8/crankshaft/uv and the other libraries that made JS on the server side possible. Back in the days when Ry pitched it in our Zynga office and everyone but our STG was skeptical about JS on the server side. Fun times.
To me, peak JS era was express and koa.js. After that it felt more and more complex with feature fatigue implementations that I don't really needed to solve my tasks at hand. Webpack, when it was still pitched at the local NuernbergJS, was also super nice as an idea and as an architecture to bundle things.
But after a while I got annoyed by the reinvention cycle. Everything got pretty bloated when it could also not have been, and even when they started as a fresh slim alternative to something else. Some folks being proud of maintaining 100s of micro packages (seriously?) and the whole shitshow with leftpad and the debates in TC39 after it happened kind of threw me away.
A couple years ago I gave Go another try and I started gradually to reimplement all the tools and libraries I've built before in it, and I loved the simplicity of it. Coming from an embedded C++ background, Go felt like the middle ground in between C and something VM managed, with lots of opinions that I hated at first.
But when you realize it's better to have an opinion on something for the sake of convention - even when you don't agree with it - than no opinion at all, leading to cluttered glue code everywhere - you start to cherish the ecosystem a lot.
In my opinion, when I'm looking at my production languages that I've used vs the ones I try to avoid as much as possible right now, it always boils down to the standard library and packages it offers.
Go's success is not because of its opinions and conventions alone (I hate them sometimes) but because of the standard library. In go, pretty much anything you want is either in the core or in golang.org/x. The only package we need for production software is cilium's ebpf package.
And I think that's the build ecosystem effect that people experience in zig/go/bun, but not in deno. Deno at this point is as alien to the JS language ecosystem as JerryScript is, and you could've replaced the underlying language completely, and have the same production efficiency.
[dead]
[dead]
Deno 2.3 was released after this article was published. Does this invalidate it?
Someone in a thread here a few months back described webdevs and their constant obsession with changing tooling, frameworks, etc. as "mayflies debating politics" or something to that effect and it has stuck with me since. Do all these new frameworks really have some sort of inherent flaws that require rebuilding everything from the ground up every 5 years or less? Or is it just something inherent in the language/web (and/or the sorts of people who become webdevs) that causes this phenomenon?
Or when JS devs suddenly discover concepts like "serverside rendering" and reinvent PHP and ASP.NET.
I said it back when Deno was released, and I'll say it again: I'm not doing another JavaScript rugpull. Node.js is here to stay, it's mature, and if you want performance, leave it behind for Go.
It was telling when you saw that basically all of Deno's interfaces were inspired by Go.
I'm so glad that as an industry we're saying "No," to all of these JavaScript authors who try to yank entire ecosystems along with them as they go try and monetize their spin-offs.
I'm too busy shipping to care.
I really want to like Deno. I started to watch "just a few minutes" of their keynote (I assume it was the most recent one, this was a month or so ago) and was intrigued by it and ended up watching the whole thing.
Then I went to go play with it add... I ran into odd compatibility issues (no, I don't remember them, I'm sorry) and tried Bun and everything "just worked". I'm sure Bun is not perfect but so far, every one-off script I've thrown at it has "just worked" which is amazing for me since I greatly prefer to work in TypeScript and (until recently with the type-stripping stuff in node) that was way harder than it needed to be.
If I never see an error about how I should change my "type" to "module" only to do it have it complain about 10 other things I will die happy.
I love Javascript, I love TypeScript, I feel like I'm primed to love Deno but all the parts of it felt half-baked. The comments in this article about things like Fresh and K/V store ring very true. I kept looking for things like "What backend framework should I use?" and the answers were all over the place and not very mature options. It felt like I was building on sand.
I hope I'm 100% wrong, I hope deno turns it around, I want more things like deno to exist, but the closing of data centers is not encouraging.