Developers know that Integrated Development Environments (IDEs) go a long way in improving productivity and shortening time to market. Some vendors in the marketplaces we cover ship with their own proprietary IDEs, while many others use a plugin to (or otherwise extend) the popular Eclipse or Visual Studio IDEs. In the event, you typically install an IDE on a developer workstation along with many other associated tools.
A web-based IDE features a browser-based code development environment in lieu of a thick client on your developer machine. Many CMS tools have attempted before to offer such web-based IDEs and some of them are quite good. Others are just text fields to dump managed code that you wrote offline. Plone is a good example of the latter, and it bothers developers for obvious reasons, though some just use automated WebDAV to synch code. Some, like CrownPeak evolved into almost full-blown browser IDEs, but tellingly, most vendors stepped back from them in favor of plug-ins for traditional IDEs like Visual Studio.
One of the big reasons those vendors walked away from web-based environments was that development teams also had separate SCM tools and repositories that they wanted to use, which offered the extra value of reporting, auditing, cross-project management and code-sharing, metadata, and perhaps links to ancillary testing and security tools
However, a new breed of online IDEs is yet again becoming popular. In fact, there are two categories of such IDEs:
- Vendor Specific IDE: Such an IDE is often exposed as a widget or a portlet and can be added to a page in that particular product's management or admin interface. It is something more than a text box, and allows you to dispense with your own local developer instances of a database and application server, because you are accessing your product's instance of those in a test environment. Both Day CQ5 and GateIn Project (and consequently JBoss and eXo Platform) offer such a web-based IDE.
- General Purpose IDE: A more general-purpose web application that simulates an IDE such as Eclipse or Visual Studio, or is a web-based version of one of those. It is not tied to a single vendor and binds the web interface of the IDE to a server instance. There have been some initiatives from Mozilla and Eclipse, both of whom provide an experimental browser-based IDE.
(There's also an emerging third category in which a complete development environment can be based off a private or public cloud, but that's a separate blog post.)
I see several advantages to using a web-based IDE:
- You don't need to install anything on your local developer workstation. This in itself is a huge advantage in terms of reduced hardware costs and management overhead of ensuring everyone has the latest version and patches. Consequently, you can make code changes from anywhere, using any machine.
- You can collaborate with another developer on the same code block. Two or more developers making simultaneous changes to the same code file could be rare but it certainly provides a good mechanism while debugging or code reviews.
- It can facilitate quick and dirty updates, without having to fire up a slew of local services, compilers, etc.
In spite of these advantages, don't rush to retire your development environments just yet. There are still obvious drawbacks:
- Web based IDEs don't yet compare favorably to their desktop-based counterparts when it comes to features like debugging and integration with other tools that you might require for source control and builds
- Sometimes, you actually need processes to ensure quality of code and making changes directly on a dev server might not make sense
- The environment may not have sufficient tools to deploy to a clustered, load balanced environment with multiple instances of an application
I'm sure you could list many more advantages as well as drawbacks, but the fact remains that web-based IDEs are maturing and will become increasingly useful. But for now, when your vendor pushes their slick new code editor, think of it only as an add-on that is useful for creating Gadget/Widget-based applications, and not something that will change core enterprise development practices....yet.