Traditionally, software development was (and still is, in large part) done on individual machines using integrated developer environment (IDE) tools like VSCode, JetBrains, Eclipse, etc. While this model of “offline” development worked really well in earlier days, it was soon noticed that this approach was not without its own share of setbacks.
For one, it was cumbersome to collaborate, since the written code had to be uploaded to the web for further review. Portability of the code thus written wasn’t always a guarantee either, given the variety of operating systems and other constraints required for it to function optimally.
As developer and technology journalist Owen Williams wrote last year on his blog, Charged, “It’s trivial … to sync your documents and photos between devices so you can pull them up wherever, but developer tools have remained stuck in the past — each laptop or PC is configured individually to get your environment set up just right.”
With increasingly distributed teams during the pandemic and more agile ways of working, it became essential to introduce tooling that would allow developers to stay productive from anywhere. This is where cloud-based IDEs like Gitpod, GitHub Codespaces, Replit, and so on come in.
The Benefits of Cloud-Based IDEs
With a plethora of features including GitHub integration, support for writing and compilation of multiple languages, these new IDE tools offer a holistic environment toward increasing developer productivity.
Among their other advantages:
Cloud-based IDEs offer hassle-free configuration.
Because the development environment runs fully on a browser, there’s no more combing through an installation page and figuring out which package needs to be installed.
Your choice of hardware doesn’t matter.
Cloud-based IDEs eliminate (well, almost!) the roadblocks for getting started with web development. Anything that supports a modern web browser is probably fair game and you don’t even need to reconfigure everything from scratch across different machines.
It’s easier to work from anywhere — and collaborate.
With highly customizable workspaces that can be optimized at a team/individual level, these tools not only facilitate better collaboration but completely do away with the all-too-common “works on my machine” situation. Given the major plus points, it is clear why cloud-based IDEs have gained momentum.
But there are some limitations to this approach.
The Downside of Cloud-Based IDEs
Many of the downsides of cloud-based IDEs are associated with scaling concerns, since these tools are still in the early stages of their maturity. Here are some of the key issues early adopters may grapple with:
Performance can be uneven.
Since resources on the cloud are shared across consumers with fluctuating requirements, there definitely is a chance for performance inconsistency to crop up, especially when there is very little insight into whether network latency, capacity or a glitch in the overall offering is causing the problem.
The source of glitches can be tough to identify — and solve.
It’s hard to fix an issue when you don’t know the root cause and overall, that might result in a frustrating experience for early adopters of such products.
Big projects may be better suited to offline IDEs.
As of today, some teething issues have been observed with users complaining about high load averages. For larger development projects the amount of data transfer and processing required will be humongous. While it might not choke the resources of cloud-based IDEs, an offline alternative would definitely be a more preferable option in this case due to its practicality.
Vendor lock-in can limit the availability of tools.
Another aspect to consider is the toolkit availability when it comes to cloud-based IDEs. A vast diversity of the tools can be paired up with an IDE locally. But with cloud-based IDEs, developers are confined to the integrated choices made available by the provider and this might be limiting for those requiring a wider toolkit.
Cloud-based IDEs need WiFi.
Last but not least, cloud-based IDEs have a long way to go before they match the truly robust desktop IDEs that allow for lower dependency on external factors such as WiFi. Even with various workarounds being implemented, the level of reliability is nowhere close to the offline experience offered by desktop IDEs.
While desktop-based IDEs are still very much the norm and will continue being popular for the near future, cloud-based IDEs are fast gaining momentum. The tools are also rapidly evolving, and are likely to be increasingly used in tandem with desktop-based IDEs.
To draw an analogy of where all this could be headed, consider the case of Microsoft Office.
When laptops/computers were first introduced, we only had MS Office as the default suite for any sort of collaboration. Most of it used to be offline. But with browser-based collaboration tools like Zoho Office and Google Workspace having brought a large chunk of that work online, we now see use cases where they are assuming more importance than MS Office.
IDEs could go the same way. Desktop IDEs will still be used (like Microsoft Office is being used right now) but the cloud-based IDEs are going to see some very interesting use cases crop up, and will probably become more important for those specific use cases.
At this writing, JetBrains has released an early preview of its next-generation IDE, Fleet. With an increased focus on distributed and collaborative development as well as lowering the entry barrier, the solution by JetBrains promises that Fleet doesn’t replace the company’s existing tools but aims to add a further choice.
Pauline Narvas, community manager at Gitpod, told The New Stack that she was very excited about how the future of remote, cloud, dev environments had the potential to improve developers’ daily lives.
“For instance, with a standardized developer environment, we can onboard new engineers with ease, you can review your colleague’s code, raise a [pull request] or even contribute to open source,” she said, adding, “No more pain on ‘it works on my machine’ or broken preview environments because of dependencies not working.
“Developers don’t even need a high-spec machine to get started as well,” Narvas said. “Have a browser and internet connection? You can code from anywhere! It really is the future of software engineering, I can’t wait to see what the landscape looks like in five years.”
Featured image by Ivan Bandura on Unsplash.