Over the past few weeks, we have examined a number of online development environments, to see if they offer anything different to desktop IDEs, and what impact they might have on future development trends.
Online IDEs Compared
We have looked at five of the major online IDEs as part of this blog series. Here is a comparison of their various features:
|Upload Existing Projects|
|Reference Third Party Libraries|
|Customization or Plug-in Framework|
In addition to the differences between the IDEs as shown above, it is also worth looking at some of the similarities between the IDEs:
- The majority of the IDEs are commercial offerings, with only one open source licensed IDE (Orion).
- All of the commercial tools offer free basic accounts. However, in the case of Compilr, we can already see the feature set for the free account being reduced.
- There is relatively little support for .NET and Java development.
- There is very little support for third party code libraries.
- Integration with other toolsets (hosted or private source control, databases) is limited.
- Only one of the tools (Cloud9) offers an offline capability. Orion can be hosted locally, and so does not strictly require an internet connection.
- Only one tool (Orion) can be used internally in an organisation without reference to a third party site.
After investigating various online IDEs, it has become clear to me that they won’t replace traditional desktop IDEs such as Eclipse and Visual Studio. If they have a future at all, they will instead become supplementary tools in addition to a developer’s primary desktop IDE.
Currently, online IDEs simply don’t have the rich feature set required by developers. Their lack of customization options and the absence of an extensible plug-in framework means that developers are unable to customize the vanilla offering from an online IDE for their specific roles. In addition, the online IDEs have a number of inherent disadvantages:
- Code security – you are entrusting your application’s source code to a third party. Every line of code created in an online IDE will be visible to those responsible for the IDE, which will not be suitable for certain projects.
- Data loss – by hosting your source code in an online repository, you must be prepared for data loss. That means keeping local copies of all your code.
- Online IDEs require that you are online – how do you overcome periods without a suitable internet connection?
Where online IDEs will be used is to develop proof of concept applications in new languages and paradigms, without the need for an upfront investment in specific desktop tooling. They will also be used for accessing and modifying code on the move, when the developer is unable to access their desktop IDE. Several of the online IDEs we considered had iPhone and Android clients to allow developers to access and manage live web applications outside of the office. Online IDEs could also be used to modify code in the corporate environment, when a developer needs to make a code change on a PC that does not have their primary desktop IDE installed i.e. a corporate server.
In addition, an online IDE could be used in specific team working scenarios, i.e. where a contract developer is brought on to a team for a short period. Instead of having the developer waste time configuring a desktop environment, an online IDE could be used to quickly allow the contractor to write productive code. Online IDEs could also allow developers to collaboratively write code in different locations, i.e. pair programming at a distance.
Long Term Trends
In the long term (3+ years), I expect to see the concept of a standalone online IDE to disappear. Instead, the traditional desktop IDEs will simply incorporate some of their features. The Eclipse Foundation is already exploring this with the Orion project, which is seen as an addition to the desktop IDE, not a replacement to it. I would expect desktop IDEs to offer the following in future:
- A cloud synchronized configuration option. Once a developer has setup their IDE, they will simply synchronize their custom configuration settings, including their various extensions and plug-ins, to a cloud host. Whenever they move to another PC that has the desktop IDE installed on it, they will simply login to the cloud hosted configuration, and the settings on the new machine will be automatically synchronized. This is already possible on Visual Studio using an open source extension.
- Desktop IDEs will include the option to host online versions of the IDEs. Instead of the security threat of using a third party online IDE, the desktop IDEs will allow developers to use locally hosted online IDEs. For an analogy, think of Microsoft Exchange – as well as powering the desktop Outlook client, there is also the option to use the Outlook Web App to access your emails. Similarly, the commercial desktop IDEs will have to provide online (and mobile) clients for their products. These online and mobile versions will not offer the full capability of the desktop client, but they offer enough features to allow a developer to remain productive whilst on the move.
- Greater team working features to be built-in to the desktop IDEs. Instead of using a separate application or an online IDE to work together with a developer in a different location, the desktop IDE will mature to allow developers to work collaboratively on the same code file and to show the changes made by the other developer in real time.
- Additionally, desktop IDEs will allow you to swap elements of their toolset for online hosted versions, i.e. having built-in integration for online code hosting providers like BitBucket and GitHub.
In summary, online IDEs won’t replace the existing desktop IDEs. But they will force the desktop IDEs to mature and provide the additional features I’ve listed above.