There's cloud development, and then there's cloud development.
Since the notion of cloud development (formerly known as Web application development) took off, thousands of developers have been intrigued with the notion of creating apps for the cloud in the cloud. After all, the accessibility, portability, and powerful collaborative capabilities of the cloud are practically perfect for developers -- or so one would think.
Yet in-cloud development hasn't taken off as many would have expected; many cloud apps are still coded, tested, and prepped on local machines and then deployed using whatever tools their public, hybrid, or private cloud has.
Part of this has been the problem of lock-in: for instance, previously if you developed on SalesForce.com's Force.com tool, you would have been expected to deploy on SalesForce, rather than something like EC2 or Google App Engine. That, happily, has loosened somewhat: today Force.com has some portability with these cloud services.
But lock-in is still prevalent, which has held back many developers from fully jumping into in-cloud development. There is also the issue of corporate inertia: yes, cloud-based offerings can offer a reduced hardware footprint and configuration setup, but if your organization already has a well-developed development infrastructure, that's going to be hard to part with, at least until machines and software become obsolete.
Today, two development methodologies are bringing a lot of street cred to cloud-based development: distributed and agile development. These concepts are pushing the envelope on existing development apps, requiring a new set of tools that can accommodate new development, testing, and deployment methods.
Spreading development far and wide
Distributed development is the natural by-product of the Internet and the phenomenon that not all coding geniuses live within commuting distance from your workplace. Distributed development is global development, which brings its own challenges with collaboration and code management. There are great applications already out there for distributed code management: git and Subversion are two such tools and are widely used in distributed environments already.
These online code management tools only tell part of the story, however. Even in a distributed development environment, programmers are still pulling down code to their local machine, modifying it, then uploading back into the repository to push it along to whatever step in the product workflow is next.
Developers can move towards a more collaborative work method by incorporating browser-based integrated development environments (IDEs) into their toolset. These interfaces enable developers to code out in browser space; examples include Ace (which absorbed Mozilla's Bespin/Skywalker projects), Coderun Studio, Codemirror, and Ymacs. Kodingen, another Bespin-based tool, was billed as another contender in this space, but the project seems to have been in hiatus since March of 2011.
Such in-browser IDEs, combined with the source code management tools mentioned above, are all well and good for distributed developers who want to work in the cloud, but they don't offer the level of administration and feedback reporting that's critical to managing agile projects. For agile development, more robust tools are needed.