Crowdsourcing has had extraordinary success in solving a diverse set of problems, ranging from digitization of libraries and translation of the Internet, to scientific challenges such as classifying elements in the galaxy or determining the 3D shape of an enzyme. By leveraging the power of the masses, it is feasible to complete tasks in mere days and sometimes even hours, and to take on tasks that were previously impossible because of their sheer scale.
This proposal addresses the question of whether the same kinds of successes that crowdsourcing is having in revolutionizing other domains can be brought to software development. As compared to crowdsourcing in other domains, however, software is particularly challenging to crowdsource: it is inherently non-uniform, steeped with dependencies, difficult to describe in terms of the functionality desired, and can be implemented in any number of ways. The fundamental question that we address in this research, then, is how the nature of software impacts what may and may not be possible in terms of crowdsourcing.
Specific outcomes from this research will include: (1) theoretical understandings of crowd programming in terms of whether it can be achieved, in which form(s), under what conditions, and with which benefits and drawbacks, (2) a publicly available crowdsourcing platform, CrowdCode, that offers a tool set specifically designed to address the intricacies of crowd programming, and (3) lessons learned from our project that could well influence crowdsourcing research in other domains, as the broader crowdsourcing community is actively seeking to understand how to support more complex, interdependent tasks.