Volunteer computing
Volunteer computing is a type of distributed computing in which people donate their computers' unused resources to a research-oriented project. The fundamental idea behind it is that a modern desktop computer is sufficiently powerful to perform billions of operations a second, but for most users only between 10-15% of its capacity is used. Typical uses like basic word processing or web browsing leave the computer mostly idle. The practice of volunteer computing, which dates back to the mid-1990s, can potentially make substantial processing power available to researchers at minimal cost. Typically, a program running on a  volunteer's computer periodically contacts a research application to request jobs and report results. A middleware system usually serves as an intermediary. History. 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 1999, the SETI@home and Folding@home projects were launched. These projects received considerable media coverage, and each one attracted several hundred thousand volunteers. Between 1998 and 2002, several companies were formed with business models involving volunteer computing. Examples include Popular Power, Porivo, Entropia, and United Devices. 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, Einstein@home, and AQUA@home. In 2007, IBM World Community Grid switched from the United Devices platform to BOINC. Middleware. 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 independent from the scientific computation. Examples include: 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 issues involving volunteered computers: their heterogeneity, their churn (the tendency of individual computers to join and leave the network over time), 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: 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. Drawbacks for participants. 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 an option to limit the percentage of the processor used by the client, which is available in some client software. Benefits for researchers. Power. Volunteer computing can provide researchers with computing power that is not achievable any other way. For example, Folding@home has been ranked as one of the world's fastest computing systems. With heightened interest and volunteer participation in the  project as a result of the COVID-19 pandemic, the system achieved a speed of approximately 1.22 exaflops by late March 2020 and reached 2.43 exaflops by April 12, 2020, making it the world's first exaflop computing system. Cost. Volunteer computing is often cheaper than other forms of distributed computing, and typically at zero cost to the end researcher. Importance. Although there are issues such as lack of accountability and trust between participants and researchers while implementing the projects, volunteer computing is crucially important, especially to projects that have limited funding.