Through compatibility, Deno established an upgrade path.
Sure, but Node compatibility needs to work, and it needs to work reliably. Which means every last detail of Node needs to be supported.
This is what I am trying to convey… the engineering effort to make an objectively better JS runtime while being Node compatible is likely too much effort. Many popular Node projects are already having issues with Deno. Now imagine how the compatibility scene will look like with every single proprietary Node project out there.
So instead of trying to replace NodeJS or offering an upgrade path for existing Node projects, incentivize formation of ecosystem around Deno.
There is no way legacy projects are going to switch to Deno. Even when Deno is 100% compatible, the only advantage Deno provides is slightly higher performance. Node’s complexity problem? All those configs needs to be supported for compatibility anyway. Typescript? The project already has
tsconfig.json
set up, so they might as well continue to usetsx
. Security? I bet users will just get tired and use-A
all the time.To benefit from Deno, Node’s legacy needs to be shed.
Wine is a different case. The reason Wine makes sense is because Windows is so much worse than Linux that even with scrappy game compatibility, Linux offers a better experience. For Linux users, the alternative to Wine is not switching to Windows, it is not being able to play games. On the other hand, legacy Node projects have a very easy alternative… just continue to use Node.
And btw Bun is making the same mistake.