Gitpod this week has released an open source version of its integrated developer environment (IDE), which it is calling “a new class of cloud-based IDE that fundamentally changes how software developers build applications.” When you hear the phrase IDE, you might think of a code editor like Visual Studio Code or Eclipse or Sublime, but with Gitpod, “IDE” refers to that environment in a more all-encompassing sense, explained Gitpod co-founder and CEO Sven Efftinge.
“When we say development environment, we are not talking primarily about the interface, but more about the holistic environment that you need in order to become productive as a developer. It includes the userland — all the tools you need to have. It includes the git repositories, and also everything you do after you check out a certain branch or git repository, that is, generating code, running compilers, downloading dependencies and all these things,” said Efftinge. “The good part is we allow you to script that in code. Similar to how you have infrastructure as code for the other environments that you use in your developer pipeline, you describe the dev environments as well.”
None of that is to say that Gitpod doesn’t provide a code editor. Having helped to create Eclipse Theia, which serves as the basis for IDEs such as Red Hat’s CodeReady Workspaces, the Eclipse Foundation’s own Eclipse Che, and Google Cloud Shell, Efftinge remarks that the editor itself is not really that important. Currently, Gitpod uses Theia as its code editor, but Efftinge said it is likely they will open up to use others as well. What is more important, he said, is that Gitpod serves as “a missing piece in the DevOps tool pipeline,” by bringing automation to the developer environment, not just what comes after the creation of code.
Gitpod goes beyond a code editor by watching changes in a repository and preparing dev environments on every change, setting up tools, checking out the git branch, compiling the code, downloading all dependencies and initializing everything. And much like how changes to code can be referenced and reverted to in a version control system, each developer environment can be saved as a snapshot, which can help with troubleshooting.
“At the heart, there is a YAML file that you check into your repository, very similar to what you do with CI tools, and that references a Docker file where you can install all the Linux tools you need. And then you also can run scripts, like in a continuous integration configuration file. At the end, we take a snapshot of the whole thing and that snapshot waits for developers. Whenever a developer wants the dev environment, they get a copy of that snapshot,” explained Efftinge. “You can snapshot any state that you have in your dev environment, and then you get a link that gets a clone of this environment, this concrete situation.”
Efftinge further explained that the snapshot is particularly useful for recreating troublesome issues that might otherwise be met with the oft-heard retort of “it works on my machine.” Beyond troubleshooting, this snapshotting of a developer environment means a developer can move from one computer to another and still enjoy the same exact environment without any time spent on configuration and setup. Gitpod also allows specific software versions to coincide with certain environment versions, meaning if you need to work on old code, you can use the environment that is compatible with it. Being able to use version control on the developer environment also helps reduce configuration drift, as you can even control developer environments across a team.
Gitpod is currently available as SaaS, but with this release can also be self-hosted on a Kubernetes cluster, for those who don’t want to expose their source code externally, and works with “almost any code-hosting platform,” including GitLab, GitHub Enterprise, and Bitbucket.