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.
dimal · 20h ago
I feel like they bit off more than they can chew. I want to like it, too. But they’re trying to create a whole new JavaScript ecosystem from the ground up, and a lot of it depends on maintaining a seamless compatibility layer that’s always a moving target.
It’s not just node. They have Fresh, which depends on Preact, which is a compatibility layer over the React API. Why? To save a few K on bundle size? They have JSR. Why?
The sales pitch is great: Typescript that just works. But in my experience, it didn’t “just work”. I tried building something with Fresh and ran into issues immediately. I bailed out.
davidkwast · 20h ago
Maybe Deno is the PyPy (from Python) to the JavaScript
pjmlp · 13h ago
To me Bun and Deno are more like egcs.
Imustaskforhelp · 13h ago
Yea I had the misfortune of thinking I could write it in deno because deno was available in the extra repository of archlinux whereas bun wasn't
Big mistake. my project really required me to have so many custom deno commands like deno run -A --sloppyimports and so much more and that it was really causing me to be unable to find previous history of commands (something which I have in zshrc because of it for some reason)
I really regret not using bun for it. Bun is faster & to me it doesn't matter that much because deno is boasting that it can run nextjs, well quite frankly, I don't use nextjs, I use sveltekit which works on literally every single platform.
And also instead of deno cloud, I personally prefer cloudflare workers with sveltekit. It has been a breeze of mind to be honest, but I am not sure if cloudflare workers is 100% compatible with nodejs/bun but my deployments have always worked for some reason.
travisgriggs · 19h ago
> I love Javascript, I love TypeScript…
Respect. Everyone gets to love something. I’ve been through enough iterations of technology that I don’t attach like that anymore. But I find it interesting when people express these opinions. Can you share a little context? What background you’re from, industry your working in, what motivates your love?
FeloniousHam · 6h ago
Enterprise frontend and backend development, all Typescript. TS is easily the most productive language I've ever used (professionally worked in Java, then Javascript, with some Ruby and PHP). It scales from no-types JS to architecture astronaut seamlessly. You only have to use what's useful to you. My only hangups were esoteric type errors, but AI made this go away (mostly with more specific explanations of the issue).
We ported our webapps from JS to Typescript a while back, and I hate having to read untyped code, even (maybe especially) the stuff written by our best coders, even my own code. You have to run the code in your head just to understand the shape of "order".
I would never go back, I cannot fathom the resistance in the JS community.
I currently work in the POS industry (day job) and Food Festival Payments (my business).
For me, when it's working, the Typescript development experience is bar-none for me. Typescript (Javascript) can run almost anywhere, or at least all the types of devices I would care about targeting. I enjoy using 1 language for backend and frontend development. I'm fully aware of the issues in the TS/JS ecosystem but I still really enjoy writing TS despite that. I feel like I get "tastes" of a perfect future where the issues I have are fixed and I hope the current state of affairs is just growing pains we look back on as we do the IE6 days (which I developed for, some people forgot how bad it used to be).
Being able to write backend, frontend (web, iOS, Android), all in the same language feels like a super power, especially when you can share code between them. Without Typescript (and Vue/Quasar) there is no way I'd be able to run by own company and support web/iOS/Android without cross-platform frameworks utilizing Typescript. I've written Java, I've written Swift, it's not that I can't write them it's just that I'm not good at either and I don't have the time to get better at either.
I haven't played much with other languages (aside from PHP, which I use for my day job) other than a todo/hello-world here and there because at the end of the day TS fills my needs and has something going for it that no other language does, it runs on the web natively. With WASM that might change (has changed?) but for now TS give me the best DX.
I'm not sure if that answers your question and I'm happy to expand further.
dwaltrip · 16h ago
There’s a million blog posts out there on this topic, if you are curious. Your questions are a bit probing and feel dangerously close to flamebait.
travisgriggs · 14h ago
Sigh. It wasn’t meant to be. There are indeed many and varied opinions on JS. This person seemed particularly exuberant. I was curious. I put the respect in to try and convey “safe to answer”. It appears I failed.
Shorn · 17h ago
It's interesting to me anyone could honestly like them both.
Personally, I loathe javascript but love typescript.
pjmlp · 13h ago
Since ES6 it isn't that bad.
On my hobby projects I tend to use script tags directly and don't bother with any of the build headaches I have at work, hobby projects are supposed to be fun.
joshstrange · 6h ago
I guess when I say I love Javascript I really mean I love the platform that JS has provided for Typescript. Can't have TS without JS and for all it's warts I loved learning/using JS (way before TS came out).
Now that TS exists I never write plain JS except a few old legacy pages here and there.
kamranjon · 19h ago
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).
brundolf · 18h ago
It's amazing for scripting, I use it for that all the time too. Just the basic premise of "we can have nice things [static types and a standard library] in scripts" is lovely
I hope it doesn't die, but I always thought the business model was going to be tough. Bun seems to be eclipsing Deno for sure, mainly due to its embrace of any and every syntax/feature/ecosystem, which makes me sad because Deno's opinionated stance was what had me so excited to begin with
teg4n_ · 17h ago
Deno has at least attempted to have a business model. Oven/Bun has none in sight and I am having a hard time seeing how they will be any more successful with getting people to pay them money.
brundolf · 16h ago
My understanding was it was basically the same business model: make a runtime people love, add some APIs that node doesn't have, and then offer an integrated hosting platform which supports all of those out of the box and hope people pick it instead of running their code elsewhere
We shall see
teg4n_ · 14h ago
One problem with that strategy is Bun can compile your whole server into a single executable. that’s like the simplest thing in the world to host
brundolf · 1h ago
And even without that, high-quality module systems and tooling make your code extremely portable, for both Bun and Deno. I run a Deno server for a small project and I don't host it on Deno Deploy
Which- this is one of my favorite things about this ecosystem, and especially these projects! It's Just Code, with a single system dependency, and you can run it in one place just as easily as any other
But that means you can't corral devs into your own hosting service, which makes it a tough business to make money in
IMO these kinds of projects just can't work as a startup. They need to be either community-led, or incubated within a larger business that uses them instead of trying to sell them
Hopefully one or both can make a transition if/when their business model fails to take off
to be honest, that single executable is nothing but the bun runtime packed with the code.
Theoretically a better approach could be (if we are talking about serverless providers supporting bun) is that we can compile it into bytecode and then just run a command with bun to run that bytecode and it would be faster. And to be honest, this feature is also available in deno and maybe its even coming to node IIRC, but bun supports bytecode in the executable whereas deno doesn't. I am never trying deno again, I liked their security model but it has really messed up with my ~/history and I had to type so much context to get suggestions and simple minute changes (lets say I don't want --A and I want in one command --net-only and in the second command some different flag
and now I can't really see my suggestions, I don't know maybe a skill issue but when I wrote a deno code which required me to write code and I had atleast ran it 50 times while developing it. Yeah it was a nightmare, never trying that again
edoceo · 19h ago
I read this same thing 25+ years ago. But we said Perl not Demo.
Use the right tool. Right means reasonable and productive. Let folk who don't ship argue stack. While they're flapping, you are sailing.
9d · 18h ago
I'll never understand how anyone ever liked Perl. I remember before PHP came out and Perl + CGI was what all the forums used, and that kind of made sense before Node.js + TypeScript + Nginx were a thing (maybe). But for scripts? I mean, I guess that it makes sense as a sort of bash on steroids, but at that point, why not have something more structured? Then again, that's around the time that Lua, Ruby, Python etc were all being invented, and for that exact use-case, to be a better scripting language that bash or Perl. But... why even use Perl as an intermediate step? Why not just say "hmm, bash is too simple for this... I'll write a --" oh, I think I get it now. Your only option was Perl for a while, if you didn't want to write a full fledged C or C++ script, which would be much more verbose and unforgiving.
pjmlp · 13h ago
It is a safer C, as Perl traditionally exposed the whole UNIX/POSIX API surface, and most tasks that grew out of a simple shell script didn't need to be written in straight C with all its issues managing strings and arrays.
Eventually Python became a better alternative, however for me it was mostly because I had enough of sigils, the way reference works and the hacky way of doing objects with blessed references.
And as the sibling comment points out CPAN.
The previous generation of Nokia NetAct infrastructure software as originally written for HP-UX, was a mix of CORBA C++ and Perl, and by 2007, it was still the main implementation. Nowadays it has been rewriten into Java.
xyzzy123 · 18h ago
Perl's sweet spots were CGIs & sysadmin. The advantage for sysadmin was easier portability in the days when there were a ton of flavours of UNIX systems.
The ergonomics & distribution of Perl in the 90s were unmatched, Ruby, Python, Lua were niche in comparison.
The other killer feature was CPAN, the Perl community basically invented language package management and everyone else copied it.
edoceo · 18h ago
Correct and the Patterns are repeating. Cycles. These are all transitive things. Reminder to keep some old-heads around, for perspective.
tpm · 9h ago
Perl is a great language in the right hands. In a previous job the whole software system for a successful gambling company (sans the publicly available website, that was PHP and later Java) ran on Perl, central server and hundreds of branch servers (and clients), the branch software was able work autonomously if the connection to the central one was down. Everything was fast, stable and there was a total of 4 of us working on it (2 with PhDs).
Right about when I was leaving it was decided there will be a transition to Java (won't go into the reasons for that) and the last programmer headcount I know of was more then 20.
usef- · 20h ago
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.
dbushell · 12h ago
The "rug pull" I was referring to is more about the general Deno philosophy. It's gone from being a modern forward-thinking JS runtime, to being just a Node/NPM copycat with its own half-baked packaging system.
In regards to Deno Deploy I agree that scaling down is nicer, but they're extremely hush about it. Using Deploy for anything beyond a hobby project is a business risk.
magicink81 · 20h ago
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.
dbushell · 12h ago
Dahl doesn't strike me as a business or product person. He's a genius when left to tinker. I get the impression Deno is floundering because of business/VC pressure. I see the original promise of Deno being compromised in an effort to increase users/customers. The project is no longer focused on just making a good JS runtime.
esses · 18h ago
I read the post from a business lens and an outside observer and this was my hope too. If Deno is buckling down and cutting costs in order to survive a long winter and carry on that seems like the right move for the business and the community at the expense of latency.
nake89 · 11h ago
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.
hoppp · 4h ago
Deno Deploy is a failure because it's not alluring to pay per request, especially with endpoints exposed to the open web.
Deno is still better than node and its sort of a swiss army knife for developing servers in Typescript fast.
rawkode · 46m ago
Which reputable edge providers? Besides Bunny, I don't think another exists.
9d · 18h ago
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.
dbushell · 12h ago
Node’s progress to modern stuff like ES modules has been glacial. Probably the primary reason Bun/Deno have any success. It is speeding up though, seems a fire was lit by competition.
pjmlp · 9h ago
It hardly matters on the enterprise space where projects live from LTS to LTS, and version upgrades only happen when someone allocates enough budget for a consultancy to come in and do some upgrade project.
These aren't the kind of folks rushing in to add Bun/Deno into their stacks.
crowcroft · 21h ago
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.
theThree · 19h ago
Maybe at some point. Their vsCode extension has 1M downloads, while Bun has 155k.
lioeters · 18h ago
That might be because Bun doesn't need an editor extension. It has type definitions and works fine with the built-in TypeScript language server, formatter, etc.
techgnosis · 21h ago
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.
dbushell · 12h ago
I hear that often, unfortunately it's just my name and I have too much equity in the domain!
TOGoS · 19h ago
import { SystemDBus } from "npm:@clebert/node-d-bus@1.0.0";
works surprisingly well, in my experience.
Sytten · 20h ago
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.
hardwaresofton · 19h ago
Everyone complains about Rust until they need high quality software that doesn't cut corners or isn’t impossible to write correctly.
I’m biased but learning difficulty aside, Rust is very optimal as a language.
pjmlp · 13h ago
Except other than the affine types, we can get the same high quality in ML derived languages, nothing special about Rust there.
In general the lack of quality is a side effect of the lack of liability in many software fields, not the programming language that gets used.
hardwaresofton · 11h ago
Fully agreed, other than the fact that Rust is absolutely beating Haskell in being the usable-in-production choice (and Haskell is WAY ahead of any other ML languages). Rust has just enough ML type goodness to make a big improvement AND it has the affine types which are legitimately novel.
Haskell is still struggling with what exactly to do about Linear types (and get the whole ecosystem on board), and strictness. While lazy-by-default is really amazing for certain things, Rust's approach just wins out for production code, I think.
> In general the lack of quality is a side effect of the lack of liability in many software fields, not the programming language that gets used.
This is true, until you have languages with truly novel features, like an implementation of affine types, and strong compilers.
Even just the difference between errors-as-values versus exceptions is a huge difference in my book -- Rust code gives you a clear chance/requirement to handle every possible error.
pjmlp · 11h ago
There are other options besides Haskell.
hardwaresofton · 9h ago
Thinking production readiness, not many? Ocaml maybe but seems a bit unused outside certain firms
pjmlp · 9h ago
Scala, Kotlin, F#, the ML inspired type system, with the plethora from Maven Central and NuGet universe packages, with IDEs from biggest IDE companies on the industry.
minraws · 7h ago
The biggest benefit over all these for me has been Rust is a more native and arguably easier to use across your stack, you can write a 1000 line lib in Rust with a C API and it will be almost no extra performance cost.
F# is even simpler but you have the entire C# and CLR complexity that you need to grok to read it.
Same with Scala, Kotlin and others... I find for people coming from not CLR or JVM or etc Rust has less to worry about.
I do agree all this also means a high intial learning curve but I just find myself liking the language more than others.
Honestly OCaml's ppx and multicore churn scared me away. And for performance focused stuff Rust is the best ML-curious language around, atleast for me and a lot of other people.
I personally like F# a lot too it might be the better language if only Microsoft invested in it more.
Kotlin and Scala on the other than are just imho too tightly coupled with JVM. I have seen AoT attempts for both but man are they not good enough.
Personally I just like the ethos of Rust more for some reason. The idea of safety through type system while ensuring we don't have any significant loss of performance is just awesome to me.
And I like to think a lot of people share that opinion.
I might be wrong, and so can a lot of other people but I just want to see the idea of Rust succeed.
To be clear I write a lot of Go and like Zig and Haskell as well but Rust just feels more practical. I am not sure what it is...
And I have checked I am not any less productive in Rust than in Go. Or anything else including C#
pjmlp · 6h ago
Most folks are more productive in other languages than Go, but it hit jackpot with CNCF projects and DevOps.
GraalVM exists, no need for the snowflake projects from Scala and Kotlin native.
The JVM and CLR completely, is exactly what makes them having great IDE tooling and libraries.
belmont_sup · 6h ago
Your experience and values match mine. Perhaps I’m not a minority in the hn community.
belmont_sup · 7h ago
While I tinker and enjoy these languages themselves (Scala/F#), unless one doesn’t have the libraries and aren’t willing to write them, Cargo and rust-analyzer are just so good. That paired with the basic http-based work I do now, and the ability to use any IDE I want with minimal setup, I can pay the slight borrow checker tax for these ergonomics. Perhaps I’m a minority and just need to give Kotlin a chance.
unchar1 · 11h ago
Library and ecosystem support is a big thing. Rust being ML-ish, and having a large ecosystem is probably it's greatest strength
pjmlp · 11h ago
There is plenty of choice in Maven Central, NuGet, Opam, and Hackage for most tasks anyone can think of.
bsder · 20h ago
So, basically, people don't seem to value security (Deno) very much but value speed (Bun) quite a lot.
That is pretty much the standard problem across programming.
hu3 · 17h ago
I value the path of least resistance, and Bun wins hands down because that's one of its priorities.
In contrast, Deno gambled that Node compatibility wasn't critical and lost. Now they're backpedaling.
pjmlp · 13h ago
Mostly because liability is only a thing in some areas, when programming becomes as scrutinised as other industries, and basic stuff like returns due to failed functionality are normal instead of "try to reboot it", security and quality will have other priority.
randall · 20h ago
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.
DimmieMan · 19h ago
Personally the problem is just lack of communication. When 2 of your core products look abandoned your inviting this criticism.
I love using Deno, even with the remaining node issues (usually relating to something in the Tower of Babel that is meta frameworks) it’s an exceedingly boring tool which is precisely what I’ve wanted for typescript for years.
I can see they have technical potential but what I want more than anything else right now is just some confidence they’ll be around in 5 years, in this sense I can’t seperate the software and the business as there’s not one without the other.
Hopefully the fresh & deploy v2 updates they’ve been silently working on deliver and this entire concern will evaporate.
d0100 · 18h ago
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
bluelightning2k · 13h ago
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.
csiegert · 7h ago
It’s definitely nice to know that nothing gets executed, read, written or sent without permission from the user when running a program/script with Deno.
You complain the flags always have to be set to get anything working so they are supposedly useless. No, you don’t have to set them in a grant-all fashion. All flags allow fine-grained permissions, e.g. --allow-env=API_KEY,PORT only allows access to the env vars API_KEY and PORT instead of all env vars. The same principle applies to --allow-net, --allow-run, --allow-read, --allow-write, etc. See `deno run --help` or https://docs.deno.com/runtime/fundamentals/security/ for more.
dbushell · 12h ago
I think that’s still a win for Deno. Even using all but one flag is better than carte blanche. That said I often —allow-all because Im lazy. Containerising stuff helps.
rglover · 21h ago
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.
Oh okay thanks yeah I only found that CDN thing on google too but was wondering.
fun fact I was considering making a bun-first CLI framework and current working name was Bunny
exiguus · 18h ago
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.
BoorishBears · 18h ago
> Deno try to go the vercel way
Future devs will look back and wonder why we randomly let Guillermo Rauch ruin the ecosystem for a few years.
exiguus · 18h ago
98% of the projects on vercel env are not enterprise - so i don't think so
pjmlp · 13h ago
In what concerns me, they certainly are, the reason I initially bothered with Next.js, are all those SaaS products that favour only React on their SDKs, with Next.js as second one, followed by everything else.
Many of those SaaS vendors have partner agreements with Vercel.
exiguus · 5h ago
I think its a strategic decision to use vercel for hosting and for example deno deploy or cloudfront for edge/lambdas to do frontend instead of using directly AWS. And have no backend or a backend everywhere else then on AWS.
The strategic behind it, is to avoid a dev/sec/cloud ops team that might cost yearly more then paying the 150-200% of costs that you have when you host it on AWS directly. But the 50-100% plus, will save you all the AWS terraforming, IAM, SecOP stuff. If you don't need SQS or a APIGateway etc., Vercel might be the way to go.
Talking about Next: Before there was only Angular with universal rendering that could do SSR / ISR. Second one was Next and den Nuxt. SSR or ISR is often a must have in enterprise projects. If it is not a internal app, you have todo SSR. And with a modern architecture, you decouple the frontend. So, no other options.
Recently we have also Remix, Astro and Svelte Kit for that. And the market get much more diverse, what i like.
BoorishBears · 18h ago
Not sure how this follows what I said.
Rauch obviously doesn't care about the sustainability of his "JS library, but now it needs to become a unicorn to succeed" playbook because it's already making him money.
exiguus · 4h ago
I think i got it: The Next core: ISR/SSR - is practically replaced with React Server Components and Next has to move to a Platform to keep its worth.
Defletter · 10h ago
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 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).
mac9 · 8h ago
To clarify KV uses SQLite in development but FoundationDB when deployed to Deno Deploy.
frou_dh · 20h ago
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.
RainyDayTmrw · 21h ago
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.
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.
MortyWaves · 21h ago
I'm not convinced. The author has had a pretty negative view of Deno, JSR, etc since the beginning.
dbushell · 13h ago
My original view on Deno and JSR was positive and optimistic (it's all there on my blog). I've been using it for years and I still use Deno because it has more convenient/ergonomic APIs than Node.
If Deno halving the Deploy regions twice from 35 to 12, and 12 to 6 doesn't convince you then I don't know what will
MortyWaves · 2h ago
It doesn’t convince me. You seem to be determined to conflate two very different things. If I use Deno it’s because it’s a language runtime. Deno Deploy is as the name says.
The title should be, if anything, “the decline of an after thought deployment tool”.
knowitnone · 20h ago
I don't know the history the aurthor said he went all in on Deno. That doesn't seem negative at all.
gr4vityWall · 9h ago
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.
eranation · 20h ago
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?
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.
GianFabien · 13h ago
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?
dbushell · 12h ago
Would such versions be much slimmer? Most of the binary is the V8 engine. The compatibility layers are largely thin wrappers around APIs.
Anyway, it does strike me as an odd pursuit regardless. Obviously they're seeing compatibility as opening the door for more potential customers. But as a dev, if I wanted Node compat I'd just use Node.
justanotheratom · 19h ago
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.
mmastrac · 20h ago
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.
pjmlp · 13h ago
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.
sam_goody · 13h ago
ValKey and Redis, MariaDB and MySQL, Freenginx and Nginx etc.
It is very hard to take the crown from a well used platform, and the originals generally manage to maintain at least parity, but the forks tend to shoulder along for a really long time, and sometimes they win.
tbolt · 9h ago
io.js
bluelightning2k · 14h ago
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
mrcwinn · 19h ago
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?
zachwill · 19h ago
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.
weinzierl · 11h ago
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.
throw1223323 · 18h ago
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?
bluelightning2k · 14h ago
Couple things:
First, perf you mention is from fundamentally CPU intensive workloads, not a sparse async environment like a typical server.
Second (far more important) the reason we do this is type safety. We don't want types to break at the handover or to maintain them twice. We eliminate a huge category of issues and mental overhead.
This maintainability and simplicity is worth more (to me at least) than perf.
As a bonus there's also directly shared utils, classes etc. which again can be reused across client/server but more importantly stay in sync.
throw1111221 · 2h ago
I am curious, how do you handle version skew between frontend / backend when you're reusing code + types?
pjmlp · 13h ago
More depressing is those of us that would rather use Java, C#, basically any JVM or .NET language, or even if it must really be, Go, but have to bother dealing with nodejs instead, because reasons.
worik · 18h ago
> Typescript recently announced a rewrite in Go for an expected 10x performance gain
Really?
Why use Typescript at all, in that case?
I really do not know
riknos314 · 18h ago
The improvement is in `tsc`, the type checker. The improvement is reduced build times and thus faster developer or agent cycle times.
selljamhere · 18h ago
The Typescript compiler, currently JavaScript, is being rewritten in Go. The 10x performance gain is in build time, which is still a major speedup and will shrink the development loop.
cookiengineer · 12h ago
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.
hu3 · 11h ago
> To me, peak JS era was express and koa.js.
I cherish those times of calmer waters.
At the time I had high hopes for Hapi.js (https://hapi.dev), created by Walmart folks.
But I don't hear much about it these days.
evbogue · 21h ago
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.
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?
HideousKojima · 21h ago
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.
Alupis · 21h ago
I think it's mostly due to nobody solving "it" yet. If you look at the various frameworks, they approach the same problems in wildly different ways, even if the underlying ideas are similar.
Take Svelte vs. Angular vs NextJS for example - they all sort of do same thing (create web apps), but take very different approaches. People choose these various frameworks for reasons, including what style makes the most sense to them, which one is easier to use, which one might be more performant for their use, etc.
There's no clear "right" answer to which framework is best - in other words... the field has not yet been min-maxed.
Regarding server-side rendering - I'd assert today's SSR is not really the same thing as classical SSR. Today's SSR is almost always a hybrid with some sort of client-side payload backed by server-side stuff, giving you the best of both worlds.
ho_lee_phuk · 20h ago
People are going to downvote me for saying this, but because JavaScript's built-in batteries are so weak, everyone re-invents them all the time in slightly different ways.
- How do you build a Rust project? With cargo
- How about the Go project? With the Go tool
- How do you build a backend JavaScript project? - node, yarn (with different incompatible yarn versions), bun, and 5 other types of tools
I manage a 100+ engineer team, and any time an engineer complains about our Python stack being unwieldy, I propose they work on frontend tooling for a week.
JavaScript tooling makes Python tooling fragmentation look sane.
steezeburger · 19h ago
How can you possibly realistically manage a 100+ engineer team? 100+ direct reports?
Also, the Python landscape is just as bad as frontend! And I enjoy writing both quite a bit. Pip, pipenv, pyenv, poetry, conda, virtualenv, uv, ruff, black, pep8, etc, etc. They both need massive improvements.
ho_lee_phuk · 18h ago
> How can you possibly realistically manage a 100+ engineer team? 100+ direct reports?
They report to engineering managers who report to me.
> Also, the Python landscape is just as bad as frontend! And I enjoy writing both quite a bit. Pip, pipenv, pyenv, poetry, conda, virtualenv, uv, ruff, black, pep8, etc, etc. They both need massive improvements.
Yeah, it is bad, but a notch better.
Most things in Python land are 5-year-olds.
5-year-old React or Vue codebases (the two most popular frameworks) are not backward-compatible with the current release.
And we cannot stay on old versions as we have a government as a customer who requires SBOM, and SBOM declaring unmaintained dependencies creates even more trouble than upgrading frontends regularly!
LikeAnElephant · 21h ago
> mayflies debating politics
Well said to that person. I think about this a lot, and have wondered if it's the advent of code school? Which itself was a result of the insane FAANG hiring sprees + salaries (where was a result of 0% interest rates among other things).
A developer going through code school in the last ~decade was taught React, GraphQL, Redux, or whatever the cool framework was at that moment with the goal of getting hired (not learning how to build well).
I'm fortunate to have entered the market in the early 2000's juuuust before that wave started. I'm only now getting a few gray hairs in my beard and am glad I was taught to understand _all_ parts of a system. I don't know if that'd be the case if I started in the mid-2010's.
ho_lee_phuk · 20h ago
> 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?
These frameworks are JavaScript frameworks in the sense that English and French are written using the Latin script.
They are far apart from each other for day-to-day work.
ianbicking · 20h ago
In one way or another they are all circling around a concept of "one runtime environment that is as close as possible to the browser JavaScript runtime"
So in a sense, yes, they need to converge on the concept of a singular runtime, something which is achieved by fiat with server-side rendering.
pjmlp · 12h ago
That is the only thing that makes me happy about Next.js, when I would rather be using ASP.NET or Spring/Quarkus.
leptons · 21h ago
ASP.NET supports JScript, I was doing "serverside rendering" with Javascript and ASP.NET about 7 years before nodejs was a thing. ASP.NET and PHP were reinventions of previous tech.
As for webdevs and tech-churn, there are a lot of people that want to make their mark on the industry in one way or another. And it's human nature to want to make a better mousetrap. Combine that with the ease of publishing to npm and you get a lot of people reinventing a lot of wheels. I wouldn't really say the previous tech is "flawed" but anyone can find a reason to dislike anything, and that's especially so for nerds.
I'm not much of an early adopter. I can create solutions with existing tech just fine. I'd maybe take a look at Deno once AWS has it as runtime option in Lambda, but that seems unlikely to happen.
joshstrange · 21h ago
> I'd maybe take a look at Deno once AWS has it as runtime option in Lambda, but that seems unlikely to happen.
Are you using lambda currently for node? If so can I ask (at a high level) what your stack/deploy process is? I'm interested to know what someone who doesn't identify as an early adopter is using for lambda.
I constantly waffle my decision to go with lambda (Typescript/nodeJS) for my company. In some ways it's amazing, in other it's blow-your-brains-out frustrating. I've benefited from my use of it overall I think but I often wonder if Express/NestJS/other would have been the better route (if not going all the way back to my roots with PHP).
I'm using SST 2 (which uses CDK, which uses CloudFormation) to deploy my functions (1 function per endpoint). Unfortunately SST v3 decided to drop CDK and move to terraform but the upgrade path is almost non-existent. Essentially "Just spin up new infra with v3 then turn off your v2 stuff". I understand their decision and it was probably the right decision, it still burned me pretty bad. Needless to say, this has soured me (I already moved from Serverless Framework to SST a couple years ago and made it through the v1 -> v2 transition) and I'm considering alternatives. Ideally ones that don't require a complete rewrite but due to the fact that I'm not using any kind of framework (only my homegrown code/scaffolding) it might not be that hard to replace the "leaves" (endpoints) of my stack while keeping most of the other code the same.
leptons · 3h ago
>I'm interested to know what someone who doesn't identify as an early adopter is using for lambda.
I was actually an early adopter of Lambda. At the time I didn't realize it was new, I was just looking for a way to host a new nodejs project in a scalable way. I did not want to spin up an EC2 instance for an Express based project and then have to manage load balancing and everything else that comes with it when the project needed to scale. I thought, why not make it scalable from the start? So I searched and found Lambda, which had launched only a few months earlier. It seemed great and exactly what I was looking for. I didn't realize it at the time that it was so new. I found it during Christmas vacation 2014 where I had a couple of weeks of "downtime" away from work to focus on my personal project and Lambda quickly won me over. Lambda was released in November 2014, so it was really new and I was unknowingly a very early adopter of it.
There was no "Serverless" project at the time. So I created my own toolchain that I still use to this day. It's very simple. The dev program I created simply watches a folder for file changes, and then .ZIPs up the files, sends them to S3, then a companion Lambda function does "npm install" within a Lambda instance, then .ZIPs up the entire package and then updates the Lambda function I'm working on - this is done so any dependencies that require compilation will compile for the Lambda environment and not my local dev machine environment. It just works. I've added support for Layers when those became a thing, but other than that it's very simple and has withstood the test of time. I did try "Serverless" last year for another project, and it was not to my liking at all. I don't like giving "Serverless" access to my AWS account, and lots of other things made it not a good fit for me. YMMV.
Yeah, there are some frustrating times with Lambda, but those are usually related to getting stuff running like a headless browser, or ffmpeg, or other heavier lifts to run inside a Lambda. But, I've got all that stuff working, and once it works, it just keeps working. I haven't touched some of the older Lambdas in years, some are still running on node v12.
The only thing I kind of dislike is decommissioning of older nodejs runtimes so they aren't available at all for new Lambdas anymore. It's not that big a deal until I run into a situation where updating an older Lambda requires me to update the runtime, and there would be breaking changes due to different runtimes. But, it really is best if my code is updated to run on the latest nodejs version, although when I sometimes fall into this situation I start to question my choice of using Lambda. My regret is always short lived though, because Lambda is great in so many other ways.
andrewmcwatters · 21h ago
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.
danpalmer · 20h ago
> I'm not doing another JavaScript rugpull. Node.js is here to stay, it's mature
I'm a bit of an outsider here, I've only run a little Node in production in the past, and used it on and off for ~13 years. My take is that these projects all get some hype specifically because Node.js is not mature.
I've got a hobby project that has a bit of Node in it, and it very plainly difficult (Which imports am I using? Not the good one. Which language am I writing? Not the typed one. Which package manager do I use? etc). Getting a new project set up well takes time and effort, it is not the default that Node gives you (at least in ~early 2024 maybe?).
I can really get behind the "not another JS rugpull" idea, but I also see why everyone is constantly wanting to get off Node itself onto something Node-like that solves their problems.
andrewmcwatters · 17h ago
You avoid much of this by ignoring new things that are new for the sake of being new. Imports instead of require? Waste of time. TypeScript? Waste of time. Widely unpopular opinion. Package managers other than npm? Waste of time.
Just ignore it all and you're fine. And definitely ignore the people who keep changing things on you.
If it doesn't help me ship more product, I do not care.
danpalmer · 16h ago
Moving to Typescript may be unnecessary, but starting a brand new codebase in 2025 and using JavaScript instead of Typescript is a hard one to defend. The fact that Node.js doesn't support it out of the box, let alone encourage it as the default, is much of the reason why the community is constantly clamouring for something better.
andrewmcwatters · 5h ago
It’s pretty easy, its not necessary.
curtisblaine · 14h ago
Node.js supports typescript out of the box by stripping types since node 22 (current LTS is 24, iirc)
I dunno. How much do you value isomorphism and code sharing?
behnamoh · 21h ago
I legit read your comment as "I deno" :)
theThree · 20h ago
In web backend, Node.js is not slower than Go.
9rx · 17h ago
Execution performance might be similar, but Node.js and Deno execution performance are also similar (both use v8 – there is only so much you can optimize beyond that), so clearly the comment is not talking about execution performance. Deno sells itself as having faster development performance, so presumably that is what performance is in reference to.
It is hard to deny that Go isn't much more performant on the development end. Someone who is inexperienced might be slowed down due to that inexperience negating the performance boost, sure, but when one is concerned about developer performance they will be happy to incur the small upfront cost to become experienced for the bigger payoff later.
(It is debatable if Go is really the king of developer performance, you might do even better with another language, but what is certain is that it is not Javascript/Typescript)
williamstein · 17h ago
For some applications especially those that benefit from cpu-bound parallelism, it is possible to write much faster code with Go than Node.js, e.g., consider the recent port of the Typescript compiler from Javascript to Go:
I think 9rx agrees with you. Node.js shines as a web server. It can be made fast at CPU-bound tasks as well, but you wouldn't be writing idiomatic JS/TS.
The recent tsc port from TS to Go is a good example of that. The TypeScript code in the compiler relied a lot on polymorphism, which made it really hard for the JIT to do a good job.
The Go port enabled them to 'rewrite' it keeping the logic more-or-less 1:1 and land a good performance increase. IMO it was a good decision, specially the language choice, and much saner than what a JIT-friendly TS compiler would be.
danpalmer · 20h ago
[citation needed]
theThree · 19h ago
From my own testing. In high-concurrency scenarios, their performance is roughly the same, and Node uses less memory. When it comes to string concatenation, Go has to do a lot of extra work (no "+",Estimating string length, Preallocate memory ) just to catch up with the speed of Node (simply using "+").
Aeolun · 20h ago
Eh, there’s some use cases where you can see some speedup from going to Go/Rust, but I’ll admit they’re pretty minimal.
josephg · 20h ago
That’s fair but -
I replaced node with bun a few months ago and I haven’t looked back. All my JavaScript projects run with no changes. Performance is on par or better compared to nodejs. It can run typescript directly without needing to be compiled. It also has a built in bundler & minifier (bun build), and some other goodies. The command line is a bit different - you need to “bun run” to run scripts. But eh.
Nodejs still works fine, of course. But being able to run typescript directly is killer.
curtisblaine · 14h ago
Node.js supports typescript out of the box by stripping types since node 22 (current LTS is 24, iirc)
Wasn’t the USP of deno the baked in security features?
How are bun and nodejs on that side?
nicce · 18h ago
Bun has segmentation faults regularly if you look issue tracker. Security is not there yet.
andrewmcwatters · 17h ago
I get the point of Deno's sandboxing, but at the same time, like, imagine writing software and not knowing whether your own code is secure because you're that reliant on downstream dependencies and have to update frequently because your dependency authors are constantly releasing enough that you have no confidence to say otherwise.
It's just straight up not a problem other authors are thinking about regularly in other programming languages, because we don't have left-pad crises in other programming language ecosystems.
kassner · 12h ago
Deno 2.3 was released after this article was published. Does this invalidate it?
dbushell · 12h ago
Yes, all of the criticism in my post is entirely invalidated.
No, the Deno runtime gets regular updates. I don’t think you read the article lol.
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.
It’s not just node. They have Fresh, which depends on Preact, which is a compatibility layer over the React API. Why? To save a few K on bundle size? They have JSR. Why?
The sales pitch is great: Typescript that just works. But in my experience, it didn’t “just work”. I tried building something with Fresh and ran into issues immediately. I bailed out.
Big mistake. my project really required me to have so many custom deno commands like deno run -A --sloppyimports and so much more and that it was really causing me to be unable to find previous history of commands (something which I have in zshrc because of it for some reason)
I really regret not using bun for it. Bun is faster & to me it doesn't matter that much because deno is boasting that it can run nextjs, well quite frankly, I don't use nextjs, I use sveltekit which works on literally every single platform.
And also instead of deno cloud, I personally prefer cloudflare workers with sveltekit. It has been a breeze of mind to be honest, but I am not sure if cloudflare workers is 100% compatible with nodejs/bun but my deployments have always worked for some reason.
Respect. Everyone gets to love something. I’ve been through enough iterations of technology that I don’t attach like that anymore. But I find it interesting when people express these opinions. Can you share a little context? What background you’re from, industry your working in, what motivates your love?
We ported our webapps from JS to Typescript a while back, and I hate having to read untyped code, even (maybe especially) the stuff written by our best coders, even my own code. You have to run the code in your head just to understand the shape of "order".
I would never go back, I cannot fathom the resistance in the JS community.
I currently work in the POS industry (day job) and Food Festival Payments (my business).
For me, when it's working, the Typescript development experience is bar-none for me. Typescript (Javascript) can run almost anywhere, or at least all the types of devices I would care about targeting. I enjoy using 1 language for backend and frontend development. I'm fully aware of the issues in the TS/JS ecosystem but I still really enjoy writing TS despite that. I feel like I get "tastes" of a perfect future where the issues I have are fixed and I hope the current state of affairs is just growing pains we look back on as we do the IE6 days (which I developed for, some people forgot how bad it used to be).
Being able to write backend, frontend (web, iOS, Android), all in the same language feels like a super power, especially when you can share code between them. Without Typescript (and Vue/Quasar) there is no way I'd be able to run by own company and support web/iOS/Android without cross-platform frameworks utilizing Typescript. I've written Java, I've written Swift, it's not that I can't write them it's just that I'm not good at either and I don't have the time to get better at either.
I haven't played much with other languages (aside from PHP, which I use for my day job) other than a todo/hello-world here and there because at the end of the day TS fills my needs and has something going for it that no other language does, it runs on the web natively. With WASM that might change (has changed?) but for now TS give me the best DX.
I'm not sure if that answers your question and I'm happy to expand further.
Personally, I loathe javascript but love typescript.
On my hobby projects I tend to use script tags directly and don't bother with any of the build headaches I have at work, hobby projects are supposed to be fun.
Now that TS exists I never write plain JS except a few old legacy pages here and there.
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).
I hope it doesn't die, but I always thought the business model was going to be tough. Bun seems to be eclipsing Deno for sure, mainly due to its embrace of any and every syntax/feature/ecosystem, which makes me sad because Deno's opinionated stance was what had me so excited to begin with
We shall see
Which- this is one of my favorite things about this ecosystem, and especially these projects! It's Just Code, with a single system dependency, and you can run it in one place just as easily as any other
But that means you can't corral devs into your own hosting service, which makes it a tough business to make money in
IMO these kinds of projects just can't work as a startup. They need to be either community-led, or incubated within a larger business that uses them instead of trying to sell them
Hopefully one or both can make a transition if/when their business model fails to take off
https://docs.deno.com/runtime/reference/cli/compile/
Theoretically a better approach could be (if we are talking about serverless providers supporting bun) is that we can compile it into bytecode and then just run a command with bun to run that bytecode and it would be faster. And to be honest, this feature is also available in deno and maybe its even coming to node IIRC, but bun supports bytecode in the executable whereas deno doesn't. I am never trying deno again, I liked their security model but it has really messed up with my ~/history and I had to type so much context to get suggestions and simple minute changes (lets say I don't want --A and I want in one command --net-only and in the second command some different flag
and now I can't really see my suggestions, I don't know maybe a skill issue but when I wrote a deno code which required me to write code and I had atleast ran it 50 times while developing it. Yeah it was a nightmare, never trying that again
Use the right tool. Right means reasonable and productive. Let folk who don't ship argue stack. While they're flapping, you are sailing.
Eventually Python became a better alternative, however for me it was mostly because I had enough of sigils, the way reference works and the hacky way of doing objects with blessed references.
And as the sibling comment points out CPAN.
The previous generation of Nokia NetAct infrastructure software as originally written for HP-UX, was a mix of CORBA C++ and Perl, and by 2007, it was still the main implementation. Nowadays it has been rewriten into Java.
The ergonomics & distribution of Perl in the 90s were unmatched, Ruby, Python, Lua were niche in comparison.
The other killer feature was CPAN, the Perl community basically invented language package management and everyone else copied it.
> 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.
In regards to Deno Deploy I agree that scaling down is nicer, but they're extremely hush about it. Using Deploy for anything beyond a hobby project is a business risk.
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.
Deno is still better than node and its sort of a swiss army knife for developing servers in Typescript fast.
These aren't the kind of folks rushing in to add Bun/Deno into their stacks.
I’m biased but learning difficulty aside, Rust is very optimal as a language.
In general the lack of quality is a side effect of the lack of liability in many software fields, not the programming language that gets used.
Haskell is still struggling with what exactly to do about Linear types (and get the whole ecosystem on board), and strictness. While lazy-by-default is really amazing for certain things, Rust's approach just wins out for production code, I think.
> In general the lack of quality is a side effect of the lack of liability in many software fields, not the programming language that gets used.
This is true, until you have languages with truly novel features, like an implementation of affine types, and strong compilers.
Even just the difference between errors-as-values versus exceptions is a huge difference in my book -- Rust code gives you a clear chance/requirement to handle every possible error.
F# is even simpler but you have the entire C# and CLR complexity that you need to grok to read it.
Same with Scala, Kotlin and others... I find for people coming from not CLR or JVM or etc Rust has less to worry about.
I do agree all this also means a high intial learning curve but I just find myself liking the language more than others.
Honestly OCaml's ppx and multicore churn scared me away. And for performance focused stuff Rust is the best ML-curious language around, atleast for me and a lot of other people.
I personally like F# a lot too it might be the better language if only Microsoft invested in it more.
Kotlin and Scala on the other than are just imho too tightly coupled with JVM. I have seen AoT attempts for both but man are they not good enough.
Personally I just like the ethos of Rust more for some reason. The idea of safety through type system while ensuring we don't have any significant loss of performance is just awesome to me.
And I like to think a lot of people share that opinion.
I might be wrong, and so can a lot of other people but I just want to see the idea of Rust succeed.
To be clear I write a lot of Go and like Zig and Haskell as well but Rust just feels more practical. I am not sure what it is...
And I have checked I am not any less productive in Rust than in Go. Or anything else including C#
GraalVM exists, no need for the snowflake projects from Scala and Kotlin native.
The JVM and CLR completely, is exactly what makes them having great IDE tooling and libraries.
That is pretty much the standard problem across programming.
In contrast, Deno gambled that Node compatibility wasn't critical and lost. Now they're backpedaling.
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 love using Deno, even with the remaining node issues (usually relating to something in the Tower of Babel that is meta frameworks) it’s an exceedingly boring tool which is precisely what I’ve wanted for typescript for years.
I can see they have technical potential but what I want more than anything else right now is just some confidence they’ll be around in 5 years, in this sense I can’t seperate the software and the business as there’s not one without the other.
Hopefully the fresh & deploy v2 updates they’ve been silently working on deliver and this entire concern will evaporate.
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
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.
You complain the flags always have to be set to get anything working so they are supposedly useless. No, you don’t have to set them in a grant-all fashion. All flags allow fine-grained permissions, e.g. --allow-env=API_KEY,PORT only allows access to the env vars API_KEY and PORT instead of all env vars. The same principle applies to --allow-net, --allow-run, --allow-read, --allow-write, etc. See `deno run --help` or https://docs.deno.com/runtime/fundamentals/security/ for more.
They use Deno for their edge scripting feature: https://bunny.net/blog/introducing-bunny-edge-scripting-a-be...
fun fact I was considering making a bun-first CLI framework and current working name was Bunny
Future devs will look back and wonder why we randomly let Guillermo Rauch ruin the ecosystem for a few years.
Many of those SaaS vendors have partner agreements with Vercel.
Talking about Next: Before there was only Angular with universal rendering that could do SSR / ISR. Second one was Next and den Nuxt. SSR or ISR is often a must have in enterprise projects. If it is not a internal app, you have todo SSR. And with a modern architecture, you decouple the frontend. So, no other options. Recently we have also Remix, Astro and Svelte Kit for that. And the market get much more diverse, what i like.
Rauch obviously doesn't care about the sustainability of his "JS library, but now it needs to become a unicorn to succeed" playbook because it's already making him money.
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).
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.
[1]: https://deno.land/std@0.164.0
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.
If Deno halving the Deploy regions twice from 35 to 12, and 12 to 6 doesn't convince you then I don't know what will
The title should be, if anything, “the decline of an after thought deployment tool”.
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.
https://www.reddit.com/r/Deno/comments/1g5mu0l/thats_all_goo...
https://www.reddit.com/r/Deno/comments/1dpexwv/dependency_vu...
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?
Anyway, it does strike me as an odd pursuit regardless. Obviously they're seeing compatibility as opening the door for more potential customers. But as a dev, if I wanted Node compat I'd just use Node.
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.
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.
It is very hard to take the crown from a well used platform, and the originals generally manage to maintain at least parity, but the forks tend to shoulder along for a really long time, and sometimes they win.
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
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?
- 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?
First, perf you mention is from fundamentally CPU intensive workloads, not a sparse async environment like a typical server.
Second (far more important) the reason we do this is type safety. We don't want types to break at the handover or to maintain them twice. We eliminate a huge category of issues and mental overhead.
This maintainability and simplicity is worth more (to me at least) than perf.
As a bonus there's also directly shared utils, classes etc. which again can be reused across client/server but more importantly stay in sync.
Really?
Why use Typescript at all, in that case?
I really do not know
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.
I cherish those times of calmer waters.
At the time I had high hopes for Hapi.js (https://hapi.dev), created by Walmart folks.
But I don't hear much about it these days.
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.
https://news.ycombinator.com/item?id=43458231
https://news.ycombinator.com/item?id=42806304
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?
Or when JS devs suddenly discover concepts like "serverside rendering" and reinvent PHP and ASP.NET.
Take Svelte vs. Angular vs NextJS for example - they all sort of do same thing (create web apps), but take very different approaches. People choose these various frameworks for reasons, including what style makes the most sense to them, which one is easier to use, which one might be more performant for their use, etc.
There's no clear "right" answer to which framework is best - in other words... the field has not yet been min-maxed.
Regarding server-side rendering - I'd assert today's SSR is not really the same thing as classical SSR. Today's SSR is almost always a hybrid with some sort of client-side payload backed by server-side stuff, giving you the best of both worlds.
JavaScript tooling makes Python tooling fragmentation look sane.
Also, the Python landscape is just as bad as frontend! And I enjoy writing both quite a bit. Pip, pipenv, pyenv, poetry, conda, virtualenv, uv, ruff, black, pep8, etc, etc. They both need massive improvements.
They report to engineering managers who report to me.
> Also, the Python landscape is just as bad as frontend! And I enjoy writing both quite a bit. Pip, pipenv, pyenv, poetry, conda, virtualenv, uv, ruff, black, pep8, etc, etc. They both need massive improvements.
Yeah, it is bad, but a notch better. Most things in Python land are 5-year-olds. 5-year-old React or Vue codebases (the two most popular frameworks) are not backward-compatible with the current release.
And we cannot stay on old versions as we have a government as a customer who requires SBOM, and SBOM declaring unmaintained dependencies creates even more trouble than upgrading frontends regularly!
Well said to that person. I think about this a lot, and have wondered if it's the advent of code school? Which itself was a result of the insane FAANG hiring sprees + salaries (where was a result of 0% interest rates among other things).
A developer going through code school in the last ~decade was taught React, GraphQL, Redux, or whatever the cool framework was at that moment with the goal of getting hired (not learning how to build well).
I'm fortunate to have entered the market in the early 2000's juuuust before that wave started. I'm only now getting a few gray hairs in my beard and am glad I was taught to understand _all_ parts of a system. I don't know if that'd be the case if I started in the mid-2010's.
These frameworks are JavaScript frameworks in the sense that English and French are written using the Latin script.
They are far apart from each other for day-to-day work.
So in a sense, yes, they need to converge on the concept of a singular runtime, something which is achieved by fiat with server-side rendering.
As for webdevs and tech-churn, there are a lot of people that want to make their mark on the industry in one way or another. And it's human nature to want to make a better mousetrap. Combine that with the ease of publishing to npm and you get a lot of people reinventing a lot of wheels. I wouldn't really say the previous tech is "flawed" but anyone can find a reason to dislike anything, and that's especially so for nerds.
I'm not much of an early adopter. I can create solutions with existing tech just fine. I'd maybe take a look at Deno once AWS has it as runtime option in Lambda, but that seems unlikely to happen.
Are you using lambda currently for node? If so can I ask (at a high level) what your stack/deploy process is? I'm interested to know what someone who doesn't identify as an early adopter is using for lambda.
I constantly waffle my decision to go with lambda (Typescript/nodeJS) for my company. In some ways it's amazing, in other it's blow-your-brains-out frustrating. I've benefited from my use of it overall I think but I often wonder if Express/NestJS/other would have been the better route (if not going all the way back to my roots with PHP).
I'm using SST 2 (which uses CDK, which uses CloudFormation) to deploy my functions (1 function per endpoint). Unfortunately SST v3 decided to drop CDK and move to terraform but the upgrade path is almost non-existent. Essentially "Just spin up new infra with v3 then turn off your v2 stuff". I understand their decision and it was probably the right decision, it still burned me pretty bad. Needless to say, this has soured me (I already moved from Serverless Framework to SST a couple years ago and made it through the v1 -> v2 transition) and I'm considering alternatives. Ideally ones that don't require a complete rewrite but due to the fact that I'm not using any kind of framework (only my homegrown code/scaffolding) it might not be that hard to replace the "leaves" (endpoints) of my stack while keeping most of the other code the same.
I was actually an early adopter of Lambda. At the time I didn't realize it was new, I was just looking for a way to host a new nodejs project in a scalable way. I did not want to spin up an EC2 instance for an Express based project and then have to manage load balancing and everything else that comes with it when the project needed to scale. I thought, why not make it scalable from the start? So I searched and found Lambda, which had launched only a few months earlier. It seemed great and exactly what I was looking for. I didn't realize it at the time that it was so new. I found it during Christmas vacation 2014 where I had a couple of weeks of "downtime" away from work to focus on my personal project and Lambda quickly won me over. Lambda was released in November 2014, so it was really new and I was unknowingly a very early adopter of it.
There was no "Serverless" project at the time. So I created my own toolchain that I still use to this day. It's very simple. The dev program I created simply watches a folder for file changes, and then .ZIPs up the files, sends them to S3, then a companion Lambda function does "npm install" within a Lambda instance, then .ZIPs up the entire package and then updates the Lambda function I'm working on - this is done so any dependencies that require compilation will compile for the Lambda environment and not my local dev machine environment. It just works. I've added support for Layers when those became a thing, but other than that it's very simple and has withstood the test of time. I did try "Serverless" last year for another project, and it was not to my liking at all. I don't like giving "Serverless" access to my AWS account, and lots of other things made it not a good fit for me. YMMV.
Yeah, there are some frustrating times with Lambda, but those are usually related to getting stuff running like a headless browser, or ffmpeg, or other heavier lifts to run inside a Lambda. But, I've got all that stuff working, and once it works, it just keeps working. I haven't touched some of the older Lambdas in years, some are still running on node v12.
The only thing I kind of dislike is decommissioning of older nodejs runtimes so they aren't available at all for new Lambdas anymore. It's not that big a deal until I run into a situation where updating an older Lambda requires me to update the runtime, and there would be breaking changes due to different runtimes. But, it really is best if my code is updated to run on the latest nodejs version, although when I sometimes fall into this situation I start to question my choice of using Lambda. My regret is always short lived though, because Lambda is great in so many other ways.
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'm a bit of an outsider here, I've only run a little Node in production in the past, and used it on and off for ~13 years. My take is that these projects all get some hype specifically because Node.js is not mature.
I've got a hobby project that has a bit of Node in it, and it very plainly difficult (Which imports am I using? Not the good one. Which language am I writing? Not the typed one. Which package manager do I use? etc). Getting a new project set up well takes time and effort, it is not the default that Node gives you (at least in ~early 2024 maybe?).
I can really get behind the "not another JS rugpull" idea, but I also see why everyone is constantly wanting to get off Node itself onto something Node-like that solves their problems.
Just ignore it all and you're fine. And definitely ignore the people who keep changing things on you.
If it doesn't help me ship more product, I do not care.
https://nodejs.org/en/learn/typescript/run-natively
It is hard to deny that Go isn't much more performant on the development end. Someone who is inexperienced might be slowed down due to that inexperience negating the performance boost, sure, but when one is concerned about developer performance they will be happy to incur the small upfront cost to become experienced for the bigger payoff later.
(It is debatable if Go is really the king of developer performance, you might do even better with another language, but what is certain is that it is not Javascript/Typescript)
- https://news.ycombinator.com/item?id=43332830
The recent tsc port from TS to Go is a good example of that. The TypeScript code in the compiler relied a lot on polymorphism, which made it really hard for the JIT to do a good job.
The Go port enabled them to 'rewrite' it keeping the logic more-or-less 1:1 and land a good performance increase. IMO it was a good decision, specially the language choice, and much saner than what a JIT-friendly TS compiler would be.
I replaced node with bun a few months ago and I haven’t looked back. All my JavaScript projects run with no changes. Performance is on par or better compared to nodejs. It can run typescript directly without needing to be compiled. It also has a built in bundler & minifier (bun build), and some other goodies. The command line is a bit different - you need to “bun run” to run scripts. But eh.
Nodejs still works fine, of course. But being able to run typescript directly is killer.
https://nodejs.org/en/learn/typescript/run-natively
How are bun and nodejs on that side?
It's just straight up not a problem other authors are thinking about regularly in other programming languages, because we don't have left-pad crises in other programming language ecosystems.
No, the Deno runtime gets regular updates. I don’t think you read the article lol.