 I am so pleased to announce our first speaker of the day. She is someone pretty well known in the WebAssembly community. Bailey Hayes is the CTO at Cosmonic. She is on the technical steering committee of the Byte Code Alliance. She is the co-chair of the WASI subgroup of W3C's WebAssembly community group. She believes that the future is in distributed systems and WebAssembly. And she's been around for a while in this community. So that definitely holds true. Her talk will explore the question, are we componentized yet? Please help me welcome Bailey Hayes to the stage. That's right. So today I am going to answer, are we componentized yet? But first, a brief detour. Before I can say whether or not we're componentized, I need first to know, do you know what a component is? And luckily, we had this fabulous talk from Luke Wagner yesterday, where he answered the question, what is a component? And a component is a standard soon. Portable, lightweight, finely sandboxed, cross-language, compositional module. That's a lot. But he broke it all down really well in his talk yesterday. But for the sake of my talk, there's just a few key points that you need to know, which is that the component model enables building from high-level languages into a portable Byte Code. And that Byte Code is now composable with any other language that's compiled to the same Byte Code. So we've got language interoperability and composability. And a component fully encapsulates a core WebAssembly module. And you can talk to it through imports and exports. And that interface is defined using both as part of the Byte Code. It's within a part of the component. And this is statically analyzable. It also enables us to build out capability-safe interfaces. Those interfaces themselves are defined using a new IDL that's defined as part of the component model called WIT. And it also lets us pass in these new high-level types, like strings, enums, and also functions. So taking all of that and taking a WIT, I can run tools like WIT BindGen and output a Wasm component that adheres to those interfaces. So after a whirlwind tour of what you need to know about the component model, what does it mean to be componentized? And when I say are we componentized, what I'm thinking about is are we componentized as an ecosystem, as a WebAssembly ecosystem? And we need to be sufficiently componentized to say whether or not we are actually componentized yet. I started thinking about this and drawing out like a mind map of what the component ecosystem might look like, but this was kind of lame looking. So Caroline helped me build out something that actually makes a little bit better metaphor for this, which is really it's like a metro station where there are many different stops along the way. There are a lot of different tracks that are getting built out from this central station of the Wasm component model. So first I want to dig in a little bit on, okay, let's talk about that central station. It builds on top of the core spec. It's an extension of it. And so that's the component model. It sits right on top of it. There's this other thing called Wazzy Preview 2 that I'll talk a little bit more in a sec, but that enables you to build modular interfaces on top of Wazzy Preview 2, but also your own interfaces. And you can build that on top of the component model or Wazzy Preview 2. And so what I'm hoping we enable is, you know, maybe like a train watching API that you build yourself. So Wazzy and the component model are both standardized as part of the Wazzy subgroup of the W3C's WebAssembly community group. Now, if you want to get started looking at the component model specification, this is the repo for it. And to answer the question, are we componentized yet for the component model repo? Well, yeah, I mean, it's kind of hard to say that we're not for the component model. However, Preview 2 is not done yet. We're on track for finishing that this year. So we're nearly there. Preview 3 is another iteration that we're going to be building on immediately after Preview 2. So we haven't hit MVP yet. And that will give us the ability to have native async. And so moving right along on the standards track, we hit Wazzy. And Wazzy's that piece, the WebAssembly Systems Interface. But I like to also refer to it as the WebAssembly Standards Interfaces. And they let us define interfaces like on the left here we have logging. And on the right, we're also to find these things called worlds. This is a very abbreviated version of that world. And that's the CLI world. And so with this, I can have the same building blocks and same foundational principles that anybody can start building on top of. So is Wazzy componentized yet? Well, I think you're going to catch a little bit of a theme, not quite yet. We will consider Wazzy Preview 2 launched. Wazzy Preview 2 itself is built on top of the component model. And it will be considered launched once we have two independent worlds. Right now we're on track to have the Wazzy CLI world. And we also are looking at a couple other worlds that are happening right now. Wazzy HTTP proxy is one of those. So to be included as part of the Preview 2, that basically means that it's met its portability criteria. So we say that it can run in all the environments that we wanted to run in. But it also has an implementation that people can use and try out and get feedback on and it's been voted on by our community group. So let's talk a little bit off the track of standards and talk a little bit more about the implementation side of things. And when I talk about implementation, a lot of this is happening within the Bicode Alliance software foundation. And there we are building on top of these standards. And on top of we are implementing those standards. And our GitHub org is Bicode Alliance. And so a lot of the different projects that I'm gonna highlight now are all gonna be coming out of the Bicode Alliance. And the first one here is the component model reference implementation that is inside WasmTime. WasmTime is one of the runtimes that runs within the Bicode Alliance. It's pretty great. And I recommend if you're into looking at runtimes, go to Nick's talk that's later today. Guy Bedford actually talked yesterday and he talked about another different way of being able to take a component and be able to run it. That's called JCO. JCO transpiles a Wasm component into JavaScript runtime so that you can run it in browsers and like in Node.js. And so these are two different places where I can take a component and run it somewhere. So that is clearly the first stop on our track of are we componentized yet? These runtimes I consider, yes, yes, we are componentized yet. I can take a component and I can run with it. Moving on to, okay, can I build a component from some other language? So let's start with that. And we call those guest languages. The first one up here is Rust. There's now a tool created by Peter Hewn called Cargo Component. And so I can say something as simple as cargo component build and then outcomes a component. So yes, that's componentized. There's another tool. Also created by Guy Bedford called JCO, JavaScript component tooling. I can say JCO componentized and outcomes a component from JavaScript source. So yes, also componentized. Now there are other pieces like go and this command will output a module. So it's the core WebAssembly spec, the core module and I can do actually something to make it into a component. So it's nearly there. I would run something like this. I would say go generate. I then run tiny go build, targeting the WASI Preview One API and then I would use some tooling that's provided within the Bicode Alliance called WASM tools. WASM tools has this piece here. That's the component adapter. That component adapter lives inside WASM time. If you're into adaptation and transformation that's a good project to check out. And so using that tool, I'm able to then take a WASI Preview One module and adapt it to a component. And that's why I would say that any language that compiles to WebAssembly today can be componentized. So every single one of these is nearly there. And so if you have a favorite language that you wanna make sure is there, this is a great launching point to look at. And I also wanna highlight that I'm calling tiny go here because I use tiny go to build reactor style modules which is kind of like building a library. But also an upstream go lang. In the most recent release, we've got WASI support there. And that work is continuing and I'm really excited to see more progress made. Now the last one here is gonna be, I'm gonna highlight Joel Dice. Joel is gonna be giving a talk later today. He's gonna be talking about Python. It's called componentized pie. So I'm already gonna give it the check because it's obviously already componentized. Now, this isn't to say that any one of these projects is done but they don't have bugs so that there aren't things that we need to do to make that ecosystem cohesive and whole. And I would probably say, componentized pie is one of the more complicated and interesting projects that we have. So all I'm saying is, is it componentized? Yeah, yeah, it's componentized. So if you're interested in this side of the work, please come and join the SIG guest languages. That's our special interest group within the Byte Code Alliance. There are several different working groups for a lot of these languages. Moving on to the registry. So once I have WebAssembly components that I've produced, I wanna be able to share them. I want other people to download them and combine them and work with others. And so later today, we've got another talk from Danny. He's gonna be talking about package management for WebAssembly components. And the project there, if we call it WARG, that is an in-development registry protocol. It's also a CLI. So if you see the word WARG, think registry. Moving on to last, but absolutely not least, because throughout this entire conference, this is probably the number one thing people have asked about and want, and that's documentation. It is critically important for any ecosystem to have fabulous documentation to say whether or not it is actually componentized. And so special thank you to Ivan and Kate for putting this together. Is it componentized? Well, you know, it's happening. There's a lot more that we want to add and there are a lot of fabulous issues inside this repo for requesting, okay, here are some of the areas that we wanna fill in. So let's go back to the WASM component model central station. We've got so many different pieces and parts of our track. And I ran through several different types of places and substations that we can hop on. And if we do this, I think that it's really important for you to realize that this is something that is part of an entire community. If we come together, yes, it's going to be a bumpy road, but if we are ended together, I think it's gonna be really fun. But not only that, the destination is truly remarkable because it's gonna change the way that we write applications today. And so, as Michelle's already highlighted, there is an event that's gonna be happening tomorrow called Componentize the World. This is a registration link. And so I just wanna highlight one more time that is tomorrow. So please come out, get up early. Doors open at eight. The cost is free, it's free as a beer. And where it's at the Microsoft Executive Center. And so I will say that all of this is really bleeding edge technology. We're still laying down the tracks, so to speak. But if you come out to Componentize the World, I do ask you to mind the gap. But if we build it together, I think it's gonna be a lot of fun. And we can really build something that is gonna last for a long time. So thank you. Thank you.