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.
What Makes the Global Brain Different?
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:
- Motivational diversity: People, unlike current computational systems, are self-interested and therefore require appropriate incentivesanything from money, fame, and fun to altruism and communityto perform tasks. These incentives have to be carefully designed, moreover, to avoid people gaming the system or causing outright damage. In some cases, one may even use their motivation to do one task to accomplish another, as in reCAPTCHA, where people OCR documents as a side effect of passing a human versus bot test.12
- Cognitive diversity: In most computer systems we deal with a limited range of diversityin terms of memory, speed, and device access. People, by contrast, vary across many dimensions in the kinds of tasks they can do well, and their individual strengths are only incompletely understood at best. This implies qualitative differences in how (and how well) we can expect to match tasks and resources in a global brain context.
- Error diversity: With traditional computers, we worry much more about outright failure than other kinds of errors. And the other errors are usually highly deterministic and limited in diversity because a relatively small range of software is typically replicated across millions of computers. People, by contrast, are prone to a bewildering and inconsistent variety of idiosyncratic deviations from rational and accurate performance. The global brain, therefore, calls for a radically more capable quality assurance oriented toward the particular kinds of errors that occur with human participants. Fortunately, the global brain also provides access, at least currently, to a huge human "cognitive surplus,"11 so that, for instance, quality mechanisms based on previously unthinkable levels of redundancy have become practical.10
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.
The Need for New Programming Metaphors
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:
- An idea ecology: The global brain can host a constant ferment of idea generation, mutation, recombination, and selection, analogous to biological evolution. In this context, programming consists of soliciting collections of items and specifying a fitness function for choosing among them. Interesting examples of this include the MATLAB open programming contests (for software) and YouTube (for videos).
- A web of dependencies: Many important problems (such as product, process, and policy definition) can be viewed as collaborations, where multiple diverse agents try to solve interdependent pieces of a larger problem. The global brain can detect when conflicts appear between sub-solutions, as well as guide agents toward a globally consistent result. In this context, programming includes defining the task decomposition and specifying ways of managing the interdependencies among sub-problems. Early examples of this include virtual mockups such as the digital pre-assembly system Boeing used in the design of the 777 aircraft.
- An intellectual supply chain: For some problems, we can view the global brain as a supply chain, where a sequence of tasks and information flows among people and machines can be specified in advance. In this context, programming can be defined in terms already familiar to computer scientists as processes and dataflows. Interesting examples of this idea include the Turkit6 and Crowdforge5 systems, which have been applied to such tasks as writing and editing articles.
- A collaborative deliberation: The global brain can also be used to enact decision processes where people and software systems select issues to consider, enumerate and critique solution alternatives, and then choose some subset of these solutions. In this context, programming can be viewed as defining the rules for identifying issues and enumerating, critiquing, and selecting solutions.
- A radically fluid virtual organization: Sometimes it is useful to view the global brain as a collection of evanescent virtual organizations, which rapidly coalesce, perform, and disband in light-speed open markets. In this context, programming includes identifying the task requirements and selecting among the organizations that are offering to perform the task. Interesting examples of this idea include odesk.com and elance.com.
- A multi-user game: Many tasks can be presented as a multi-user game, where useful outcomes are achieved as a result, sometimes unintentional, of playing the game. In this context, programming consists of specifying the rules and incentives for game play. Interesting examples of this include fold.it and the Google Image Labeller.
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.
A Call to Arms
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.