  "Volunteer computing" is the use of consumer digital devices for
high-throughput scientific computing. It can provide large computing capacity
at low cost, but presents challenges due to device heterogeneity,
unreliability, and churn. BOINC, a widely-used open-source middleware system
for volunteer computing, addresses these challenges. We describe its features,
architecture, and implementation.
