As every element to manage the software lifecycle, including the software itself, has moved to the cloud, why is software development still primarily done on individual laptops and workstations? In this post, we will look at early attempts to move software development to the cloud and examine why they weren't successful. From there, we will identify lessons learned from these projects and what it takes to successfully enable development in the cloud.
Developers spend a lot of time with their editors/IDEs, and develop strong allegiances to them. They are more than just another app; they are integral to bringing visions to reality. Despite their importance to developers, or perhaps because of their significance, the fundamental architecture of popular IDEs has stayed the same.
For the last 30 years, writing software has typically been done locally. IDEs are built to be installed and configured on individual machines.
Recently, there have been efforts to bring the IDE into the cloud, where development tools and resources are hosted remotely and accessible through the web browser. These new IDEs promised zero environment configuration, scalable computing, and native collaboration — all features that, on the surface, should be highly desirable.
Despite delivering on their promises, none of the cloud-based IDEs were able to displace the local IDE as the preferred environment for most developers. A JetBrains study found that only 9% of professional developers tried cloud development tools last year, let alone use them in their workflows.
What’s stopping people from adopting cloud IDEs? Here’s what we’ve learned so far from our own efforts building one.
While the benefits of cloud development are clear, creating a great IDE is difficult. The IDE does many things very well, each thing seamlessly integrated into the other to create an experience of sustained flow. It takes a team of skilled engineers many, many years to build something like IntelliJ or VS Code.
Two of the most popular cloud IDE attempts were Cloud9 and Codeanywhere. Both attempted to rewrite the IDE, implementing features like autocomplete, tabbing, and debugging from scratch.
A simple google search about either will show that users considered both to be for “lightweight” development. The developer experience simply didn’t match that of a traditional IDE. They attracted small levels of usage from new developers and those working on small projects.
If we take a look at the SaaS model, we realize most SaaS applications do a few things very well, solving a very specific problem for customers. IDEs on the other hand, are less of an “app” and are more comparable to an operating system for writing code. Almost any kind of experience can be built on top of an IDE. A 2019 study by JetBrains found that 89% of developers customize their IDE in some way. There are over 50 courses on customizing VS Code, 5500 JetBrains plugins, and thousands of blog posts about how to customize vim. How can a new IDE compete?
At Coder, we recognized the mistake of creating a web-based IDE from scratch. Instead, we set out to evolve an existing IDE to this cloud form. Our thinking was that we could piggyback on the existing inertia and focus our development efforts on just the client/server connection. The result was the Coder Cloud IDE, launched in October of 2018. It offered a fully-featured VS Code experience running in the cloud, on our servers, for free.
We saw a great deal of casual usage, but like our predecessors, no one was using the IDE in a full time professional setting. In January of 2019, we came to the conclusion that control was the missing link for success in this space.
Most professional developers regularly access services and resources hosted in their organization's cloud or on-premises. Running their IDE in our cloud simply made that more difficult. What if the development environment could be installed on their own infrastructure?
Giving developers control to run environments on their own cloud made it possible to apply their cloud credits and access internal resources at incredible speeds! Developers could provision their environments to be any size with granular control over the CPU cores, RAM, memory, storage, and even GPUs!
Having learned this, we released code-server, our open source cloud IDE experience.
Code-server allows developers to install VS Code on any machine and access it remotely through the browser. Millions of developers use code-server for cloud development on everything from Raspberry Pis to automated Kubernetes clusters that provision new environments for every developer on a team.
And people loved it! Today, code-server has over 21M docker pulls, 35.8K stars, and 25,000 developers use our extension marketplace daily. It has become the standard for full-time, professional cloud IDE developers.
Now, we’re taking these lessons and applying them as we build Coder, a platform that makes cloud development practical and feasible for software teams. As a company founded by developers, we are building the platform with a control-first approach.
We’re pretty excited about how our cloud development platforms can change the software development landscape, and if you'd like to help make that vision a reality, we are also hiring.