Table of Contents
Remote development environments are rising because of their benefits while scaling a team. Removing the overhead of managing and configuring developer environments smoothly is an interesting problem to solve.
Many products in the market offer a similar solution. Deciding which one to use and which remote development environment is right for you is complicated and can significantly impact your workflow and the productivity of different development teams.
This post aims to help you learn more about the growing trend of remote development environments and how the four remote development environment solutions - Coder, Codespaces, GitPod, and DevPod - compare with each other. By the end, you will know what solution works best for you.
#A bit about the tools…
When it comes to remote dev environment tools, there are often varying requirements that need to be met for different users. This is why many tools are marketed with specific purposes in mind. Understanding how these tools are marketed can help users make informed decisions about which tools to use for their particular needs.
#What exactly is Coder?
Coder promotes itself as a “Self-Hosted Remote Development Platform” which is open source and focuses on “shifting software development from local machines to the cloud”. You provision the underlying infrastructure with Terraform on Kubernetes, Docker or VMs, as required. This can be done locally or remotely in the cloud. Coder does not offer a hosted solution, so everything is self-hosted.
The installation process involves creating a docker instance and initializing a Postgres database to store the configuration. After signing up, you can use a template to install Terraform and set up your developer environment.
The open source project has been growing for 17 months and has reached 5.2K stars to date.
#What exactly is GitHub Codespaces?
Codespaces is a Software as a Service (SaaS) remote development environment that hosts Docker containers on Azure VM. Codespaces positions itself as a “secure, configurable, and dedicated development environment that works how and where you want it to.”
With the support from GitHub and Microsoft, it has been gaining popularity as the only GitHub’s native remote dev environment. However, the product is the only one in the list that is not open source and is tied to GitHub, with limited 3rd party source-code host integration.
For example, to launch an instance, navigate to your GitHub repository (limits different source code hosts) and click “Create codespace” on the specified branch.
To note, if you don’t have an account on GitHub or your code exists on other providers, you’re restricted from creating an instance.
Customization is limited to configuring the development environment through the Microsoft-developed
devcontainer.json standard. Infrastructure options are restricted to a few machine sizes and only four regions (US West, US East, Europe West and Southeast Asia).
#What exactly is GitPod?
In 2019, GitPod was launched as a SaaS product, making it one of the early startups in this space. GitPod operates with containers on Kubernetes cluster on Google Cloud, but they require a
gitpod.yml file instead of the
devcontainer.json to be present which is the standard.
It can be difficult to switch to other tools, such as Codespace, Coder, and DevPod, because they rely on the
devcontainer.json file. This can result in vendor lock-in since you would also need to migrate the instructions in
Also, the important to note that GitPod does not offer GPU options, making it less ideal for AI/ML workloads.
To use GitPod, you need to create an account and authenticate it with your private repositories (GitHub, GitLab, or Bitbucket). This will allow GitPod to pull the code into the code server.
When building or updating data ETLs and reports using sensitive data, it is important to ensure that the data does not leave the engineer’s laptop. A point to remember is that using GitPod to run your operations could raise concerns about the security and tracking of developers who may unintentionally share data with unnecessary parties as the tool is server-side.
The project has gained a lot of popularity reaching 11k+ stars in the 5+ years it has existed. Recently, the self hosted version was deprecated in favor of a paid license based Dedicated hosting version which you can only host on AWS.
#What exactly is DevPod?
DevPod is one of the latest projects in the ecosystem, which is an open source alternative to GitHub codespaces. It is also based on the
devcontainer.json standard, so you can easily move your projects from Codespaces to DevPod without the need for modification.
The main advantage of DevPod is that it supports client-side development with the DevPod CLI (there is also a lightweight GUI version). This allows you to use any git repositories, as DevPod simply checks out your repos using git with the backend of your choice through providers.
DevPod works with the provider concept which defines how your target environment needs to be set up anywhere else. These provider configurations are entirely free and can be easily set up through the DevPod Dashboard or YAML manifests. By using DevPod providers, you can create your dev environments on various backends - including your local computer, a Kubernetes cluster, any accessible remote machine, or a virtual machine in the cloud.
The backend can be local which is beneficial when building or updating data ETLs and reports using sensitive data as there’s no requirement to share data outside the system with a client-side tool. Also, the currently supported list consists of 5 cloud providers:
The community providers are also popular with 7 new providers with standard templates that anyone can create or modify according to their requirements.
To start a new dev container with DevPod, click on Create, fill in the details of the provider, select your IDE, and click Create Workspaces to initiate the process and run your instance:
The project is the fastest growing project in the ecosystem with more than 4k stars within a few months of its launch and is still expanding around the open source community.
#Coder vs Codespaces vs GitPod vs DevPod: the key difference…
Let’s take a closer look at how these products stack up in some of the most important categories.
GitPod and Codespaces are SaaS services that offer 50 free hours and 30 free hours, respectively, on standard 4-core machines, which is quite appealing. However, as a developer commits more hours and scales up, it can become more expensive, being approximately two times the price of Azure Compute Pricing.
Alternatively, solutions like Coder and DevPod provide the flexibility to pay for cloud and take advantage of committed usage discounts when needed or use the local system for simplicity. The tools themselves are free which allows for a more cost-effective and practical approach to managing costs as well as isolation, both in the cloud and locally.
Both GitPod and Codespace have server-side components, so the way to access them is to sign up and spin up. This can be helpful in many scenarios but requires you to have internet access, which removes the use case of air-gapped environments. The other problem is hosting the code in an ephemeral environment on the provider instead of your trusted infrastructure. This can be okay most of the time, but critical applications dealing with sensitive information can break on-site compliance.
The remaining two tools, Coder and DevPod, can be used for VMs/Docker/Cloud which brings more components under your control. For Coder, it’s mostly a web UI that works with Docker Compose to create new environments, even though it’s a client-side tool.
The way to initiate dashboards and all the processes is by using the CLI to initiate an Access URL and create an account even if you’re in the free plan and self hosting it.
The thing to remember is the CLI termination can risk server termination, and the tool requires a lot of configuration from starting the server (as below) to creating workspaces by fetching templates and keeping them updated.
DevPod runs as a simple app or CLI which can be used interchangeably to deploy your code containers wherever you desire with providers without any account creation making it a true client-side tool.
An accessible no-commitment solution without sharing any of your data that just works.
#Ease of Usage
Coder requires everyone to understand a bit of Terraform and templates, since that’s how the infrastructure is deployed. The use of tools like Pulumi to provision infrastructure is not supported which a lot of organizations prefer and can require teams to train with Terraform. Additionally, there’s no internal API for provisioning VMs, which can be challenging to deploy on infrastructure with no Terraform providers.
GitPod and Codespaces are user-friendly platforms that require only a sign-up process for easy access. However, it is important to be mindful of data sharing and compliance when using them, as an internet connection is always required.
On the other hand, DevPod operates on native APIs, making it easy to interact with new providers and requiring no internet connection if you’re in an air-gapped environment. If you’re using a cloud provider then of course you’ll need the connection. One added benefit is that the complete client-side nature simplifies the process of propagating user-level secrets to the system and allows for easy development and testing both locally and on the cloud.
Also remember, if you’re using DevPod or Codespaces, they are only compatible with Multi Devcontainers support for mono repos, which can be necessary for some software teams.
Team collaboration is crucial, and having the right tools to support development is essential and Codespaces and DevPod are at the forefront of the industry with their production
Even though the support within Codespaces is great, there are some limitations with the dev container tool, such as missing support for using different providers, causing it to fall behind. Thankfully, DevPod, GitPod, and Coder offer a plethora of source hosts. This makes them an ideal choice for many enterprises looking for flexibility and functionality.
The thing here to note is that DevPod stands out as an excellent option, as it offers a good mix of customizations and strong
devcontainer.json support by excelling in both the customization fields with the support of different providers and strong support for
devcontainer.json. Also, the best example of customization comes from the open source community surrounding the project which has created and maintained seven providers, demonstrating the project’s promising growth trajectory and place in the community.
If you’re interested in learning more about the customization differences between these options, please refer to the table below for further details.
|VS Code IDE support||Yes||Yes||Yes||Yes|
|Jupyter notebook support||No||Public beta and is subject to change||No||Yes|
|JetBrains Fleets support||No||No||No||Yes|
|JetBrains IDE support through Gateway||Yes||Public beta and is subject to change||Yes||Yes|
|Any SCM provider||No||No||No||Yes|
Community is at the center of any successful and well-adopted project. DevPod happens to be one of the fastest-growing projects, with an average of 18.16 stars per day since it started, beating other projects by a significant margin as in the reference below:
Another statistic to consider is the number of forks and external contributions in the form of cloud provider extensions, documentation, and code. Once again, DevPod is way ahead of the competition with a lot of OSS providers that came out of the community as well.
Coder also has a way to support community-provided providers, but it has a limitation with Terraform. If there is no Terraform provider for the cloud or infrastructure, contributing can be challenging. DevPod abstracts this issue, which has led to the growth of community contributions, including seven community cloud providers.
The success of DevPod is indeed not unexpected, given the track record of the team at Loft Labs and their previous involvement in the open-source community. Their prior projects, such as vCluster and DevSpace, have been highly successful and have contributed significantly to the developer ecosystem.
DevSpace, for instance, enhances the developer experience with features like hot reloading, logging, and centralized deployment configurations. Its donation to the Cloud Native Computing Foundation (CNCF) is a testament to its value and impact within the cloud native community.
Another example is vCluster, a popular tool used to create fully functional virtual Kubernetes clusters. This is a critical component in the Kubernetes ecosystem, as it allows developers to simulate and test complex cluster scenarios without the need for physical hardware. Its popularity highlights its importance in the Kubernetes ecosystem.
With the experience and knowledge gained from these successful projects, the team at Loft Labs is well-equipped to develop and promote DevPod as a valuable addition to the developer toolkit. DevPod likely benefits from the team’s expertise in open source, Kubernetes, and cloud-native technologies, making it a promising project within the ecosystem for adoption for personal or enterprise usage.
The different tools can be confusing, but trying them is the best way to know what works best for you. To try DevPod, you can start your journey from the documentation. Do you have any feedback or questions for us? Join our Slack community, we’d love to hear from you!
If you’d like to dive deeper into the code or contribute, it’s all available on GitHub repository ⭐️