 Hi, this is your host Toplim Bhartia and welcome to another episode of TFR. Let's talk and today we have with us Matt but your sea of fermion Matt is great to have you on the show. Yeah, thanks so much for having me today We have been covering the company of web assembly a lot since you are here So I want to kind of revisit the topic first. We'll talk a bit about what is web assembly I think I've heard a couple different definitions But I think the one that makes the most sense to me is just to look at web assembly as a Compile target right we talk about compiling to one native format versus another we talk about in Java compiling to bytecode I think web assembly is best understood as sort of falling in that Java or net ecosystem, but with one Really important difference. So and that's security related in in a Java or in net typically When you when you execute and when you compile and execute a program on behalf of a user your default disposition is so is to trust that user Trust that guest code in web assembly, which was originally built for the browser The default disposition is to not trust the code that you're executing And so the web assembly runtime offers this really nice security layer talk a bit about The adoption of this technology. What was the original intention? Mostly no web assembly for a browser But do you also see that it is going beyond that is specific intended use case because that is what happens in most cases We create technologies to solve a specific problem But when it goes to market folks start using in places where we did not even imagine initially And that's how a lot of products like these grow so talk about it Yeah, and I think web assembly is a great example yet again of one of those technologies that started in one area There's really sort of expanded out into what I would categorize as for so the first one of those is the one It was intended for right being able to use it in browser to do things maybe more Sophisticated than what you can do with JavaScript or something that is really tooled particularly well to a particular programming language So the you know canonical case there is Figma, right? They wrote a lot of code in C++ that's very high performance graphics code They compile it to web assembly and they run it on the browser side The second big category is IOT and far edge where web assembly is built to run on various felt devices that don't have You know huge processors or a lot of memory And I think it works really well in that kind of environment and I think we'll see a lot of usage there The third one is what one of my friends calls the last plug-in technology will ever need and this is the idea that web assembly really provides a nice kind of Security boundary plus really easy API extension mechanism that would allow different platforms like on Hoy proxy as a great example a way to easily add on You know a plug-in infrastructure where developers can bring their own extensions and run them in a secure and fault tolerant kind of way but the one that I am the most excited about the fourth one is the potential to run web assembly on the cloud and You know being a long-time cloud person involved in OpenStack and then Kubernetes and the container ecosystem One of the things that I really recognize and appreciate about cloud technology is that fundamentally what you want is a In a compute runtime right is is an environment in which you can execute something safely and then you can begin to you know as as the sort of The way that Amazon used to talk about it way back in your days is like you're renting your servers out to someone else because then you then they Can run their own applications on your stuff and there's low risk from the customer perspective really it's it's the converse Right you want to be able to write the code that you want to write and run it somewhere else and not have to worry That somebody else running on that same platform could somehow you know tinker with with your code We used to call it at Azure at Microsoft Azure the Pepsi Coke test Can you run Pepsi and Coke both websites both on the same piece of? Hardware and know that your isolation models are so good that both will be able to run side-by-side without any perceived conflict and and web assembly I think What really got us interested in it was as long time cloud developers who are looking to solve particular scenarios web assembly really hit that same server-side profile for us that containers did and That virtual machines did but then web assembly has some different Benefits in that in that regard right the performance of web is definitely is just astonishing Which means you can start it up in someone millisecond and that means we can start to build a better Foundation for serverless and functions as a service style infrastructures with web assembly Then we've been able to do with virtual machines and containers You know I think Tied up on the next question that I was going to ask if you feel that you want to go a bit deeper Which was more or less like a comparison with virtual machines or containers Yeah, yeah, I think that the way I like to conceive of the the difference between these layers Is that virtual machines are sort of like the heavyweight class of cloud compute right? You package up from the kernel and drivers all the way through your application code with everything in between into one big package You upload it on to somebody else's Server environment right their cloud and then you can execute that entire thing. I think that virtual machines are just They're gonna be they're gonna be around forever Right because they solve such a critical piece of this cloud infrastructure, but they're heavyweight. They're the heavyweight class I think you can kind of take a step over to the right and look at containers and say all right well Containers you don't have to include the kernel You don't need the drivers you only need sort of a subset of the core operating system when you package everything up And so they're really more like a middleweight class of cloud computing They instead of taking minutes to start up like a full-size virtual machine does they tend to take seconds to start up Maybe a dozen seconds. Maybe you know 30 or 40 on the higher end, right? and and One of the big benefits of them is they allow a nice easy application encapsulation where you can take an existing Application package it up as a container and run it So as we kind of laid those things out on my team we said, okay Well, if we've got a heavyweight class, and we've got a middleweight class, what's the lightweight class, right? What's there that we can just package up the bare minimum of things and be able to get you know Faster startup times make it easier to move them around the data center or from device to device And that's where WebAssembly fit for us. It's the lightweight version right instead of taking seconds or minutes to start up Takes an under a millisecond, but then you also don't package up, you know a lot of the file system or or things like that that you do with with docker images and Also at least at this point in the WebAssembly ecosystem and you always have to acknowledge the weaknesses of any of these technologies, right? But right now it is not so easy to take an application and sort of lift and shift it into WebAssembly It often does require at least a little bit of adjustment of the code in some cases Quite a bit of adjustment to the code to be able to run it in this new environment now I don't know if that certain set of circumstances will persist But it is something that marks WebAssembly as being very early in the technology cycle right now And it's the kind of thing that fermion is just we're all in on trying to figure out how to solve this and what the Right applications are for today and then how that'll become you know What the right applications will be for tomorrow as the specifications begin to get more robust So if I ask you what are the use cases or what are the right applications because as you also mentioned I mean if you look at the we have been talking about digital transformation cloud native for a long time Folks have been it's still trying to containerize their you know legacy or it looked and we are talking about but we personally So so let's talk about what are the use cases where you feel that? Hey, this is where we basically makes more sense and that's that's the the journey folks should make and then also Talk about some of the pain points of hurdles that you're talking about which are there which are either you're like Hey, what these are the early stages that can be solved or these are the big ones that can be you know, so that's why Depending on the use cases where it's ideal. That's where the effort should be put And I think for me right now The the most exciting use case for WebAssembly on the cloud side is in the kind of serverless functions world, right? You know at at Microsoft, you know, I was in this kind of privileged position where I got to talk to customers got to talk to internal people went all a lot of Conferences and open-source events and repeatedly when I would talk to people about what they were excited about in serverless They would talk about lambda and Azure functions and some of these hosted environments and they would say I just love the programming model It's so easy to dive right into the business logic with these kinds of things But they would always then say but you know, there are a couple things I really don't like the debugging experience is hard the packaging experience is hard the operation is counterintuitive It doesn't sit with the rest of my applications I kind of have to treat it as one off and over in the side and you know they would always conclude by saying And I don't like the vendor lock-in right and so as we started looking at WebAssembly and trying to build this third category of cloud computing The the first candidate for us the very exciting candidate was to say yeah We can do this serverless functions things really easily even with WebAssembly still being a maturing technology It already is an ideal candidate for that kind of solution And so we've really focused a lot of our efforts there on on building that story on making it really really easy to build Microservices with WebAssembly and to build sort of the back end of web applications with WebAssembly That for us is what we think You know at least for the next year year and a half That's the prime application of WebAssembly on the cloud is just addressing those problems and making it easier and easier for developers to build You know serverless style Microservices and web applications with WebAssembly Now with that on the on the pro con of the pro side, right? What's on the con side? What are the things you probably shouldn't try and do with WebAssembly? Well to get there we can mention a couple of the specifications that are working their way through w3 And then see why why until those are done. You'll have some limitations W3 w3c is the standards body that standardizes html and css And it's also the standards body that standardizes WebAssembly And the core of the WebAssembly specification has been done for years now. In fact WebAssembly is currently on version two of its specification But there were a number of things that weren't considered to be included in the core One of those is threading One of them is a universal garbage collector Some of it is ways of handling large math mathematical operations So there are specifications working their way through w3 that will address each of these But as I'm sure as you're listening and as I'm saying some of these things are thinking well You know threading seems like the kind of thing you'd really want if you were going to run a large long long running process or Long run or build a database or something like that Uh, you know numerical calculations for large numbers are the kinds of things you really want in data science And I do think that that's uh, those are the kinds of applications where Uh, their WebAssembly is not yet right to do that kind of stuff Now there's one specification that i'm really excited about working its way through w3 and it's called any any rather in uh, you know Unglorious inglorious kind of title. It's called the component model But this is uh, this is one that will allow two different WebAssembly binaries to communicate with each other securely via the host runtime And that sounds kind of vague and a little bit, you know abstract But the idea of that would be that we would start being able to write language Write our libraries in one language and compile them into a WebAssembly binary and access them easily from another WebAssembly module so you you would suddenly have the opportunity to do things like Write a high performance rust implementation of an algorithm and import it into a c++ library Which then exposes its own apis that can then be used from javascript and have all of this done Kind of seamlessly in the back end So while it can't be done today That spec is moving very quickly and i'm really optimistic that it'll be done You know in 2023 and that will really sort of open the floodgates of all these new and unique Applications of WebAssembly that we simply can't do in really any language ecosystem right now So talk about you know fermion's you know engagement involvement with these kind of open source projects as well fermion has been Highly involved in lots of different open source work a lot of us came from an open source background Not a lot of us all of the engineering team came from an open source background right? I was the one of the founders of the helm project We did the illustrated children's guide to kubernetes. We did a whole bunch of cncf projects And so we are and always will be really active in cncf will be active in bytecode alliance We regularly allocate engineering time to work on projects and under both of those umbrellas and really And I don't say that you know to sort of to sort of be trite about the importance of this kind of thing right We the WebAssembly is so early that there's this opportunity to really Influence the direction of the ecosystem and when we can be thoughtful and really work hard in these kinds of contributions The the the impact of this really multiplies You know if you look at kubernetes now it is so sophisticated and so big that even a hundred line pr seems very small compared to Uh to to the size of the code base But when we were involved in kubernetes years ago, right? A hundred line pr could change the the the way that kubernetes was working And we think that we're really at that same level right now with web assembly where it's growing The core is still maturing and so it's a great time to be involved in open source with web assembly Talk a bit about how are you seeing the evolution of the ecosystem around web assembly? And then let's talk about what value is fermion bringing to a table because that you know Most of these are open source project But we're solving specific problem for specific user or it could be you know What solving a wider problem irrespective of what the use case could be I like to think when I think of the ecosystem with web assembly My natural tendency from where I've been most recently would have been to compare it to docker in the container ecosystem But really when I have to when I take a step back and I look at it More objectively, I would have to liken it to maybe like the early java ecosystem You know early early java from back. I started my career as a java developer early early java 1.0 1.1 And at that point, you know embedded was supposed to be the big area for java to go into and yet very quickly People embraced it as a general purpose programming language And then we started to see it go into the browser and then into the server side and it just sort of like Boomed and exploded way out and probably these days Embedded is probably one of the less frequently Used used use cases for java and web assembly. I really think you know a similar ecosystem wise to that where The general purpose purpose of web assembly is really starting to hit right now. So we're seeing An ecosystem form around web assembly proper But within that ecosystem are chunks of of of companies that are working in other ecosystems, right? So we consider ourselves to be in the CNCF ecosystem where we're really more interested in what cloud native Development looks like Microservice development web applications. It just so happens that web assembly seemed like the right fit for us But if you go to say Profion who's doing security, right? They're definitely in the web assembly ecosystem contributing with bytecode alliance But they're also in that security ecosystem Where they where they work a lot on trusted compute and you could talk about single store and databases And so I think we're going to see just like with early java this explosion of a whole bunch of organizations that are working on web assembly, but you know Sort of connected to other ecosystems and that's both kind of exciting and terrifying, right? It's exciting because it means we will all work together to build a good general purpose platform Which is what we need But it's a little terrifying because then it gets convoluted about how everybody's here And you're trying to position yourself as a We as at fermion right are trying to position ourselves as a good player within the web assembly ecosystem And also as part of the cloud native ecosystem and your messaging gets a little complex and stuff like that Uh, so but it is just it's a really exciting thing to see this community take off in this particular way So I I have high hopes that what we'll see over the next, you know year year to two years is You know the the some of this web assembly work will remain in the separate ecosystems, right? But more the majority of it I think Especially with things like the component model and the threading modeling these core pieces of specification The majority of the movement in web assembly is really going to benefit All of those different groups within the broader web assembly ecosystem matt Thank you so much for taking time out today And I really appreciate this this detail in depth discussion along the assembly Of course use cases the challenges that are there and I would love to have you back on the show. Thank you Thank you. It was an absolute pleasure I'll be come back