BiomeJS 2024 Roadmap
biomejs.dev
biomejs.dev
I don't understand why they're building a type system when TypeScript exists, just to name one of great projects they mention.
Is there a manifesto somewhere that describes why this project is taking the high-risk path of boiling the ocean, instead of defining a set of best-in-class projects and improving integration over time? (The "Philosophy" page in the docs isn't helpful in this respect.)
But as a whole, not-invented-here syndrome has plagued Biome/Rome for the entire lifespan of the project. Like take a look at their error reporting code[1]. They made their own markup abstraction with their own Display trait and Write trait and a proc macro on top of it. It's cool code and probably does produce very nice error messages, but they could have easily used off the shelf crates like miette or ariadne and moved on to more important tasks.
Or even their JS parser. It's a really nice JS parser! Maybe the best in terms of error reporting and AST resolution. But they could have easily used swc and maybe shipped the actual end-user products a little faster.
[1]: https://github.com/biomejs/biome/blob/main/crates/biome_cons...
[1]: http://web.archive.org/web/20201101030019/https://rome.tools...
It’s an extreme approach that intended to get extreme results. One could definitely argue that you can get just good results with a good approach (like using a bundler to produce a single output, writing perf-sensitive code, continually testing for perf regression), that’s just not the path they chose from the start.
IMO this alone makes it worth it. The Rust compiler produces error messages that sit in a class of their own compared to almost everything else. I believe we should strive for more DX like that.
[1]: https://github.com/rome/tools/commits/main/crates/rome_conso...
The zero dependency philosophy concerns the legacy Rome JavaScript implementation. With the Rust rewrite, the Rome team was more open to add dependencies when it makes sense. I must admit that I don't know why they chose to implement their own console printer at the time.
The Rome community project (rebranded under the name "Biome") started one year ago, when the company failed. Only one core contributor comes from the Rome team. Others, including myself, joined the project at that time. Although we kept most of the Rome philosophy, we diverge from some of them. We are more open to the community: We implemented some of the most requested options (The Rome project was more hostile to add options). We are also more open to reuse existing solutions when it aligns with our primary goals.
Performance is also the reason I like Biome over eslint / prettier
Now linting full codebase on precommit and it’s faster than just linting staged files with prettier!