Volunteer computing is a type of distributed computing in which computer owners donate their computing resources (such as processing power and storage) to one or more "projects".
The first volunteer computing project was the Great Internet Mersenne Prime Search, which was started in January 1996. It was followed in 1997 by distributed.net. In 1997 and 1998, several academic research projects developed Java-based systems for volunteer computing; examples include Bayanihan, Popcorn, Superweb, and Charlotte.
The term "volunteer computing" was coined by Luis F. G. Sarmenta, the developer of Bayanihan. It is also appealing for global efforts on social responsibility, or Corporate Social Responsibility as reported in a Harvard Business Review  or used in the Responsible IT forum.
In 2002, the Berkeley Open Infrastructure for Network Computing (BOINC) project was founded at University of California, Berkeley Space Sciences Laboratory, funded by the National Science Foundation. BOINC provides a complete middleware system for volunteer computing, including a client, client GUI, application runtime system, server software, and software implementing a project web site. The first project based on BOINC was Predictor@home, based at the Scripps Research Institute, which began operation in 2004. Soon thereafter, SETI@home and ClimatePrediction.net began using BOINC. A number of new BOINC-based projects were created over the next few years, including Rosetta@home and Einstein@home. In 2007, IBM World Community Grid switched from the United Devices platform to BOINC.
Middleware for volunteer computing
The client software of the early volunteer computing projects consisted of a single program that combined the scientific computation and the distributed computing infrastructure. This monolithic architecture was inflexible; for example, it was difficult to deploy new application versions.
More recently, volunteer computing has moved to middleware systems that provide a distributed computing infrastructure independently of the scientific computation. Examples include:
- The Berkeley Open Infrastructure for Network Computing (BOINC) is the most widely used middleware system. It offers client software for Windows, Mac OS X, Linux, and other Unix variants.
- XtremWeb is used primarily as a research tool. It is developed by a group based at the University of Paris-South.
- Xgrid is developed by Apple. Its client and server components run only on Mac OS X.
- Grid MP is a commercial middleware platform developed by United Devices and was used in volunteer computing projects including grid.org, World Community Grid, Cell Computing, and Hikari Grid.
Most of these systems have the same basic structure: a client program runs on the volunteer's computer. It periodically contacts project-operated servers over the Internet, requesting jobs and reporting the results of completed jobs. This "pull" model is necessary because many volunteer computers are behind firewalls that do not allow incoming connections. The system keeps track of each user's "credit", a numerical measure of how much work that user's computers have done for the project.
Volunteer computing systems must deal with several problematic aspects of the volunteered computers: their heterogeneity, their churn (that is, the arrival and departure of hosts), their sporadic availability, and the need to not interfere with their performance during regular use.
In addition, volunteer computing systems must deal with problems related to correctness:
- Volunteers are unaccountable and essentially anonymous.
- Some volunteer computers (especially those that are overclocked) occasionally malfunction and return incorrect results.
- Some volunteers intentionally return incorrect results or claim excessive credit for results.
One common approach to these problems is "replicated computing", in which each job is performed on at least two computers. The results (and the corresponding credit) are accepted only if they agree sufficiently.
Costs for volunteer computing participants
- Increased power consumption. A CPU that is idle generally has lower power consumption than when it is active. The desire to participate may also cause the volunteer to leave the PC on overnight, or to disable power-saving features like suspend. Additionally, if adequate cooling is not in place, this constant load on the volunteer's CPU can cause it to overheat.
- Decreased performance of the PC. If the volunteer computing application attempts to run while the computer is in use, it may impact performance of the PC. This is due to increased CPU contention, CPU cache contention, disk I/O contention, and network I/O contention. If RAM is a limitation, increased disk cache misses and/or increased paging can result. Volunteer computing applications typically execute at a lower CPU scheduling priority, which helps to alleviate CPU contention.
These effects may or may not be noticeable, and even if they are noticeable, the volunteer might choose to continue participating. However the increased power consumption can be remedied to some extent by setting the option of desired processor usage percent, that is available e.g. in BOINC client.
- Virtual Volunteering
- List of distributed computing projects
- Cloud computing
- Citizen science
- Swarm intelligence
- "GIMPS History".
- Sarmenta, L.F.G. "Bayanihan: Web-Based Volunteer Computing Using Java". Lecture Notes in Computer Science 1368, Springer-Verlag, 1998. pp. 444-461. Proc. of the 2nd International Conference on World-Wide Computing and its Applications (WWCA'98), Tsukuba, Japan, March 3–4, 1998
- Regev, O; Nisan, N (October 25–28, 1998). "The POPCORN market~Wan online market for computational resources". Proceedings of the First international Conference on information and Computation Economies. Charleston, South Carolina, United States: ACM Press, New York, NY. pp. 148–157.
- Alexandrov, A.D.; M. Ibel, K.E. Schauser, K.E. Scheiman (1996). "SuperWeb: Research issues in Java-Based Global Computing". Proceedings of the Workshop on Java for High performance Scientific and Engineering Computing Simulation and Modelling. New York: Syracuse University.
- A.; Karaul, M., Kedem, Z., Wyckoff, P. (Sept 1996). "Charlotte: Metacomputing on the Web". Proceedings of the 9th International Conference on Parallel and Distributed Computing Systems.
- Porter, Michael; Mark Kramer. "The Link Between Competitive Advantage and Corporate Social Responsibility". Harvard Business Review.
- "ResponsI.TK". Responsible IT forum.
- BOINC Migration Announcement
- "Measuring Folding@Home's performance impact".
- Wanted: Your computer's spare time physics.org, September 2009