The creation and maintenance of mobile applications is a complex process, involving a set of technologies ranging from an application programming language and integrated development environment (IDE), through the deployment and update models of the various app stores, to a cloud back end that stores user and telemetry data (with its own programming language and a variety of hosting issues).
We present the design of a Cloud-based Integrated Development and Runtime Environment (CIDRE) to make the creation of mobile+cloud applications easier for non-expert programmers. A CIDRE combines an online programmer community, a browser-based IDE, and an app store. The deep integration of the three elements decreases friction in the software engineering of apps through automated source control and dependency management, an open architecture for distributed plugins, and a crowd-sourced collection of crash reports and coverage/profile data. A CIDRE brings together three audiences: language/IDE designers (the authors of this paper), application programmers, and application users, who can easily modify the apps they are using (all distributed in source), and become programmers themselves.
We have implemented a CIDRE in the form of TouchDevelop, a streamlined, cross-platform, browser-based programming environment. We describe the design of TouchDevelop and the use of automation at various points to make it easy for the three parties to communicate and give feedback to one another. As we will show through our analysis of three years of deployment of TouchDevelop to hundreds of thousands of users, much of the design of our CIDRE can inform other approaches to cloud-based software engineering.