So, I like the comparison to older tools, but since you touched on it briefly, I'll let you unpack that, ironically, and tell us a little bit about the differences, right? So, what you were using until now, and what has been significantly improved now that you can adopt next-gen built tools? Yeah, sure. So I might be the most kind of like old man yelling at clouds on this because we started looking at this so early when it was just like a web-packed dominated space, and now there's a ton more options. But at the time, this was back in like 2018, 2019, you just couldn't import React in the browser. You had to basically either use a bundler or use the UMD build, which means you're like window.reactdm and window.reactdomin, and doing this more manual approach, it really just didn't have the same convenience of you go into a web-pack and you're actually able to use ESM, and you're able to use a syntax that feels really modern and fresh. But behind the scenes, web-pack was like taking that and doing a lot of work to bundle it for you so that it would run in a browser that maybe didn't have that primitive, that import-export syntax. And so, a lot of my early days were like, no, you don't need to do all this, but it was only because these primitives were now finally in the browser. And so, yeah, they dominated the last decade because it was really the only way to get a modern developer experience that actually ran in all browsers. But what we've seen now that we have these primitives is like some of just the basic core understandings of what a DevTool is are being revisited. So the idea of having to rebundle your site every time you would save or run a bunch of processing on large chunks of your site during development, those are being revisited, and a lot of them are going away in favor of what V8 and Snowpack both do, which is treating your individual files as individual builds and not necessarily having to, oh, Evan, I don't want to speak for you, I think Snowpack might go a little more dramatically in this direction, but thinking of even the bundler as an optional tool in your toolchain. And if you don't need to bundle, you don't care about that, you don't have to, you can kind of bring it in as you want to go when you're ready to tackle performance or to go to production. So all of these fundamental things about how we build websites are being revisited for the first time in a while. It's a really exciting time.
Yeah, it sounds exciting. Evan, I'll allow you to chime in here and tell us a little bit about how V8 is different, what V8 is focusing on, what's kind of in the roadmap in terms of taking it forward as a next-gen build tool. Sure. So for me, V8 started really with the itch that I have for myself because we built Vue CLI, which is webpack-based. And when I built Vue CLI, we had this kind of a lesser-known command called VueServe, which is a global command that just allows you to spin up a dev server for a Vue file without any configuration at all. You just need a file, and you can use that command to spin up a dev server. And I like that, but over time, it's still like, in order to do it, you have to install global Vue CLI, and the whole process is still slower than I would've hoped. I always wanted to have this thing where I can literally spin up a dev server in milliseconds and have something on the screen immediately. When I saw browsers started to land native ES imports in the browser, and I was playing around with it, and I was able to actually just compile a Vue file on the fly in the request, and I had that proof of concept, but at that time, it really was just a proof of concept, because around that time, very few people actually used native ES imports, and I was like, maybe this is just too early, but a year or two later, I realized, oh, all the major browsers today actually ship with native ES imports. Maybe it's time to revisit that idea, but at the same time, I was trying to figure out how hot module replacement would work over it, because that's becoming something that's kind of essential for large-scale workflows. And I revisited the project, finally figured out how to do hot module replacement with native ES modules, and that was kind of the initial shape, how Veed took shape. And I realized this could be more than just a prototyping tool, so at a higher level, Veed is built on top of that and we're trying to really, I think the initial goal was to provide something closer in development experience to Vue CLI, because we want to have a lighter, leaner, modern equivalent to Vue CLI for our users. But along the way, as we build more and more of the features, like move the equivalent features into Veeds, realize a lot of them are not Vue specific, they can actually help be used in other frameworks too. A lot of the stuff is shared, like how you handle CSS or how you want to actually build. In terms of build, Veed is a bit more opinionated because we want to have the tool that handles the dev server and the build process in the same tool, because people are used to Vue CLI doing that. So we kind of want to carry over that characteristics. And eventually, we essentially extract all the things we learned in Vue CLI, combined with these new ideas, and came up with something that... I think one of the interesting things is Veed is designed to be a bit more out of the box, so that existing users of Vue CLI or Create React app can kind of move over a bit more seamlessly, because it kind of caters to what they're used to, like the way certain things are supposed to work.
Comments