February 29, 2012 Leave a comment
Challenge: Web Developers Want to Develop Mobile Apps
Two Unsatisfactory Options – Editors or Existing IDEs
To manage this increased complexity, web developers have options at two extremes: They can use a combination of command line and text editors, like TextMate or Vim. Or, they can choose to develop with an integrated development environment (IDE).
Let’s take a deeper look at one of these IDE’s. Eclipse revolutionized the IDE creation process when it emerged ten years ago. It provides an open source IDE framework with a large set of capabilities that form the basis for almost any type of development. It has a plug-in framework that makes it easy to add customized capabilities for specialized needs. These capabilities have enabled Eclipse to become the most popular IDE.
Eclipse and Usability
Ironically, Eclipse’s strengths directly map to its weaknesses. While it is easy to add new capabilities, it is hard to remove unnecessary ones. While Eclipse has many powerful features, ramp-up can be long and frustrating. Most recent Eclipse contributions have come from IBM and Oracle, focusing on enabling enterprise developers with their deep and narrow problem sets. Meanwhile, Eclipse* has become more difficult to use for beginners, as well as for developers more interested in focusing on their problem domain than in learning a complicated development environment.
IDEs Raise Abstraction Level
Eclipse’s learning curve and complexity lead many developers to resort to simple editors and command line. As a result, they lose the integration and abstraction benefits that a good IDE can provide. While it is not a bad thing to understand all of the underlying components of an IDE and do them yourself once in a while, it is not productive to always have to manage them. There are good reasons we no longer program with assembly language. Abstraction increases productivity and a good IDE is a key component to enhancing the developer abstraction level.
Barriers to IDE Innovation and HTML5
Despite the growing need for better IDE usability, movement has been slow for a few reasons. Existing IDEs are “good enough”. With enough effort, existing IDEs will do anything. The investment barrier to creating a better IDE has been too high. HTML5 is attacking this conundrum on two fronts. First, as HTML5 becomes a relevant platform for real, scalable apps, there is an increasing need for better IDEs that are not weighed down by extra baggage and irrelevant language concepts. Second, HTML5, along with open source, is dramatically lowering the development effort to create innovative IDEs.
AppLaud Cloud – a Case Study
To see how HTML5 and open source have spurred IDE development, let’s take a deeper look at AppLaud Cloud, which I developed and initially released in October and now has 294 registered users. AppLaud Cloud has three main technology components: the web app (or client), the server, and mobile development pieces.
AppLaud Cloud – Web App
Much of the web app UI takes advantage of jQuery and its various add-ons. For example, the jQuery UI-layout plugin makes it easy to manage an IDE’s window panes. jsTree does almost all of the work for an expandable, hierarchical project/file manager. Editing is provided by Ace, a web-based editor, that is comparable in capabilities to native editors. Ace is a descendant of the innovative Mozilla Labs Bespin project, that proved HTML5 was capable and responsive enough for web-based editing.
AppLaud Cloud Mobile
AppLaud Cloud is focused on mobile development: it incorporates PhoneGap and jQuery Mobile scaffolding and samples into its project wizard, generating fully configured mobile apps from a menu of templates. The companion mobile app, AppLaud App, is built with PhoneGap and jQuery Mobile. It run the developer’s apps directly on device without wires or downloads. Finally, AppLaud Cloud integrates the Weinre and Ripple open source projects to provide debugging and simulation.
AppLaud Cloud Server
The server is built with node.js and includes open source node projects for key value store, file uploading, port proxying, static file serving, OpenID, session management and zip file handling. The Android SDK’s command line interface makes it easy for node to interact with it to drive a wide range of Android functionalities.
Pulling all of this together, we have a fully functioning IDE in a remarkably short amount of time. Beyond that, running on the web provides immediate advantages to a typical desktop IDE: universal accessibility, instantaneous collaboration, easy setup, and familiar web usability. This is just the beginning. Some examples of the emerging capabilities include tight GitHub integration from Cloud9 IDE, virtual machine command line in the cloud from kodingen, and Facebook-like developer news feed from Exo Platform.
There’s no reason why innovative IDE’s could not be developed on native platforms. However, the combination of web usability innovations, prevalent skill sets, and open source combine to make the web the best platform to integrate the right capabilities into a highly functional and usable IDE.