Most developers are already using collaborative tools and shared repositories like GitHub, but these often require a significant amount of effort to set up and manage—especially for more complex environments. This makes working at home a bit easier as we contend with the effects of COVID-19. Many also have more time and are looking for training and learning opportunities.
For an introduction on a programming language like Ada/SPARK, you can check out the interactive learn.adacore.com site. Unfortunately, setting up your own development environment is much more challenging. This is true for any programming language or environment that includes things like AI or IoT frameworks.
Luckily, a plethora of online services provide web-based integrated development environments (IDEs) that can be used almost immediately (see table). The list is by no means exhaustive, even though it’s long. And many similar offerings are tailored to more specific environments, programming systems, etc. Likewise, these platforms aren’t necessarily interchangeable, as they often include support for other services and environments. Rarely are they simply online versions of a single-user IDE. Collaboration is a key component that can be exploited with these platforms.
A Collection of Various Online IDEs
IDE | Open Source | Commercial | Languages |
Arduino | Yes | Pro version | C, C++ |
Browxy | Yes | Java, C, C#, C++, PHP, Python | |
Cloud9 | V2 – GPL, V3 – non-commercial license |
Amazon Web Services | Over 40 |
Codeanywhere | Eclipse Che | Yes | Over 70 |
Codenvy | Eclipse Che | Red Hat/IBM |
Over 80 |
Codesandbox | Frontend-only |
Yes | Web development |
CodeTasty | Yes | Over 40 | |
Eclipse Che | Yes | See Codenvy and Codeanywhere | Over 80 |
Eclipse Orion | Yes | Over 80 | |
Gitpod | Yes | Over 20 | |
Koding | Yes | Yes | Over 20 |
MBED | Some | Arm | C, C++ |
Repl.it | Yes | Over 50 | |
ShiftEdit | Yes | Over 20 | |
SourceLair | Yes | Javascript, Python |
|
Visual Studio Codespaces | No | Microsoft | Over 40 |
For example, Cloud9 is used on the BeagleBone AI board. This allowed the designers to eliminate the graphical interface that was normally part of the BeagleBone platform while providing a more powerful cloud-based development that worked right out of the box.
Getting Hands-On
Exploring the world of online IDEs has been interesting. I had a chance to dust off APL, which I hadn’t used in about 30 years. I used Scheme and list much more recently, but it’s also less common than Python or C++. I got to try out TypeScript, the relatively new type-based JavaScript, as well.
Probably more interesting was the ability to utilize collaboration tools and services like source-code version control systems as well as bug-tracking systems that are either built-in or integrated. These are often the more difficult to set up and maintain for developers that would rather just use these tools instead of having to manage them.
There are tradeoffs. Getting started quickly is a definite plus, and having access to integrated services can be a boon that should not be underestimated. Many services are built on or linked to cloud solutions that can include file management, database support, and even device-management systems. In fact, most of the major suppliers of cloud services have their own online IDE as part of their solution. They typically support a wide range of third-party online IDE solutions, too.
Other advantages include automatic update of the tools, although this can be a disadvantage as is noted later. Backup support and cloud storage are typically part of the package. Project management tends to be more robust with the ability to link websites, source-code management, etc., in a more cohesive work environment. These solutions typically highlight open-source group collaboration as well.
Be Wary of These Issues
Some of the key disadvantages include internet access as a requirement in addition to cost. Costs can rise significantly as the number of services used and number of users grows, but all of these issues are true for any cloud-based solution—and online IDEs represent just one of these solutions.
Tool version management can be problematic. This can be critical for embedded development where maintaining a consistent toolset is key to delivering verified products. Security can become an issue as well as responsibility for the code and other IP that’s involved in development.
Also consider the location of your backups. If everything is in the cloud, is it all in a place that you feel is safe? Personally, I would not want the cloud vendor being the sole manager of my source code. If I can’t easily maintain my own copy on my own hardware, then I would skip using that platform for serious development. On the other hand, utilizing it as a learning tool or part of an open-source team could be much different.
Most cloud-development solutions are designed to operate under the auspices of the cloud vendor. However, some platforms, especially open-source varieties, can be set up and hosted by any company. Likewise, commercial cloud-development providers typically offer different tiers that have similar partitioning of costs, with a higher-end version that provides more isolation, security, etc.
Cloud-based development can simplify development for a group or company but always consider the tradeoffs. Carefully examine the tools and features as well as the long-term development plans for cloud-based solutions. Migration off a platform can be very painful if you take advantage of all the integrated tools and services, because replicating these on another service will be next-to-impossible due to the nuances involved.