What if your dev experience was entirely in the cloud?
These days, launching applications means navigating an endless sea of complexity. We felt this pain at Google, so we started Project IDX, an experimental new initiative aimed at bringing your entire full-stack, multiplatform app development workflow to the cloud.
Project IDX gets you into your dev workflow in no time, backed by the security and scalability of Google Cloud.
Project IDX lets you preview your full-stack, multiplatform apps as your users would see them, with upcoming support for built-in multi-browser web previews, Android emulators, and iOS simulators.
As a Vim fanatic, I can’t say I’ll ever feel comfortable working in a browser, but some parts of IDX seem interesting. I wonder what the implications are for proprietary code.
I do think it solves an interesting problem where you’re working on your desktop and decide to move to your laptop and continue working on the same codebase, but don’t want to commit early so you can pull down the changes to your laptop.
It reminds me vaguely of Shells.
I use dev containers on Mac, it’s not just about launching services that you need to test your code, it’s about specifying the entire build toolchain to get a deterministic dev environment in an isolated way.
You don’t need to manage the docker containers at all, vscode handles their lifecycle.
You can specify different extensions/configurations per project, so if you bounce between several languages, you’re only using the extensions/configs for a given project.
It also allows for a mostly seamless debugger experience with the browser when you launch a process.
The nice thing is that it sits off to the side, you can use your docker-compose as you normally would, but if you want to provide a full working dev environment for contributors, basically all they need is docker and vscode installed and they can get started.
The devcontainer spec is based on open standards, so it probably will end up in other editors, because it solves a huge problem for teams. The only thing that I think will come close is Nix, but I think it’s limited in scope in some important ways for this use case.