about 2 years ago Syntax Podcast
Biome JS with Emanuele Stoppa
- 02:29 Biome provides formatting, linting, error messaging in one CLI and editor experience
- 03:35 Rome company ran out of money, Biome forked and brought on some Rome contributors
- 08:18 Biome aims to replace Prettier and ESLint with faster performance and simpler configuration
- 20:09 Biome works out of the box with good defaults, or you can customize
- 23:17 Biome avoids config options like Prettier to reduce bugs
- 25:10 Biome adding HTML support to improve Vue, Svelte, Astro experience
- 43:31 Biome integrates with VCS to only lint/format changed files
Biome adding HTML support to improve Vue, Svelte, Astro experience
Guest 2
and be able to provide I can't even what's the type of this symbol, what's the type of this interface.
Wes Bos
And Deno is one of 2 sort of projects that are trying to do this. What's the story there? You had included it initially, but it's no longer part of Biome.
Guest 2
that is meant for their goals of what they're doing. But then also commenting something, it's a contribution.
Wes Bos
So kinda interesting stuff. Another question I have is you're one of these guys who you go to their GitHub, and it's just a a wall of green. You know? And it's just like
Guest 2
Actually, my weekend, of the grid QL system.
Guest 2
as JavaScript.
Wes Bos
restrictions, things are gonna be a bit faster or a lot faster.
Wes Bos
I I kinda would want, you Node, or you want the ability to, like wouldn't it be nice to be able to type an error? You know? And there's a bunch of stuff in JSX
Guest 2
developer, have to help me to review it. So, like, make a good TypeScript.
Wes Bos
I can't imagine working on some of Wes TypeScript code bases that are for libraries,
Guest 2
on GitHub Bos on the web, this kind of, thanks.
Guest 2
Deno comes into play, they do their own flavoring editors.
Guest 2
What Node do, I just like But, you know, they have a lot of money. So they have a lot of people that are able to actually they have also like a lot of smart people, like, that actually are a lot of things that we already had. So to suggest.
Wes Bos
can of worms. I'm sure it's edge cases all the way down, and I can't imagine
Guest 2
to have project as others. It was written in TypeScript.
Guest 2
like a puzzle with a hole. So you basically place all the SD nodes in the right place.
Guest 2
or comments.
Wes Bos
give it a whirl right now.
Guest 2
Yeah. A couple of things about Biome, you Node the bug and we aim to to reply to fix it.
Guest 2
And so that's their mission and they're quite good at it.
Guest 2
quite niche. So it has
Wes Bos
Like, one of the huge benefits to the whole
Wes Bos
But there are no tools except for I Oh, yeah. Imagine this. Like, I would love to be able to just click it and it would open up my biome JSON and have it configured for me that I can just put the the thing in. Oh, that Node is actually a good suggestion. No. We don't have it, it would be nice. You ballooning maybe even more at some point for your TypeScript, JavaScript,
Wes Bos
What what do you do at Astro? Are you writing Rust over there as well, or or are you slinging JavaScript like the rest of us?
Wes Bos
and he Wes like, how
Guest 2
or, like, types from a JavaScript language ahead of time.
Guest 2
Yeah. I think the 2nd option is the quite, quite, quite good.
Guest 2
when I have time. Yeah. Yeah. So from time to time, I create some PR with some, parsing.
Guest 2
praise about like, Among those, it was me.
Guest 2
Groovy, that,
Wes Bos
issues, and pull Wes.
Wes Bos
is that going to be an issue? Are we gonna have to write them in Rust?
Wes Bos
It's a
Guest 2
Of course,
Wes Bos
and maybe sometimes just nitpicks. You know? So that's what you're doing. You're looking at the code
Guest 2
where we have our own
Wes Bos
Yeah. And that that's, like, I'm on the same page as Wes, and that's why I'm not, like,
Guest 2
and eventually small rules or rules that are really TypeScript and JavaScript.
Guest 2
basic examples.
Wes Bos
out there can go and write an ESLint plug in because it's just in JavaScript.
Guest 2
in biome.
Guest 2
so GitHub.
Guest 2
at the moment, we have this constraint Yagiz, probably, you know, JS one of the,
Wes Bos
Node, Okay.
Guest 2
I don't have the full picture of the features they're implementing.
Wes Bos
So. Oh, there you go. Actually, you're one of the few people if you I look at your GitHub
Guest 2
another compiler like Biom or mistakes
Wes Bos
is kind of similar to TypeScript? Yeah. They're it's kind of wild. And, like, what I was most,
Guest 2
working on bio because we want to use our own engine. So we want to parse these files. We want to do all the bindings HTML support is on the way. Like, year and a half, we essentially, I don't understand this part because it wasn't part of the TypeScript. So I asked the developer, So it's one thing that Biom does. It spawns essentially He mentioned on Discord that is actually a great stepping stone
Wes Bos
of TypeScript? You Node, someone's get especially once we get the types the new types proposal hit. Yeah. Are we gonna see somebody who takes that and says, alright. This is a new language,
Guest 2
The Rust, I learned it at Node. So they give us the time and the resources to to learn Wes, essentially read the book, do exercises, So we wanna try to keep, extract the end the generic engine and it's really good. It's all in black and white.
Guest 2
So for this year, don't think Rust is gonna be the way.
Wes Bos
And then you can write rules against those specific things. So if you're writing it all in rust, you're not able to, like, lean on a lot of the the stuff that's available in JavaScript land, are you?
Guest 2
already So I don't think we will see anytime soon,
Wes Bos
Yeah.
Wes Bos
yeah. Yeah, Man, that's and how did you learn Rust and Go? You just kinda picked it up, read the docs?
Wes Bos
Esno. So we talked about Esno as well, which is the it's hours and hours of compute time when it's added altogether. You know? It could take 10 minutes to lint an entire project. Like, you make one little change, we gotta lint the entire code base to make sure that didn't cause an issue somewhere else in the code base. We had to type check the whole thing.
Wes Bos
do this? So so do you have to, like, write a whole
Guest 2
makes sense in that domain. But if acknowledge,
Wes Bos
and GitHub will split
Guest 2
So we are exploring this. We eventually became, JavaScript, for example. So Yeah.
Guest 2
I, I don't know. I am half and half. It seems good, but I'm not sure if it has, Node Weekly, And thanks to that, I will be able to give you
Wes Bos
I think the reason why we we don't see it is there's no spec for TypeScript.
Wes Bos
to create a new TypeScript
Wes Bos
I I hope so. In that same regard, what are your thoughts on the on the types proposal?
Guest 2
So it's going to be limited, ESLint rules based on difference of the types. So we essentially leverage TypeScript, mission that he had.
Guest 2
because And
Wes Bos
chomping at the bit. Like, I think the this is gonna take years for us to figure out because this is our one time to to really get it right. And if we rush it out, just trying to make it look like TypeScript,
Wes Bos
ecosystem is that, like, any developer
Guest 2
can you expand on this, or can you document it? Is it part of the PR? object oriented programming.
Guest 2
we might be able to
Guest 2
be able to parse them. So I think it's more like, enable it to opt in via configuration, Well,
Wes Bos
ESLint
Guest 2
So and And, yeah, I mean, he told me that he saved a lot of time in Sentry as part of this internal here that is listening, as part of Astro, the I believe in some cases, this is not acceptable,
Wes Bos
into just JavaScript.
Guest 2
domain specific to your company or to your project, watching TV series. So I try
Guest 2
playing video games, doing things with my wife,
Wes Bos
object of what's called an AST,
Guest 2
the inventor of essentially .net and C Sharp. So, employer
Wes Bos
I'm just like, like, how does somebody
Guest 2
Not that often, but yeah, I mean, I also implement a few features and, and fix a few bugs in the Aster Compiler. So.
Guest 2
So format or check all the files. It's check it checks only It does that on a CI. So it doesn't a productivity I'm able to jump on others colleagues' reviews and leave comments, even though most of the permissions belong to to Sebastian. And transformers, transformations. So, like, compiling TypeScript to to JavaScript. So that's what we want to focus.
Guest 2
because we like, to be quite files. And
Wes Bos
that's just cool. You could write GRITQL queries to do code mods.
Wes Bos
like, somebody's gonna make a new typed language that, And you have a higher code review than you actually do commits, which JS, like, hats off to you. Like, that's not easy tool chain format ESLint,
Wes Bos
Node that Biome is a little bit more supportive than last time I looked at it, I'm gonna definitely
Guest 2
which is a dialect of Java.
Guest 2
Sometimes. Yeah. So I try to to be helpful. I ask Wes.
Wes Bos
abstract syntax tree, and it it gives you all of the pieces of the syntax and tells you, like, oh, this is a curly bracket. This is a variable.
Guest 2
DSL. Actually, we are we are implementing
Wes Bos
the biome
Guest 2
it's overtaking job. And for the grid grid ql, a competitor of TypeScript, I go to my smartphone, I check GitHub and I reply to an issue.
Guest 2
Yes. Yeah. Sometime in Go, sometime I write some Go.
Guest 2
The Astro compilers you're written in Go. So sometime, like, I was so passionate about the project, it's essentially And once we have all the runtime, a way together with the runtime to,
Wes Bos
find or replace isn't gonna isn't gonna kick it. Right? You need a little bit something that's a little bit smarter about how your code works and how things are imported and and all the different syntax. So
Guest 2
for us Mhmm. To eventually try to do something more.
Guest 2
praise me made and we have a job that parses it and creates. There's a lot of code with that colors and the core team you also have to go back and forth to communicate with the, Yarn coded. So we are not able to
Wes Bos
it up between
Guest 2
we might be able to use parser from another Rust crate, but we still need to Yeah. It seems really powerful. It has a lot of great features, to to have common sense and look at the code if it's doing if it's correct, you Node, just
Guest 2
very simple syntax,
Wes Bos
another TypeScript type checker? Because
Guest 2
nice, but it's quite basic. Like, I think like the proposal JS just few
Wes Bos
so much more complex.
Guest 2
So I don't Node all days. So and stuff like that. I think, but in the meantime, I was still working on Rome. There were already, are Love it. Yeah. Amazing cities. Yeah.
Guest 2
a kind of a spec like, are there exceptions.
Wes Bos
it, making sure everything is good.
Guest 2
having JS
Guest 2
more time than, of your machine and we run the the binary for you.
Wes Bos
that would be would be nice to be able to have easier in TypeScript. So I often wonder, like, are we going to see
Guest 2
TypeScript and JavaScript.
Guest 2
it seems to be an anti pattern, so we Yarn doing exception for this case. Let's document it. Or
Guest 2
maybe they plan to do something with the control flow because we have a a control flow feature in Viom. So imagine there's a rule that required, like, it's more generic Nice. It's a really great framework, No one.
Wes Bos
review, commits, language
Wes Bos
So you can seen this. Do the same similar. No. I have not seen this either. Wow.
Guest 2
really bad code, but at least it's Node. And with the time, you improve.
Wes Bos
very much like TypeScript. Given these
Guest 2
that we want to
Guest 2
different expectations booster in for the OS Warp 2024.
Wes Bos
This is really cool. So I'm I'm just reading the docs for it right now, and it seems like it is very popular in the code mod space right now, which if you have a very large code base, you need to make some API changes or you need to be able to upgrade
Guest 2
also merge conflict resolve conflicts anymore.
Wes Bos
lots and lots of files,
Guest 2
No. That is misleading. Because for GitHub, It installs And then TypeScript light dependency on Node. If you, if you install it from an Npm, We just have like a script that checks the the architecture and,
Wes Bos
not many, but there's a handful of tools that will take the types off of your JavaScript and give you JavaScript out the other end. And there's many tools that will convert your JSX into I understand that, but I want to turn that off for this one.
Wes Bos
I don't even know what my question is to you, but, like, what does your day look like if you're it's everything is you're just writing code all day long every day if it's all green like that?
Wes Bos
the base TypeScript Node that will actually do type checking.
Wes Bos
So like computing,
Wes Bos
that's pretty amazing. You know, I'm I'm
Guest 2
that you have, we have to design, because old, philosophy from Node.
Guest 2
some goals. So they tell you what's TypeScript for and it's an unsound So a lot of, mailing lists, also Acre Acre newsletter.
Guest 2
and Microsoft. Scott
Wes Bos
type checker.
Guest 2
there's a lot of good in here. If this pack is played quite well, the proposal goes, you can, we suggest you a suppression comment.
Guest 2
flow or Like, So it's going to take more time than expected. We want to try to, to be as generic as possible, create Lint rules.
Wes Bos
and just glancing at it for patterns and nitpicks?
Guest 2
ESLint would be would be nice. Wow. Yeah. We gotta ask about
Wes Bos
Yeah. I I often think about that. I'm like like, I understand. Yeah. We have Flow. And there's actually been quite a few things that have been popping up recently being like,
Guest 2
that essentially
Guest 2
we aren't as lame as possible to avoid
Guest 2
using our own AST, The build is important. So why LinkedIn must be so,
Wes Bos
Is that why all the Go people are always mad at my JavaScript tweets? Because it's but, I was impressed to to see that that Scott had had popped up. So was it you? Like, you said, okay. I'm gonna I'm gonna fork this thing. And then, like, now who's paying who's paying you to work on this thing? Awesome. And the reason
Wes Bos
I wanna ask about, like like, plugins as well or or you I think you mentioned it earlier.
Guest 2
towards, It checks if you have, each for the TypeScript Formal way to have a spec in the language and the message.
Guest 2
so Broadmunk 2024, warp a working free and coding free time. But sometime Okay.
Wes Bos
Yeah. That's huge.
Guest 2
better patterns or less document code. I understand more or less the feature
Wes Bos
let alone
Wes Bos
Flow has some nice features that
Wes Bos
like, maybe we should be asking ourselves, should it should it look any different? You know? Right. Yeah. It doesn't need to look like TypeScript.
Guest 2
I I looked at it. It's
Guest 2
not that many like Rust, Vitefflow, thank you everyone.
Guest 2
or this is not actually HTML, but for our ESLint rules.
Guest 2
It's quite recent.
Wes Bos
Cool. Well, that's,
Guest 2
Tell me what are your changes. Tell me how you're testing the feature.
Guest 2
when we were writing the TypeScript parser, there were a lot of gotchas and weird things any transit Git with the proper
Wes Bos
Is there anything that we didn't cover that you wanted to hit before we move off of the Biome topic?
Guest 2
a built in support with VCS,
Guest 2
So like, One other thing I think Bos is good at is caching.
Guest 2
later news, like, the Scott maintainer that is working on that managed to actually And then Webpack CLI, then, Rome, infrastructure is.
Guest 2
other than TypeScript with a different mission, like, semantic model, and everything.
Wes Bos
going through somebody else's code and try to make understanding
Guest 2
as it should be.
Guest 2
different, type checker language.
Wes Bos
I don't think that's the case for Rust developers. So is if somebody wants to create a biome plug in or if that's going to be a thing at some point,
Wes Bos
Node. Exactly.
Wes Bos
very ambitious project
Guest 2
doing small trips,
Guest 2
weird. We have a it's really strictly typed and we essentially generate digest.
Guest 2
traits
Wes Bos
In in the world right now of JavaScript tools, there are many minimizing that amount, because then they can pass on
Wes Bos
That's really interesting.
Wes Bos
That's good. And
Guest 2
If there are some places where the code is weird or is doing something
Wes Bos
parser for every one of these languages? Because we had Nicholas Zakas on the show explaining how ESLint works. And, basically, they they take the file, they explode it into this nested
Biome works out of the box with good defaults, or you can customize
Guest 2
and Pion will pick it up for you. So you still don't need installation.
Wes Bos
full, prettier,
Guest 2
we don't need Node to, to run it. Like we, we,
Wes Bos
I think I am imagining it given your I don't mind what you're talking about, Wes. Yeah. So, like, let let's say I have a a linting error in in my project that Bioms telling me about, you know, like,
Wes Bos
compatibility.
Wes Bos
instead of, like, taking all of my, like, ESLint rules or whatever over, I started just like, alright. Just give me what you got. Yeah. Yeah. And then allow me to I just I just like, that's annoying to me. I don't like the way it formats that. That that linting error is not something I care about. Then I'll just go into the biome Scott JSON file and and add it in. And I think there's also
Guest 2
if you're happy, that's good. If you're not, you can create existing code.
Wes Bos
adding that. But it's good suggestion. That's good. Yeah. Thanks. Sweet. Wes, that's what I'm here for. I am curious about so biome is going towards
Guest 2
we download the binary for you, I started working as a web developer.
Wes Bos
add the rule to That's I I'll tell you. I I installed it in a couple projects. Every time I I start a new project, I think, what should I use? What should I use in this one?
Wes Bos
And, yeah, it it it just works. You know? And then I found myself, like, as I was coding,
Guest 2
can So biome. Jsbiomformat, maybe we should document it. You know? This is something,
Wes Bos
no shadow
Wes Bos
I think
Wes Bos
variables. You know? And I'm like,
Guest 2
So we have defaults for the formatter and defaults So when you parse everything, So
Guest 2
we have a really from ESLint are able to do.
Guest 2
a configuration file using JavaScript as you, another confirmation that Rust and the ecosystem I do stuff in Go.
Wes Bos
the Node. Is this true? The code had like had a way to
Wes Bos
no
Guest 2
So, doesn't need any setup, like we mentioned, a CI action, a GitHub action it Wes to provide a lot of stuff. And in the future, we might provide also other tooling, like
Wes Bos
to the JSON file? Maybe I'm imagining that.
Biome integrates with VCS to only lint/format changed files
Guest 2
the files that were changed. So it saves you a lot of time. Nice. That's cool.
Wes Bos
Yeah.
Wes Bos
what do you do to stay up to date on topics?
Guest 2
really
Guest 2
from the center of Italy. It's close to Rome. But then my family moved, and now And of the project. So
Wes Bos
Yeah.
Wes Bos
to make sure there there's no issues down the thing, or JS it just just the file that's changed?
Guest 2
like, JavaScript
Guest 2
So you don't need to install Node. Js. You don't need to install what TypeScript lacks is the spec. Yeah. Yeah. That's one of the of the issues. Like, we are exploring better feedback, not just, you know, nitpicks
Guest 2
and then it runs via like response a command, pnpm, Originally you are not guaranteed the things to work. So Sebastian, when created Rome, wanted to have something that works all the time. Everything is owned and spending just 6 hours to, And,
Guest 2
for, you know, the drama and stuff.
Guest 2
their merging tool, automatic merging tool JS so amazing that it's, it has become part of my workflow. So without it, it just works.
Guest 2
that just set up Viom.
Wes Bos
Last thing we have here is shameless plugs. As many things as you would like to plug to our audience.
Wes Bos
And part of that is bringing in the most recent version of Node. Js in order to run a bunch of the the tooling. So you you better bet they'd be interested in
Guest 2
Bos,
Wes Bos
Alright. Let's move into What other languages do you know? Seems like you're a pretty Vercel programmer.
Guest 2
essentially it handles formats and links only the files that you actually change it.
Guest 2
Biome, and a different like breaking changes happen and CI times.
Guest 2
and then runs And I mean, I'm quite happy, I'm everywhere.
Guest 2
I'm biased, but I mean, it seems the community What's Bos? Well, Biom, So we carried over, quite a lot of work, Mhmm. That's that's essentially sometimes I try to to be proactive Yeah. This is something that also my manager at Castro, So error messaging.
Guest 2
the efforts.
Guest 2
the binary from source
Wes Bos
Yeah.
Guest 2
So, I just know that I use the GitHub, I thought I'd remember the numbers, but you also have a lot of maintainers.
Wes Bos
Yeah. And now I understand. Like, one of the sponsors or I guess yeah. Node of the sponsors of this project is Netlify.
Guest 2
a few years ago.
Guest 2
Bos doesn't have a
Guest 2
the caching.
Guest 2
Yeah. And then we just give all these files to Biom and Biom just parsed it and and Okay. And the kind of philosophy reused. So it's going to be quite difficult.
Guest 2
so check it out.
Guest 2
Pnpm with, behind me. There's a there's a lot of people.
Wes Bos
Alright. Let's move into the next section, which is supper club questions. You're curious what text editor theme and font you're using?
Guest 2
the actual binary. So it will pick up the configuration, and retaining Rust. That's Yeah, that's it. I mean, I don't think I have a specific other tool, acknowledges that has done some mistakes our own implementation, to actually have this plugin. So a person can write it does that.
Guest 2
so the mix of a spoken Italian and spoken And you can do the same also in CI. So if you, in CI, you can run the command with dash dash change it going on also like to consider Good.
Guest 2
options in the CLI. And Node Wes you use TypeScript ESLint, He actually, That's how the parser works more or less.
Guest 2
is acknowledging that Sentry was able to that's I'm not like the more, all everything, Sebastian McKenzie, man managed to raise some funding and, there was a company around it. And that was part of the 1st employees.
Guest 2
few weeks ago So we, we also acknowledge that. So we want to carry the same, EMA, short version. I'm from Italy. I live in Ireland.
Wes Bos
of money on Sure. CI. Like, that's that's a big part of their product is is the build step.
Guest 2
remote.
Guest 2
package manager has a different dialect compared So this DSL,
Guest 2
like, it's also, like, the the whole series is is in Italy. So he actually speaks Italian and JS really good at it.
Guest 2
What I really like is the diff. So, you know, when you're doing some merging conflict or rebase conflict,
Guest 2
Moriarty in Sherlock,
Guest 2
And, 6, 7 people.
Guest 2
TV series that came out, like, like, I continued working as a a, as a maintainer, as a, in my Node free time, spare time. So in the, in the meantime, I was, And suppress the ruling ESLint. So you know, when you have your bugs quick fix,
Guest 2
context using ASCII or, when you get a dependency update,
Guest 2
what Wes that font Yeah. Yeah. So that does that for me?
Wes Bos
that stuff to their their their users as well. I'm guessing that's is that true? I often say these things as if I know the internals of the company, but I imagine that's probably why they wanna support the project.
Guest 2
from any runtime is actually Yeah. It can pay off.
Guest 2
Actually, my day to day job is using Web Store and the Rust Rover front. Yes.
Guest 2
options.
Guest 2
Weekly, unless like we have a new,
Wes Bos
they live in the north of Italy next to Okay. Milan. So it wasn't it wasn't your idea to call it Rome initially? Oh,
Guest 2
Thank you very much for having me. You're welcome. Peace.
Guest 2
and, I mean, it's really good. And the story is amazing and the actor is fabulous.
Guest 2
I'm I'm a bit biased, but Czechastro.
Guest 2
Frontend Focus.
Guest 2
I hope so. Yeah. Yeah.
Wes Bos
Wow. Cool. That's awesome. What what part of Italy are you from?
Wes Bos
Yes.
Wes Bos
I'm headed to, Venice and, Florence this this summer, so it'll be my first time in in Italy. I'm I'm pretty stoked. Yeah. We went last summer.
Guest 2
I yeah, that's it.
Guest 2
project aware, So it's gonna save members, which are essentially the pioneers the the plug in does is to actually retrieve type information
Guest 2
I love this actor.
Guest 2
in order to run it. What the action does is scans your manifest, package. Json.
Guest 2
And another thing that I forgot to say about performance ACI. So we have
Guest 2
I hope so.
Guest 2
seconds and minutes. That's a good thing. Like, being able to to not be dependent, things like,
Guest 2
I prefer this kind of IDEs,
Wes Bos
know? Or was that I am not that guy. And you're on Versus Node? Or, I saw Biome was working on some ESLint integration as well.
Wes Bos
I I really have been enjoying a lot of the UI things there. What about,
Guest 2
Oh, cool.
Guest 2
like you don't need Node and any, linking binding it with a group and then just
Wes Bos
No. That's awesome. Awesome. Well, thanks so much for coming on. Really appreciate all of your time and all of your insights. I'm glad we could could sneak you in on one of these episodes. I'm really excited about Biome. So thanks for all your work on it, and thanks for coming on. Thanks.
Guest 2
Biome because as a news has been nominated Biom has really good defaults.
Wes Bos
Yeah. Well,
Guest 2
everything that you have.
Wes Bos
Awesome.
Guest 2
is it for me the question? we don't need it, but they still need to be parsed in order to categorize JS trivia. So in terms of formatting for JavaScript
Guest 2
The good thing of this is that we're actively working on it but I think it's going to be a good experiment to download the the actual binary from GitHub with so you don't need any installation. So if you don't if you don't have it but you still want to try it, compatibility, linting, too much bug shedding, Something that would like to to suggest. Well, on Twitter? Oh, yeah. Oh, what was that font? You
Wes Bos
And how does it know? Is it just using git under the hood? Like it does does it run some crazy git command to find only the changed files?
Guest 2
English or kind of a AST. So it's all really there's a lot of, I didn't have all the permissions,
Wes Bos
Bye.
Wes Bos
does it, like, let's say a file change, but that file has, like, an import. Does it follow the import tree
Biome aims to replace Prettier and ESLint with faster performance and simpler configuration
Wes Bos
and it saves Sentry $100,000 You think about
Guest 2
of a certain part of the code that needs to to clean. So it needs to understand
Guest 2
because Mhmm. Biom. Sanity provide
Guest 2
projects, we managed to launch after Our syntax is quite of type. So logic just adds some flavors and some new project, a new team, the more feasible Node, like,
Guest 2
So you want to reduce the time as much as you can.
Guest 2
the types tell you Wes something breaks or not. So,
Guest 2
throughout the code Bos ESLint terms of from a syntax document I don't remember the name of the actor, but he's a British actor. He played, you,
Wes Bos
The wild wild to me that those types of things can add up,
Guest 2
especially because we pay formatting, to, to, to everyone, each each thread formats a file. And at the end, we just group all the the nothing and a DSL system to, in case we reparse it due to linting or, a good value, left hook or any, any tool that you use for these kinds of things. So you can pass
Guest 2
actually saved a lot of time, like package without
Guest 2
On the side, we also, of the output coming from git.
Guest 2
and the language allows you for backwards compatibility. So they Yarn really good at implementing new features without breaking a spider monkey, we left to
Guest 2
Yes. Yes.
Wes Bos
Facebook, these these types of things where
Guest 2
It wasn't sustainable.
Guest 2
6 hours, half a day.
Guest 2
we we tell you what's wrong and what's not.
Guest 2
our formatter is like a pretty compatible. It has like a 97% alternatives, it takes a lot of, of the
Guest 2
linting, formatting, but in a really strictly typed language JS Rust, it requires, language has their own dialect,
Wes Bos
and just end up being a big bill at the end of the day. Yeah. Compute time. No joke if you're paying by the minute for it. Yeah.
Guest 2
And with ESLint
Guest 2
and that's it.
Wes Bos
Yeah. I'm just amazed after talking to people that run
Guest 2
is good.
Guest 2
reducing And we're just trying. So we're going to pick up these files. We're gonna have our own our own runtime, and we're gonna export our diagnostics base on this road.
Guest 2
So with Rust, since like, Biome at Sentry, few features Sanity doesn't add very complex Like the rest of of everyone
Guest 2
So you essentially Just the file that's changed.
Guest 2
used also by Deno. So
Guest 2
damn frustrating? So, like, I would like to bring a different vision Well, I'm subscribed to a lot of newsletters,
Wes Bos
Yeah.
Wes Bos
TSC to
Guest 2
few months ago,
Wes Bos
isn't it isn't it fine? Do we need more tools?
Guest 2
what Wes get, so we get a mature language.
Guest 2
We Yarn focusing on that.
Wes Bos
Oh, yeah. Especially, like, we had folks from JSR on, and they are implementing this whole, like, no slow types thing because there are certain parts of TypeScript that can make your code base
Wes Bos
And do you do you have any insight as to why why those tools are are currently slow and and how Biom does it faster?
Guest 2
really good crates essentially be the parser in a runtime create ESLint rules After a few months, we decided to rewrite everything in Rust. So it was, sick picks and shameless plugs. Do you have a sick pick for us? What I'm currently watching now, for example, on net on Netflix is Ripley. It's an exclusive Yeah. Exactly. There's, Yeah.
Guest 2
Strictly typed.
Wes Bos
extremely large code bases.
Wes Bos
that it's sort of a replacement for a I'm I'm installing it in a project and and using it. And there's there's still quite a ways to go. I'm sure you're very busy,
Wes Bos
and that will really get you if you need that type of thing.
Wes Bos
really, really means a lot. Like like, type checking for me or, like, if I'm running a linter on my course platform and
Guest 2
Mhmm. This JS,
Wes Bos
we have 5,000 developers. They're all putting ESLint 22 PRs a day. You know, that's 10,000 Beautiful. And do you think that we will ever see
Wes Bos
in their code base. This is not Biome, but it's it's the similar idea. He made a one line
Guest 2
also is quite good. So there are tons of, And the ecosystem maybe mentioned, it's essentially a tool chain, of the web that, wants to provide a new
Guest 2
use Prettier. There are a few and it just works.
Wes Bos
And now all of a sudden, our CI bill is
Guest 2
to, to be used in different kind of environments.
Wes Bos
loop to check for caching,
Wes Bos
to my CI. And I've I do that maybe 3 times a day with a pull request.
Guest 2
I wouldn't recommend Wes documented in our website, called gridQL.
Wes Bos
airlines,
Guest 2
Node. Js tier core maintainer.
Guest 2
Although I don't think Prettier right now, all the features that some, and the proper
Guest 2
set up a few tools. Yeah, it works at some point, but there are some projects where
Wes Bos
because
Wes Bos
Oh, because TypeScript ESLint is using
Guest 2
good awareness
Wes Bos
so much
Guest 2
also doesn't have multithreading.
Guest 2
doing linting type checking takes, I don't know, 3 minutes, 5 minutes, 10 minutes.
Guest 2
Then, So what we want to do is a different approach. So be able to, like, infer types But we don't have this feature to go back to the JSON file and, the TypeScript APIs or the TS Vercel. And that, that, that takes a lot of time and resources.
Guest 2
Yeah. So Rome back in the day was a Node single
Guest 2
threads like there's no tomorrow and
Guest 2
Yeah. Exactly.
Guest 2
times Rust, yeah, it could be Node to have, but we think that,
Wes Bos
you know,
Wes Bos
TypeScript to JavaScript so it can be then, And you know why Netlify probably cares about this JS they spend a ton
Wes Bos
Shopify, ESLint interesting. Like, the reason why it's fast JS you're explaining all of these things, but how much of that is also because you've you've written it in rust? Like, what was why why was there a decision to write it in rust initially Wes you're back at Rome? You're like, you know what? Maybe we should do this in Rust.
Guest 2
well, I think also ESLint
Wes Bos
Milan CEO of Sanity tweeted it out. So you guys made one change
Wes Bos
Oh, wow. So it could be a, like, a Babel replacement or a TypeScript to JavaScript alternative?
Guest 2
we don't do the same work twice.
Guest 2
for Prettier, for example, I think what it, it doesn't have is parallelism.
Wes Bos
It's crazy. So I'll I'll tell you one story. We're allowed to say this because,
Wes Bos
extremely slow because you cannot parallelize them. Right? Like, you have to do one thing, then another, then another,
Guest 2
And based on this metadata, The only dependency was just TypeScript for type checking.
Guest 2
You know, that's,
Guest 2
You don't have, Dim And, bundling, So we can say that Rust is matured enough you can run it natively, like, in prehook Yeah. We took over the we took actually the that same philosophy.
Guest 2
Thing is because of JavaScript, that how dynamic it is sometimes, this DSL We we followed the project mainly because, name of the package.
Wes Bos
is was the creator of Babel. Right? So, like, obviously, he knew a lot about that space as well.
Wes Bos
Awesome. But let's talk about, like, what does Biome actually do? I mentioned
Guest 2
tried to to to use it. I'm quite satisfied by the the the results.
Wes Bos
And to be clear, when you're talking about speed there, you're talking about, like, not set up at the speed at which the tools run.
Wes Bos
CI runs and they're running a couple of minutes each. And before you know it, it's 100 of 1,000 of dollars in compute every single day. So, Arnold, do you have any stories of of companies like that where they're spending tons of money or tons of time?
Guest 2
but they are really edge cases. So,
Guest 2
The current setup, it's just 1.
Wes Bos
So and it's very basic. How like, let's say you're hearing this. You say, I wanna give Biome a try. Yeah. What do you do to get going with Biome? Like, what does the setup process look like and how do you use it? So Viome works Scott of the box without any configuration file. So you can just do MPX
Wes Bos
to do what? To get to get type type errors or to convert from
Guest 2
Like, we do a lot of, aggressive internal caching. Mhmm. So when we parse a file
Guest 2
dependencies.
Guest 2
bread and butter of us developers. Like, why have to reinvent the wheel if there is a battle tested package And Go, yeah, I just tried to pick it up. The thing JS, Go is very simple language. So
Wes Bos
I know that the original Rome had
Wes Bos
Awesome. And we should say, like, one of the Sebastian
Guest 2
from the current setup.
Guest 2
exceptions Twitter,
Wes Bos
speed
Guest 2
this kind of project to anyone. Like dependencies pretty compatible by using Biom's Formatter and Biom's ESLint, maybe together
Wes Bos
run through ESLint? formatter, which is like like a prettier and a linter, which big one obviously is is ESLint.
Guest 2
plugins yet. So Wes, we working towards And I say, like, probably although we won't be able probably to do the actual engine.
Guest 2
with a proper,
Wes Bos
change in some
Guest 2
like, the modern JavaScript allows you to with Scott to use web workers. So try to use multiple CPUs.
Wes Bos
So what's wrong? What's wrong? Like, most people are probably listening to me and, like, I use Prettier. I use ESLint. And, yeah, it's a bit of a pain in the ass to get set up. But once it works,
Wes Bos
grander visions in terms of, like, also it being a test runner and Vercel other things. Is that what you're focusing on right now being a formatter and a linter? the tool that actually does the type checking itself. Do you think we'll ever see that, or do you think we're gonna see, like, some,
Guest 2
and production ready.
Guest 2
you don't want to spend 6 hours, especially if you Yarn, an wing it. So write code, an effort way for having You have the same, with the Versus Node extension. Like, we provide a way to we have to justify them. We have to be really good to justify these kind of options.
Wes Bos
a year in compute. You Node? One line.
Guest 2
A story? No. But I know for a fact that, honest and say like, we won't be able to do type checking
Guest 2
like, yeah, you set up Prettier, you set up easily. It takes you like a 3, 4 hours, And one another thing I think is the issue with TypeScript.
Wes Bos
I add an extra 30 seconds of of compute. Whereas, like, you look at some of these code bases and I'm curious if you know of any stories or stats like this JS
Guest 2
So as far as
Guest 2
Also for matting. So So I know, what JS,
Wes Bos
it adds, I don't know, a 10 second check Awesome.
Guest 2
to use it JS one of the early adopters, by the way. Like, I think it's one of the first
Rome company ran out of money, Biome forked and brought on some Rome contributors
Guest 2
so I try to delegate because JS a strictly typed language, you must have everything
Wes Bos
to Node and how it now became Biome and what what went on there?
Guest 2
So I don't have the insights because as an employee, I don't have access to this kind of information.
Guest 2
each core team member JS, has the same, these really complex types that sometimes you see JS able to provide you, how I stay up to date it doesn't, you don't need, at the beginning, you know, SetItUp, Prettier and ESLint all together. With Viome, like, if you wanna try it, you just do it.
Guest 2
It welcomed a lot of contributors.
Guest 2
So now the core team is around something,
Guest 2
they essentially lead, working on plug ins, for example Okay. And other, supporting new languages.
Guest 2
a year and a half, more or less, a formatter that was almost And then we just do some parsing the project. They shape the roadmap.
Guest 2
we leave our baggage behind, It's just very simple, so it's really easy to pick up.
Wes Bos
Can you talk a little bit about what happened
Guest 2
to, So it's not able to execute operations in parallel. Mhmm. So multithreading
Guest 2
it was unsustainable.
Guest 2
it's a full rewrite. It's a massive great DX, engines like a V eight or When we reparse it, tokens that were already parsed are essentially And you have all these slots where you essentially in a sense like,
Guest 2
Like, after we were let go, to
Guest 2
I mean, it's it's Type Warp, ESLint introduced So I wouldn't worry too much. And if you see a different that is not an exception, it's just a bug. So of Bio.
Guest 2
so there was a lot of speculation.
Guest 2
pure open source.
Wes Bos
I saw a biome's gonna it got gonna be forked. And I thought, like, yeah. Like, that's cool, but, like, are we gonna see anything? And then, like, I don't know. Maybe maybe 3, 6 months later,
Guest 2
But then we have the core
Guest 2
I I I read I read a lot of articles. I saw a lot of videos.
Guest 2
seeking a new job, a new position.
Guest 2
Eventually I landed Astro, these few volunteers and also, have. So one of our core maintainers is actually working on the DSL. So we chose
Guest 2
Cool. So we have a kind of, a ladder,
Guest 2
as a I wasn't, I wasn't part of the company anymore. I couldn't do anything.
Guest 2
Yeah. But yeah. So, so a long time ago.
Guest 2
an open source I mean, maybe it's the good thing that we, we fork it. So, It's based on 3 seater. We already have a parser, that it shouldn't do, you know, and mistakes like, pre tier and compiling
Guest 2
After a few months, the creator, Yeah. They say that these comments would be parsed as like, trivia comments, like something that
Guest 2
even though the community was really small.
Guest 2
Yeah. So when Rome was announced, it was essentially
Guest 2
are essentially people that it's quite, most of the philosophy.
Guest 2
where maintainers So I said like, and its benefits, the whole ecosystem, it should be ported into core a GreekQL file. We also have we're gonna have also Firmata for that. So that's how good Viome, if they use that and Deno is quite successful and fast. So and map it to our own syntax.
Guest 2
After this,
Guest 2
new philosophy.
Guest 2
some, people that were helping me. So it wasn't just me. Firstly, there were other people that we were able to attract, Yeah. Yeah. So you, you have to,
Guest 2
we were let go because the company finished all the money.
Wes Bos
like, impressed by was that, like, yeah, we didn't hear much from Rome for a couple of years. And then
Guest 2
essentially through
Guest 2
no more money. We were all let go. And and potentially other new features. Also like, I think they like TypeScript has But back in the day, it was also like PHP
Wes Bos
Yeah. Yeah. Probably too with a lot of the learnings. Right? You probably learned quite a bit, and then now you get to start essentially fresh with those those learnings. How how many people are are working on on Biome now?
Guest 2
and the foundation of the linter.
Guest 2
eventually, And, So that's what Viomi JS. So it wants to be, production ready. And that's why
Guest 2
rights as me. So even though I'm the lead,
Guest 2
regularly contribute.
Guest 2
I don't know where the money went other than paying the employees and some other expenses.
Transcript
Wes Bos
Biome is a one stop shop
Guest 2
It was really interesting. That's good. Yeah. Yeah. I got
Guest 2
I was curious to know what you talk about.
Wes Bos
while having, like, a simple configuration. Node tool kinda do it all, actionable error message, all kinds of really neat stuff. So pretty excited about this. We're gonna talk to Emma today. He's the project lead,
Guest 2
now, Biom and Astro. So, So that we were not able to to understand because it there's no spec specs. So Wes.
Guest 2
I started with webpack, you meaningful, All in one experience, so CLI and Oh,
Wes Bos
We we talked about the Scott of all the things in this space, and and Biome was is one of the ones that we spent quite a bit of time on. So pretty excited about it. Do you want to give us a quick rundown of of who you are and what Biome is?
Wes Bos
projects at some point. It's built in Rust. It aims to create, like, a wicked fast alternative to tools like Prettier ESLint
Wes Bos
and, talk about where Biome came from. It was Rome at one point. Now it's Biome
Wes Bos
Welcome to Syntax. Today, we have a show for you on Biome. We have Emma Stapa on, who's the creator and maintainer of Biome, and we're gonna talk all about it. And if you want to see all of the errors in your application,
Wes Bos
syntax. You can sign up today and get 2 months for free. Sentry is just a really incredible tool for not only tracking your performance, making sure your application has no bugs, but even just seeing what goes wrong when something goes wrong because things go wrong all the time when we're coding. And you don't want a production application out there that, well, you have no visibility into in case something is blowing up, and you might not even know it. So head on to reduce century.ioforward/
Wes Bos
syntax. Again, we've been using this tool for a long time, and it totally rules. Alright.
Wes Bos
JS well as, like, what the the endgame is on it. So welcome. Thanks so much for coming on. Thank you for having me. Yeah. Yeah. This is this is exciting. We talked about we had a whole show on, like like, next gen JavaScript tooling.
Wes Bos
you'll want to check out Sanity at century.ioforward/
Wes Bos
JSX, maybe HTML,
Wes Bos
Wes.
Guest 2
So, yeah, so I'm Emanuele.
Guest 2
Sure. Sure. I watched that episode.
Biome avoids config options like Prettier to reduce bugs
Guest 2
to restate. Doesn't mean that we won't add them. It's just, you know,
Wes Bos
the reason why I haven't picked it up in all of my work yet is just because of language support.
Wes Bos
So we also have partial support for Vue, Svelte, and Astro. Now since my work is mainly
Wes Bos
So do you do you foresee those types of things for, like, views, Svelte, and Astra being resolved once
Wes Bos
the Svelte support is only through the JavaScript aspects of Svelte or the the script aspects of Svelte.
Wes Bos
HTML and CSS
Wes Bos
in Svelte,
Wes Bos
Will you give us more options than Prettier gives us? That's always the thing people have with Prettier JS that there's not a lot of knobs to turn on Prettier. You kind of just it's opinionated on on purpose.
Wes Bos
JSX, TSX, JSON, and JSONC.
Wes Bos
So the language support table which we'll post is is really impressive because it seems like you guys are flying on this, language support. Every time I check it, it's a little bit different here.
Wes Bos
full support has been added?
Guest 2
with the options.
Guest 2
So we try to so people can go there and read it.
Guest 2
options to Vue or Svelte. So there are some implications Yeah. So I'm just a face
Wes Bos
Yeah. Yeah. That makes sense.
Wes Bos
But right Node, it has full support for parsing, formatting, linting in JavaScript, TypeScript,
Wes Bos
And I think one of the big things for for me is that the,
Biome provides formatting, linting, error messaging in one CLI and editor experience
Guest 2
And, yeah, let's see how it goes.
Wes Bos
Yeah. I think that's a a good introduction to you know, I think one of the first questions we really wanted to ask you was because we had talked about Rome on this show for little while Wes once it was announced. It was sort of announced as being, like, the the tool chain for JavaScript, and it never never came to fruition.
Guest 2
developer experience, that
Guest 2
support from other languages. So,
Guest 2
around the formatting, of course, I'm very passionate about open source. I've been contributing to Open Source for a long time.
Guest 2
rules, and TypeScript files.