This needs a cool tagline, maybe something like “Write Once, Run Anywhere”!
@DevLife7172 жыл бұрын
This is all very promising but everything with WASM is always “just around the corner”. I first heard about WASM back in 2016 and we’re now headed into 2023 and we’re still waiting and discussing “what will be” at some point in the future. I feel like the kids in the backseat asking - “are we there yet? No. Well just wake me up when we get there.“
@Anton-cv2ti Жыл бұрын
We have used WASM in our core products for years now. I know that large companies like Adobe and Google are using it. I dont know what youre waiting for :)
@TheSulross Жыл бұрын
well, WASM certainly doesn't step in as a replacement for what we do with Docker containers. Pretty much any existing code, no matter how its implemented, can be packaged and made to work correctly in a Docker container. So we can have Golang apps, Python apps, C++ apps, Java apps - andvwe can package in useful additional tidbits from the vast Linux eco system - which is extremely handy, powerful, and flexible to the max. And they are then all nicely packed with their respective dependencies. IOW, Docker containers don't impose awkward limitations.
@ArmoredCow2 жыл бұрын
WASI sounds a lot like the Java VM concept. Wasn’t one of the main points for the container was that it had all the needed dependencies and configuration to run the application.
@byrongibby2 жыл бұрын
That's what I was thinking as well. Even more so when you think about the capabilities of Graal VM. I guess the major difference is that Java never really made it into the browser
@Deplissee2 жыл бұрын
Thought the same. The whole world made this long journey through containers and so on to arrive at a point where the Java guys already are for nearly 30 years or so :D
@PeterAuto12 жыл бұрын
the concept is the same, but the Java VM was developed with a specific language in mind (Java). But WASM was developed as a general compilation target for any language. In WASM you have a much smaller runtime, because you don't have build in garbage collection, reflections and so on.
@DefnDKMC2 жыл бұрын
It's not really the same thing. I'm sure having all dependencies in one neat package was part of why Docker became so popular, but the main purpose of Docker is isolation. Containers need explicit port bindings and explicit access to only specific parts of the file system. The point of WASI is it gives you the exact same safety through its sandbox. It has the same restrictions as docker of having to explicitly define everything that is allowed to interact with the host system, but without having to use virtualization. The purpose would be to replace cloud hosted solutions where untrusted containers are running on hardware that's managed by the cloud provider. Instead of virtualizing a whole OS for each container you would just run a fleet of WASI applications that are each in their own sandbox and only have access to their own storage and nowhere else.
@pchasco2 жыл бұрын
@@DefnDKMC Docker doesn’t use virtualization on Linux. There is almost no overhead. It uses Linux kernel features. WASM doesn’t make sense as a replacement for containers. It is another option, but it doesn’t change the game.
@name._..-. Жыл бұрын
"Write once, run everywhere" is philosopher's stone but programmers version.
@HomeSlize2 жыл бұрын
Thanks for sharing this. I've been super interested in WebAssembly since I first head of it a few years back. I kind of lost track of over the past few months but this video along with the latest .Net announcements about it motivate me to start learning for more about it. Thanks again!
@smithnigelw2 жыл бұрын
Interesting. Hope you can do further video on this subject as you dig deeper.
@benpracht26552 жыл бұрын
Write once run anywhere? Sounds like Java from even the 90s.
@serhioromano Жыл бұрын
The end was epic and no regret I watched to the end.
@AlexEscalante2 жыл бұрын
Awesome technology! I am keeping my eyes on this also. Very good video, congratulations.
@tpotlog2 жыл бұрын
Like it was said it is not about it replacing containers ...... Running a container have never been about running a single app ...but to run a group of process in the same separated (not always) process namespaces......single app in a container seems to be a good idea since it makes things are much more potable and manageable ..... This is why kubernetes became so big so fast. Well this technology does not seems like something we have not seen before like JVM....which was sold as "build once run everywhere" and turned into to be "build once debug everywhere" I can see a use for this for tiny to small web apps ... Large enterprise system will sill use containers and kubernetes as life are more than web apps
@TiborVass Жыл бұрын
Cool video! One thing that is often missed in the docker vs wasm debate is that real world apps often need extra files (configs or extra modules) to run properly. So it's also in this sense that wasm containers make perfect sense together: you package your wasm file and "all the environment that it needs" into a container which you can push to a registry.
@ehutch79 Жыл бұрын
Wouldn't that include things like ssl certs, api keys, etc? Is the idea that you'd be committing those to a registry? Would you need to have different builds for each environment?
@TiborVass Жыл бұрын
@@ehutch79 no those are secrets and the container is supposed to abort without the proper secrets. But you’re right that some embed them anyway thinking it’s fine to push it to a private registry. I disagree. That’s how secrets eventually get leaked.
@FanieReynders Жыл бұрын
Secrets and configuration belong to the environment and should not be included in any compilation
@coomservative2 жыл бұрын
how do you access the filesystem when compiling to wasm, is there a way to mount some part of the disk as special fs visible to wasm binaries or would this require DB blob storage/using some kind of cloud storage provider ? Also, are they any performance considerations?
@FanieReynders2 жыл бұрын
WASM is sandboxes by design but in combination with WASI the host would arrange file IO and it will "just" be available in WASM land.
@Wouldntyouliketoknow2 Жыл бұрын
I like the idea that I could deploy a wagi gateway, then break a monolithic api into microservices that each build and publish to ACR and get executed behind that gateway. I need to look more at wagi but I am guessing the wagi gateway would still sit behind a "proper" gateway (like traefik or az app gateway etc) - as it looks like wasg executes the api wasm workload locally so there needs to be at least a LB in front of it routing traffic to it appropriately for that to make sense - no doubt also handling other things like authn / authz, ssl etc etc. I need to explore more with this architecture - thanks for the informative video.
@FanieReynders Жыл бұрын
Thanks for the feedback! Have you seen Spin? www.fermyon.com/spin
@byrongibby2 жыл бұрын
Dankie Fanie. Lyk vir my jou kanaal is vandag gekies deur die algoritme vir een of ander rede. Enjoyed the content :)
@rafael86ny2 жыл бұрын
Excellent content. May the future get here faster!
@williamheckman45972 жыл бұрын
All this is great but how do you connect this stuff to graphics and networking? I heard you still can't manipulate the DOM so you still have to go to javascript.
@FanieReynders2 жыл бұрын
If your question is more towards UI in a browser, I suggest to check out Blazor WebAssembly with pure .NET code running in the browser, manipulating the DOM without the need for JavaScript - dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor
@spotlight_is2 жыл бұрын
In the tech profession it doesn’t matter that a tool is the best, but rather the one for job security is all that matters. Ie if your company uses Docker and a bunch of other complex tools, under heavy stress, and you raise your hand and pitch for WASI, your colleagues will get u fired anyway as you disrupt their stability to pay rent, despite making all the sense in the world.
@bakedbeings Жыл бұрын
I feel like the most important question for me, as a programmer, hasn't been answered (90% of the way through): what's implementing all the usual platform/os features? What console is it outputting to if it's not a bash shell or command prompt? Does it have a windowing api like java? How do you access controllers? How do you write, say, gpgpu code on it? I'm about to look it myself, but I couldn't concentrate once those fundamental questions were left hanging 😅
@chrisjudge7052 жыл бұрын
Love your style of explanation, and the conscise and very important content for the future.👍. One wish, can you unfold the eco-system in the relation to the RUST language. THX
@symbally2 жыл бұрын
would love to see a performance and I/O comparison between using native runtimes vs web assembly. does it also have faster startup, etc.?
@FanieReynders2 жыл бұрын
It probably depends on the language?
@symbally2 жыл бұрын
@@FanieReynders I totally agree. That's what makes it even more interesting to think about! Already 40 languages supported I saw
@pchasco2 жыл бұрын
WASM does not typically perform faster than the same code compiled natively. There are many factors at play here, but often it has to do with JIT overhead and instrumentation, progressive compilation, and that JIT often does not optimize as aggressively or completely as AOT.
@realsong-fake2 жыл бұрын
I have a experimental web framework written in async Rust that can be cross compiled to target wasm32-wasi which can be ran with wasmtime runtime. Per thread IO throughput for hello world http/1 requests is about 1/3 of what the same native code can offer. Unless I did something horribly wrong it's safe to assume there is still a long way to go performance wise for server side wasm.
@cescoferraro666 Жыл бұрын
you lost me whe u turn on a power shell lol great content thanks!
@minimalist_zero2 жыл бұрын
Very informative, thanks! This is incredibly exciting!
@anton_roos2 жыл бұрын
Awesome content!! Baie dankie!
@nkululekomthimkulu12482 жыл бұрын
Ey Brother Man. Picked up that you may be South African. Just Subbed. All the best.
@StefanoLabate2 жыл бұрын
Very useful, and I like the way you explain. Subscribed!!
@sord4442 жыл бұрын
Using command output and mapping it to an endpoint - sounds an awful lot like CGI. If I ever do this, I'll make sure to put my wagi files in a folder called cgi-bin...
@jeremyheminger6882 Жыл бұрын
Error: Cannot find 'wasmtime'. Tried installing wasmtime: dotnet add package wasmtime and it says compatible with all modules and yet same error. Wasmtime.Dotnet.dll is in root of the project. Not a VS code user typically so forgive my ignorance about installing packages.
@FanieReynders Жыл бұрын
Wasmtime is a runtime nothing to do with .NET and you need to install separately. You need the experimental Wasi.Sdk package (don't forget --prerelease) to your project to build wasm and run that file with wasmtime.
@jeremyheminger6882 Жыл бұрын
@@FanieReynders Installed: wasmtime-dev-x86_64-windows.zip from wasmtime website and started new project and Installed wasdi.sdk like this: dotnet add package wasi.sdk --prerelease ... same issue.
@FanieReynders Жыл бұрын
You should be in the same dir as your csproj file. Package does exist www.nuget.org/packages/Wasi.Sdk/0.1.2-preview.10061
@jeremyheminger6882 Жыл бұрын
@@FanieReynders I installed Docker from the NuGet but I didn't know that wasn't Docker. I installed Docker Desktop from website, followed the tutorials to create an instance and now everything us running. Thanks
@xesusdevila75202 жыл бұрын
Like (check) Bell (check) Subscribe (of course) Comment: Excellent content, well explained. Excellent production. I'm glad that YT suggested your channel. Keep the good work!
@GratuityMedia2 жыл бұрын
Thanks for sharing
@thygrrr2 жыл бұрын
Sooo.... It's Java Byte Code all over again?
@VickylanceMedia Жыл бұрын
But this wasi support has to be built for every single language out there right? unlike docker which will run any xyz software / language regardless. Its the same concept as Java and JVM except you can now use this across all languages IF in case wasi support is brought to that language. Which is a big IF
@spaceghost1662 жыл бұрын
Really helpful thanks Fanie!
@Wouldntyouliketoknow2 Жыл бұрын
For CGI model to be compelling for dotnet backend api development (it seems to be quite a divisive topic among developers in general) I think we'd want all the value of its simple programming model - whilst also being able to lean into asp net core framework for non trivial use cases. The way I see that personally - is we'll want to see an entry point method that we control being invoked, as you've shown in your demo app, but also be able to invoke a minimal api or mvc controller, from a cgi request - where needed. I think wagi would also need to support pooling / reusing processes (like fastcgi) if it doesn't already- as otherwise the perf penalties to pay per request would be prohibitive for many teams e.g start up, loss of in memory cach, connection pooling etc etc (even if they don't need all that performance - no one likes stepping backwards in that department)
@TonyHenrique2 жыл бұрын
Very cool!
@grkuntzmd2 жыл бұрын
TOML: Tom's Obvious Minimal Language
@jkuang Жыл бұрын
As time goes by, Kubernetes have wider and deeper adoption into the world of server infrastructure. It is good and it is popular. So I really don't see what is the benefit, other than bringing .NET into the fold, I guess, that this WASI can provide, "around the corner as always."
@FanieReynders Жыл бұрын
A few things: Kubernetes is an orchestrator and provides cluster management for containers, think about it as the ship. WASI is a standard interface for hosts to run WebAssembly "containers" and .NET is a framework for languages like C# and F#. Please don't confuse the technology. .NET has nothing to do with Kubernetes nor WASI has nothing to do with replacing containers. K8s should be able to run any OCI compliant containers (eventually).
@demohub2 жыл бұрын
👍 thanks for sharing
@victorchisomnwisu97762 жыл бұрын
I really love how you do everything from terminal and vs code
@Mumbairandomvlogs2 жыл бұрын
Nice video. Subscribed your channel.
@AttieHeunis Жыл бұрын
Dankie Fanie! Baie insiggewend.
@victorchisomnwisu97762 жыл бұрын
This is great
@sonant_bwolfe2 жыл бұрын
I hope this never sees any kind of real adoption in production. It's a cool toy for shipping something cross-platform and easy to distribute (probably great for development environments), but there's no way that it could ever compete with the performance of code specifically compiled to run on the architecture that's serving it. There's actually a world where WASM/WASI could actually be faster for people coming from languages that're already interpreted or compiled to less efficient bytecode, but you'd be crazy to use it to deploy anything other than that (e.g. services written in c/c++/rust/go/etc which truly compile directly to machine code without a VM). Nobody is compiling postgres or redis to target WASI for production. Conventional containers are here to stay, webshits.
@FanieReynders2 жыл бұрын
Please keep your comments respectful!
@FanieReynders Жыл бұрын
For those asking about WASM vs JVM twitter.com/solomonstre/status/1111140745824501760
@tswdev Жыл бұрын
Look ma, its Flash (AS3) all over again but with a different name
@FanieReynders Жыл бұрын
Just way more secure and part of an actual web standard.
@tswdev Жыл бұрын
@@FanieReynders I suspect Flash was used by more people than Web Assembly. Which would make it more standard than WA... it got killed by temper tantrums and strategic moves, not really security. But yeh, the good thing of WA is its open source
@pchasco2 жыл бұрын
I don’t see WASI as a game changer. WASM still doesn’t perform as well as native-compiled code. In fact, it doesn’t always perform better than JavaScript. To me, WASI seems like a novelty. It doesn’t run faster, it doesn’t add more features, it doesn’t have better tooling. To me it seems like an unnecessary abstraction layer that only saps away CPU cycles. It does open the possibility of running on Windows without WSL, but who would want to? Windows is expensive. Linux is free. If I’m deploying a cluster, I don’t want to pay licensing fees for each node.
@FanieReynders2 жыл бұрын
WASM is not Windows specific. It's a thing on its own. The aim of WASI is to bring standardisation to the mix in order to run securely and consistently everywhere.
@pchasco2 жыл бұрын
@@FanieReynders yes, but what I mean is that Docker only runs on Linux because it relies on kernel namespacing for process separation. Docker on Windows runs on WSL. With WASI, you could deploy sandboxes processes to Windows without WSL. You said that WASI is a “game changer.” I’m simply saying that I don’t see it that way. It hasn’t changed the game at all. Neat tech. Probably overdue. But I don’t think it is going to change the world like containerization did. Node/Deno/Bun enable you to write server software with web tech. WASM enables you to write web software with typically native-compiled languages. The idea of running WASM on the server seems like it missed the point. WASM isn’t necessary if the code isn’t going to run in a browser. Just compile native code.
@willweng3052 жыл бұрын
@@pchasco there is a possible development savings if business offers same app service cross platform. If a bank app allows client to access their dashboard via browser, Mac, Linux, windows, but now just write everything in web assembly. But in reality, u still have to deal with screen pixel scaling, system level security and library issues (.net family, Mac OS and ios, linux/android land mines). So at the end, benefit on development maybe limited to common container standardization, changing 1 out of 10 game, is not really what I would market as game changer.
@NathanHedglin Жыл бұрын
WASM is faster than JavaScript. Just not faster when doing DOM stuff because it doesn't have DOM access. Speed isn't the only goal. WORA with a secure universal system interface.
@NathanHedglin Жыл бұрын
@@pchasco compiling to native still required multiple builds and working with different ABIs. Plus there is no sandboxing or security. WASM / WASI are basically smaller docker containers
@simdimdim2 жыл бұрын
Totally expected Rust vid. :D guess not this time. (youtube sent me here)
@ZighyBlue2 жыл бұрын
Incredible how all these DotNet Devs get so excited for something you can do already with Nodejs since long time.... 🤷
@cabc742 жыл бұрын
That wagi thing gives me cgi-bin vibes
@betterwithrum2 жыл бұрын
sigh, Docker is a tool set, Containers existed prior to Solomon, they serve more value then running your code as a Developer. In 2022 I'm surprised you think putting a video out like this won't be met with pushback. This week I deployed OpenSearch for one of my customers, you know how I did it? Containers. Next week I'm deploying Hadoop for a customer; containers. This is gonna get repetitive, Kafka a few months ago; containers. I get you're feeding the algorithm with clickbait titles and thumbnails, but when you get into the meet of your video, upfront you should scope your comments with context. Bare metal isn't dead, VMs aren't dead, Containers aren't dead, and Serverless isn't dead just because WASI solves a problem. It's the same old adage. The right tool for the job. Just because dotCloud and Docker are incapible of running a successsful business doesn't make them the care taker of everything Containers.
@FanieReynders2 жыл бұрын
The video is not about replacing containers.
@TheLostBijou2 жыл бұрын
Every other sentence a new technology or program is introduced. Docker seems much simpler in comparison!
@AchwaqKhalid2 жыл бұрын
Interesting 🤔
@misha1302 жыл бұрын
I just want to stop using WSL on my god damn windows
@FanieReynders2 жыл бұрын
What is stopping you from using Linux?
@misha1302 жыл бұрын
@@FanieReynders company policy
@mistersunday_2 жыл бұрын
This guy sounds South African :)
@johanrg702 жыл бұрын
Sounds like the Java VM from the 90's but more complicated, and most likely slower.
@FanieReynders2 жыл бұрын
It's way simpler and runs near native speed.
@johanrg702 жыл бұрын
@@FanieReynders Docker container plus a headless web container vs the JVM is not simpler, it's more complicated, guaranteed. If it's faster or not needs to be evaluated by doing the same amount of work with both with multiple of examples.
@FanieReynders2 жыл бұрын
WASM+WASI is not dependent on Docker or anything to that sort, and besides has nothing to do with the web. :)
@HexenzirkelZuluhed2 жыл бұрын
Yes, yes... compiling to a common runtime. Sounds a little like Java to me. I don't think this will be a use case for everything containers are used for now. It's a new island, maybe a useful one, but I don't see a fundamental difference to things that were before.
@mpty20222 жыл бұрын
Java is like Skype, and WASM/ WASI is like Zoom
@charleslatrom76582 жыл бұрын
that doesnt make any sense
@mpty20222 жыл бұрын
@@charleslatrom7658 exactly
@NathanHedglin2 жыл бұрын
@@charleslatrom7658 old vs new.
@mpty20222 жыл бұрын
@@charleslatrom7658 java came with similar idea... code once run everywhere... but now when we actually needed it, its almost gone and replaced by new kid like WASM
@pedzsan Жыл бұрын
NO!! As the top comment points out, Java VM was the same concept. My first job after college in 1983 was to write code that was compiled into “p-code” or pseudo code. The problem with p-code or Java or any other similar concept is the code is NOT running at full processor speed. The code in a Docker container runs at the full speed of the processor. There is no reinterpretation, or interpretation or translation or anything like that. It is at full speed. And this isn’t new. Not in any way shape or form. The 1983 version of p-code was not new at the time. Interpreted code has been around … well, since Lisp which is the 2nd oldest language. Indeed…. Why not just execute Lisp??? Go back to school… study your history, computer architecture, language developments, etc. You are lost.
@boot-strapper2 жыл бұрын
Wasm has been around since like 2017 and it’s basically got almost no usage. Hardly the new kid on the block. I highly doubt it will ever surpass docker. Lots of languages don’t/can’t run under wasm. Plus the compile once run anywhere is meaningless. All servers run on Linux. You can save 3 minutes compiling for no use case, whoopeeee.
@FanieReynders2 жыл бұрын
Interesting perspective, although the video is more around WASI rather than vanilla WASM.
@boot-strapper2 жыл бұрын
@@FanieReynders semantics.
@HelloThere-xs8ss2 жыл бұрын
@@boot-strapper are important
2 жыл бұрын
ARM No more alpine.
@azimuth732 жыл бұрын
That already existed 20 years ago and it was called "Java applets".
@FanieReynders2 жыл бұрын
Not exactly. WASM is part of a web standard and WASI brings it out of the browser.
@azimuth732 жыл бұрын
@@FanieReynders Java was too, there exists an html tag name "Applet". And you were able to manage the same code for desktop/server & applet. (and the java moto was "compile one, run everywhere") You said it, currently WASM is a sort of Flash. It is promissing. And reinventing the wheel is a human habit.
@fish1r12 жыл бұрын
what's with the hate on docker?
@FanieReynders2 жыл бұрын
There is no hate towards Docker. Both Containerd and Docker are solid platforms.
@pertsevds Жыл бұрын
Zoomers created Java.
@AdamPoniatowski Жыл бұрын
maar Fanie... microsoft java is nie my taal nie, yster oksied en google taal is beter ;)
@1998goodboy2 жыл бұрын
So.....what u want is the jvm all over again 🙄
@FanieReynders2 жыл бұрын
But platform independent, faster and way more secure.
@1998goodboy2 жыл бұрын
@@FanieReynders as a dev u know where ur deploying. That's never been what docked was solving. Also you've just imediatly lost the argument by saying faster and more secure. Speed and security depends on how you write software more than what it gets compiled to. Any professional dev would know that. Also nothing is faster than a binary. Just pick the right language that has cross platform support (if u need it), like go, and be done with it. You'd need actual cross platform binary support then ur building a frontend app, in which case when pick more appropriate stack.
@FanieReynders2 жыл бұрын
The purpose of the video is not sell you WASM. Many factors impact the security and the speed of any solution, not just the code.
@1998goodboy2 жыл бұрын
@@FanieReynders man al ays asked himself "can we do it" but he never stopped to ask "should we do it" That happened we I th JavaScript. And it's happening again with was now. Lol
@charetjc2 жыл бұрын
@@FanieReynders Not really sure what the purpose of the video was. Hykes makes some ambiguous comment that WASM + WASI could serve as a replacement for docker, then the rest of the video details nothing about how WASM + WASI isolates processes, networking, or filesystems.