Project IDX is an entirely web-based workspace for full-stack application development, complete with the latest generative AI (powered by Codey and PaLM 2), and full-fidelity app previews, powered by cloud emulators.
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.
This is a play against VSCode and the developer moat MS/GitHub have built right? In which case, go at it I guess.
The Shell -> Mainframe style IDE has been coming for a while. And makes some sense, however much of a local app person you are. I’m kinda surprised Google hadn’t made a move yet. On which, it’s suspicious that this is probably driven or associated with AI.
VS Code also supports the devcontainter format, where you can get a well-defined fully configured dev environments locally or remotely. It also automatically asks whether you want to use them if the project has a devcontainer.json file.
So you can get the benefit of a standardized environment without going all-in on cloud.
I think it was created by the same people as VS Code, and definitely designed around its needs (at least initially), kind of like the Language Server Protocol.
Then there are tools like https://devpod.sh/ that also use devcontainters.
Regarding how it's different from just using compose directly, I think the idea is that you "connect" your IDE to it and it specifies things like extensions (obviously IDE-specific), debuggers and debug configurations, language servers setup, environment to use when you open a terminal into it, etc.
I guess this is one of those things I'm not going to appreciate until I need it, but none of that sounds more appealing to me over Docker Compose. I'm not sure how debuggers, etc,. would even apply to the server or why you would need to use a cloud server rather than running the services locally for a development environment. My guess is this would be a lot more useful for Windows users who don't have as easy access to the right dependencies?
The main pitch is that you don't have to spend time and effort with installing and configuring a project for development when onboarding new people to it, or when you want to contribute to someone else's project etc.
You get a proven, up-to-date "works on my machine" kind of environment that others also use, and you don't need to "pollute" your host system by installing additional tools necessary for each individual project. Compilation (and other build steps), running the project, running the tests, debugging, IDE configuration (e.g. language servers, linter plugins), etc. all happen inside the container.
I personally don't find it all that useful for projects I'm working on long-term myself, but it's nice if you need to check something in someone else's project which you're not that familiar with.
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.
On which, it’s suspicious that this is probably driven or associated with AI.
The landing page mentions this:
Code faster with generative AI
Work quickly and efficiently with AI assistance from Google built-in, including code generation, code completion, translating code between programming languages, explaining code, and more, all powered by Codey, a foundational AI model trained on code and built on PaLM 2.
I left it out of the main post because I um, didn't think it was particularly newsworthy.