4 ms·
It's funny to me that people should look at this situation and say "this is OK". The upshot of all these projects to make JS tools faster is a fractured ecosys
by conartist6 8mo ago
It's funny to me that people should look at this situation and say "this is OK".
The upshot of all these projects to make JS tools faster is a fractured ecosystem. Who if given the choice would honestly want to try to maintain Javascript tools written in a mixture of Rust and Go? Already we've seemingly committed to having a big schism in the middle. And the new tools don't replace the old ones, so to own your tools you'll need to make Rust, Go, and JS all work together using a mix of clean modern technology and shims into horribly legacy technology. We have to maintain everything, old and new, because it's all still critical, engineers have to learn everything, old and new, because it's all still critical.
All I really see is an explosion of complexity.
- riskable 8mo ago> All I really see is an explosion of complexity. I thought this was the point of all development in the JavaScript/web ecosystem?
- co_king_5 8mo ago[dead]
- CodingJeebus 8mo ago> We have to maintain everything, old and new, because it's all still critical, engineers have to learn everything, old and new, because it's all still critical. I completely agree but maintenance is a maintainer problem, not the consumer or user of the package, at least according to the average user of open source nowadays. One of two things are come out of this: either the wheels start falling off once the community can no longer maintain this fractured tooling as you point out, or companies are going to pick up the slack and start stewarding it (likely looking for opportunities to capture tooling and profit along the way). Neither outcome looks particularly appealing.
- NewsaHackO 8mo agoYes, this just sounds like the run-of-the-mill specialization issue that is affecting every industry (and has been affecting every industry before AI). Web devs learn Javascript/Typescript/frameworks, "middleware" developers learn Rust/Go/C++/etc. to build the web development frameworks, lower-level devs build that, etc. There shouldn’t be a strict need for someone who wants to make websites or web technology to learn Rust or Go unless they want to break into web framework development or WASM stuff. But again, this is just over-specialization that has been happening since forever (or at least since the Industrial revolution).
- cod1r 8mo agoIt's definitely an explosion of complexity but also something that AI can help manage. So :shrug: ... Based on current trends, I don't think people care about knowing how all the parts work (even before these powerful LLMs came along) as long as the job gets done and things get shipped and it mostly works.
- dfabulich 8mo agoSo, what's your counterproposal? Each of these tools provides real value. * Bundlers drastically improve runtime performance, but it's tricky to figure out what to bundle where and how. * Linting tools and type-safety checkers detect bugs before they happen, but they can be arbitrarily complex, and benefit from type annotations. (TypeScript won the type-annotation war in the marketplace against other competing type annotations, including Meta's Flow and Google's Closure Compiler.) * Code formatters automatically ensure consistent formatting. * Package installers are really important and a hugely complex problem in a performance-sensitive and security-sensitive area. (Managing dependency conflicts/diamonds, caching, platform-specific builds…) As long as developers benefit from using bundlers, linters, type checkers, code formatters, and package installers, and as long as it's possible to make these tools faster and/or better, someone's going to try. And here you are, incredulous that anyone thinks this is OK…? Because we should just … not use these tools? Not make them faster? Not improve their DX? Standardize on one and then staunchly refuse to improve it…?
- conartist6 8mo agoI'm being a little coy because I do have a very detailed proposal. In want the JS toolchain to stay written in JS but I want to unify the design and architecture of all those tools you mentioned so that they can all use a common syntax tree format and so can share data, e.g. between the linter and the formatter or the bundler and the type checker.
- notnullorvoid 8mo agoYeah it's a shame that few people realize running 3 (or more) different programs that have separate parsing and AST is the bigger problem.
- conartist6 8mo agoNot just because of perf (though the perf aspect is annoying) but because of how often the three will get out of sync and produce bizarre results
- 8mo ago
- dcre 8mo agoI look at it and don't really have an issue with it. I have been using tsc, vite, eslint, and prettier for years. I am in the process of switching my projects to tsgo (which will soon be tsc anyway), oxlint, and oxfmt. It's not a big deal and it's well worth the 10x speed increase. It would be nice if there was one toolchain to rule them all, but that is just not the world we live in.
- philipwhiuk 8mo agoHow do you plan to track CVEs flagged on tsgo's native dependencies.
- dcre 8mo agoI only use it for typechecking locally and in CI. I don’t have it generating code. Of course, what is generating my code is esbuild and soon Rolldown, so same issue maybe. If CVEs in tsgo’s deps are a big risk to run locally, I would say I have much bigger problems than that — a hundred programs I run on my machine have this problem.
- TheAlexLichter 8mo agoThe good part is that the new tools do replace the old ones, while being compatible. The pattern is: * Rolldown is compatible to Rollup's API and can use most Rollup plugins * Oxlint supports JS plugins and is ESLint compatibel (can run ESLint rules easily) * Oxfmt plans to support Prettier plugins, in turn using the power of the ecosystem * and so on... So you get better performance and can still work with your favorite plugins and extend tools "as before". Regarding the "mix of technology" or tooling fatigue: I get that. We have to install a lot of tools, even for a simple application. This is where Vite+[0] will shine, bringing the modern and powerful tools together, making them even easier to adopt and reducing the divide in the ecosystem. [0] https://viteplus.dev/ https://viteplus.dev/
- lelandfe 8mo agoe: ahhh frick this is just stupid AI spam for this dude’s project. Supports… some ESLint rules. It is not “easy” to add support to Oxlint for the rules it does not. The projects at my work that “switched” to it now use both Eslint and Oxlint. It sucks, but at least a subset of errors are caught much faster.
- TheAlexLichter 8mo agoYeah, no. Real human here. Oxlint does support core rules out of the box but has support for JS plugins[0] as mentioned. If you don't rely on a custom parser (so svelte or vue component for example) things just work. Even react compiler rules[1]. [0] https://oxc.rs/docs/guide/usage/linter/js-plugins.html https://oxc.rs/docs/guide/usage/linter/js-plugins.html [1] https://github.com/TheAlexLichter/oxlint-react-compiler-rules https://github.com/TheAlexLichter/oxlint-react-compiler-rule...
- conartist6 8mo agoSo as long as you only need the pre-installed software it's a great device eh. I'm the PC to your game console here. Parser extension? Piece of cake for us. Heck just to showboat we actually extended our es6 parser from our es3 parser, and then implemented each later standard as an extension of the earlier one. We're able to run parsers for pretty much any programming language, and making them super easy to write. We can do cross-language transforms with ease. We can be our own system of version control! We're going to be a real threat to GitHub. VoidZero is not even trying to do this stuff. Your vision is just so... small.