Alright, looks like a lot of work went into this. What's the unique use case here? Help me out. I don't really understand why people would want to write code like this.
It's far beyond that. Web containers in Stackblitz is an entirely local in-browser IDE, complete with frontend and backend support, NPM, git, a full VS Code based IDE experience and end to end debugging (step right from your frontend right into your backend code). It runs (well, simulates?) HTTP and WebSockets right within the environment.
ok, that's a busy and crowded field with at least a dozen entrenched players: gitpod, codeanywhere, codepen, replit, jsfiddle, coder, jsbin, playcode, aws cloud9, codeenvy, github codespaces, and just plain old jupyter notebooks, just to name the ones I can think of.
These aren't really IDEs, they run some limited html and css on the client or in some cases some code in other languages on a cloud server. They are intended for small shareable snippets that demonstrate something. They generally don't have a full filesystem view, and thus are a specialized flavor of coding environment.
> web containers
This runs your frontend and backend code (yes, http servers) in a local browser backed filesystem that's fully local with no cloud servers which has a full terminal and process system as well as WASM adapted (and environment tweaked) versions of your development tools.
There is no competitor that does quite this, to my knowledge. It might seem like these are all the same, but they are not if you look closer.
Do these tweaked versions have 100% parity with the real environments? My experience is that you would often run into hard limitations, making it difficult to use for serious development.
The code being run here is being run on WASM, so IF the 'real' environment is WASM (aka Cloudflare workers), it would actually be closer to prod than running it normally.
> This runs your frontend and backend code (yes, http servers) in a local browser backed filesystem
This runs your development environment in the browser. Why not just run natively on the operating system, which already gives you filesystem access, terminals, and processes?
Because the browser is slowly becoming the OS anyway, and the reason why is that it’s way easier to distribute an application via the browser than natively. No app stores, no downloads, no updates, no installers, and mostly consistent across devices.
imagine you’re working in a highly regulated field. because of these regulations, you need to have absolute control over the development environment which is exactly as oppressive as it sounds, so you want to do your best to preserve the flexibility of a modern workstation.
because of all the problems with that, especially at scale. obviously that works, since that's how we've done it since the before times, but the shortcomings of that are what has lead to the rise of SaaS.
What problems get fixed by this approach and how does it become less wall time to fully address it?
I'm phrasing it carefully because sometimes solutions are really just the original problem redecorated in some new paradigm of dealing with it and doesn't actually reduce the responsibility, time, skills or cognitive requirements to surmount it. For instance, many automation tools replaced writing shell scripts with YAML or Ruby DSL. You gotta solve the same exact problems in the end, but now you do it in YAML. What used to take 3 hours, now only takes 3 hours.
So, what problems are actually being fixed here?
Alternatively it may just bring you more joy to with with it, which is what a lot of these tools actually do. That's fine as well.
Terraform is better than the world of sh scripts that stopped working if you looked at the wrong and can't really test. True, it brings in new problems, but what used to take 3 hours to write and then 7 hours to do a smoke test of and then another week to apply across one on-prem DC with a team of five, can now actually be tested with Terratest, you can run it against 100 different AWS accounts/regions/whatever, and be done deploying in a couple of hours. Of course, you didn't have 100 AWS accounts before there was AWS, but that kind of isolation is required to operate these days (under certain conditions).
That's as far as how I read "now you do it in YAML", anyway, because you're right, we did just trade 3 hours of sh scripting for 3 hours of fighting with spaces across three yaml files.
The problem that is fixed is that of the deployment of dev environments. Instead of each individual developer at BigCo having to set up their laptop juuuuust right, BigCoITDept spins this up, pre configured, and the developer can be shuttled off to the code mines faster.
That makes sense. Control over the developers workstations with preconfigured IDEs that are centrally managed sounds like something many corporations would backflip for.
I personally hate it because I think subjecting artisnal crafts to taylorism rarely produces excellent results, but I know their sentiments and the vast majority of programs need be merely sufficient.
The demo's use of Stackblitz is actually really confusing here, because it makes it seem like their IDE is what's being demoed when it's not.
WebContainers is a (proprietary) library for anyone to use to build playgrounds that execute client and server code on the frontend alone. It sounds like it was extracted from Stackblitz's implementation for separate use.
WebContainers is not competing in that crowded field (though Stackblitz is) because as far as I know no one else offers a library to build your own. This is partly because it's a pretty niche offering—developers of server-side or full-stack frameworks are the most obvious target users.
playground is a minor usecase, to me the big one is giving you a new option for scaling: shifting compute to client devices. They are powerful these days, and offline-first beyond data syncing is also desirable.
Or maybe it's not too hard to create a web ide and relatively cheap to run.
I'd imagine if you took a deep dive into web-assembly, lots of pieces are already there. It's really probably around 3-4 big pieces to try to piece together.
I have a version of Anthropic Artifacts working in my project here. Claude generates the code (backend or frontend), I wrap it into a little package, boom, instant deployment.
Alright, looks like a lot of work went into this. What's the unique use case here? Help me out. I don't really understand why people would want to write code like this.