New ways of combining networked humans and computerswhether they are called collective intelligence, social computing, or various other termsare already extremely important and likely to become truly transformative in domains from education and industry to government and the arts. These systems are now routinely able to solve problems that would have been unthinkably difficult only a few short years ago, combining the communication and number-crunching capabilities of computer systems with the creativity and high-level cognitive capabilities of people. And all this is supercharged by the emergent generativity and robust evaluation that can come from the many eyes of large crowds of people. As the scale, scope, and connectivity of these human-computer networks increase, we believe it will become increasingly useful to view all the people and computers on our planet as constituting a kind of "global brain."
We still only poorly understand, however, how to "program" this global brain. We have some stunning success stories (such as Wikipedia, Google), but most applications still fail, or require a long series of trial-and-error refinements, for reasons we only poorly understand. Because people are involved, programming the global brain is deeply different from programming traditional computers. In this Viewpoint, we will consider this challenge, exploring the nature of these differences as well as issuing a call to arms describing open research challenges that need to be met in order to more fully exploit the enormous potential of the global brain.
There are already literally hundreds of compelling examples of the global brain at work, collectively representing the contributions of many millions of people and computers.3,10 These range from systems where individuals perform simple micro-tasks (http://mturk.com) to where they compete to solve complex engineering problems (http://innocentive.com). Some systems harness the "wisdom of crowds" in contexts that range from "citizen science"4 (http://fold.it, http://galaxyzoo.org) to predicting box office performance (http://hsx.com). Open idea ecologies (where crowds of people share, recombine, and refine each other's creative outputs) have produced remarkable results for everything from videos (http://youtube.com) and encyclopedias (http://wikipedia.org) to software (Linux). Systems have been developed that look for individual task-focused "geniuses" (http://marketocracy.com) or, conversely, datamine the activity traces of millions of Internet users (Google's search engine). While these systems cover an enormous range of approaches, it has become clear from these experiences that programming the global brain is different from programming traditional computers in some fundamental ways. Some of the most important differences include:
Because people are involved, programming the global brain is deeply different from programming traditional computers.
These attributes lead, in turn, to the possibility of new, and potentially troubling, forms of emergence. Crowds of people, when engaged in solving interdependent problems, can evince emergent behaviors that range from groupthink (where decision-makers converge prematurely on a small subset of the solution space) to balkanization (where decision-makers divide into intransigent competing cliques) to chaotic dynamics (for example, stock market bubbles and crashes). While emergence is, of course, not unique to the global brain, it is probably made much more challenging by the unprecedented combination of microsecond computer and communications speeds, globe-scale interdependencies, and human diversity.
How, then, can we effectively program a global brain, characterized as it is by unique challenges (and opportunities)? We believe a fundamental requirement is developing powerful new programming metaphors that more accurately reflect the ways people and computers can work together in the global brain. For instance, today's innovative collective intelligence systems embody a set of common design patterns,8 including collections (where people create independent items, such as YouTube videos), collaborations (where people create interdependent items, such as Linux modules), and various kinds of group and individual decisions (such as voting, averaging, social networks, and markets). These design patterns, in turn, can be embodied in various programming metaphors, such as:
Making such global brain programming metaphors a reality will, in turn, require progress along several fronts:
Creating "social operating systems." An operating system, in the context of a single computer, manages the allocation of hardware and software resources such as memory, CPU time, disk space, and input/output devices. A social operating system, in addition to doing all these things, will also have to manage the mustering and allocation of human resources to tasks. This will require fast, robust infrastructures for contracts, payments, or other motivational elements, as well as scalable task-to-resource matchmaking such as markets. These will be challenging problems because people (unlike hardware resources) are diverse in all the ways we have described. But providing easy-to-use solutions for the problems of finding and motivating human participantsrather than requiring each system developer to solve this problem individuallywill greatly facilitate programming the global brain.
Making global brain metaphors a reality will require progress along several fronts.
Defining new programming languages. Conventional programming languages are, out of necessity, fully prescriptive, describing the algorithms to be executed in exhaustive detail. Such languages are often not a good match, however, for specifying tasks with human participants. The programming languages for the global brain will, therefore, need to support a "specificity frontier" of varying degrees of detail in task definition.2 One end of this frontier involves defining programs that allocate highly specific micro-tasks to people and link them into larger workflows. In the middle ground, we may use constraint-based programs, which specify (for example, in a game setting) the goals as well as the limits on how they can be achieved, but not how they should be achieved. At the far end of the specificity frontier, programming may be limited to simply stating incomplete goal specifications. Additionally, we need to expand the range of abstractions such programming languages offer. While traditional programming languages incorporate constructs such as loops and recursion, a global brain programming language may also need to incorporate abstractions such as group decision processes, contests, and collaborative steps.1,9
Promulgating new software engineering skills. Programmers will need to develop new mind-sets about, for example, such basic concepts as what a "program" is and what "testing" and "debugging" mean. They will need to become not just software architects and algorithm implementers, but also organizational or even societal architects able to think systematically about things like motivations, coalitions, emergence, and so on. Perhaps most fundamentally, they will need to transition from a purely "command-and-control" perspective for organizing people to one oriented around cultivating and coordinating7 societies made up of many diverse independent players.
We have attempted to identify some of the key challenges, opportunities, and strategies involved in programming the emerging global brain. Learning to do this well is, perhaps, even more urgent than many people realize. Our world is faced with both existential threats of unprecedented seriousness (such as the environment) and huge opportunities (such as for scientific and social progress). We believe that our ability to face the threats and opportunities of the coming century will be profoundly affected by how well, and soon, we can master the art of programming our planet's emerging global brain.
2. Bernstein, A. How can cooperative work tools support dynamic group processes? Bridging the specificity frontier. In Proceedings of the International Conference on Computer Supported Cooperative Work (CSCW 2000) 2000, ACM.
6. Little, G. et al. TurKit: Human computation algorithms on mechanical turk. In Proceedings of the 23nd Annual ACM Symposium on User Interface Software and Technology (UIST'10). ACM, New York, 2010, 5766.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2012 ACM, Inc.
No entries found