4 ms·
I have about 13 years of experience in the JS ecosystem which I think is long enough to formulate some decent theories :D > Oh, and the current LTS version is
by spion 4y ago
I have about 13 years of experience in the JS ecosystem which I think is long enough to formulate some decent theories :D
> Oh, and the current LTS version is 18, so good luck with security.
NodeJS 16 EOL is September 11th, 2023 - https://nodejs.org/ar/blog/announcements/nodejs16-eol/ https://nodejs.org/ar/blog/announcements/nodejs16-eol/
Ghost has just finished adding support for v18 https://github.com/TryGhost/Ghost/issues/16059 https://github.com/TryGhost/Ghost/issues/16059
A good question is why is ghost so conservative about accepting new LTS versions to support. If I had to guess I'd say the answer is probably that the conservativism was induced by the great ES6 module breakages of previous node major versions, which in turn were induced by poorly thought out features in the ES6 module system which led to a bad transition experience for a variety of reasons (toplevel await, extension requirements derived from browser requirements resulting wiht typescript extension compatibility issues, etc).
So there were systemic problems with the way the JS language and browsers developed. Essentially, the browser (JS) ecosystem was left in an inadequate state to support web applications for far too long. This in turn is causing ripple waves of technical debt far into the future.
Stagnation in paying off techinical debt leads to workarounds (e.g. CommonJS, callbacks) which then get built on top of. Then when the "standard" is finally introduced (ES6 modules, promises) its already too late and a lot of the "buildings" built on top of those foundations become unstable or even collapse.
The combinatorial explosion of unstandardized and standardized things that need to be supported by foundational tools is also partly to blame. For example, thanks to the unaddressed shortcommings of CSS we have a smorgasbord of semi-adequate CSS solutions with poor compatibility. This in turn leads to problems for bundlers trying to support all kinds of combinations of those, and so on.
So the answer IMO is "technical debt induced by historically poor standardization efforts"