Overview of BOINC
- Project autonomy
- Many projects use BOINC. Projects are independent; each one operates its own servers and databases. There is no central directory or approval process.
- Volunteer flexibility
- Volunteers can participate in multiple projects; they control which projects they participate in, and how their resources are divided among these projects. When a project is down or has no work, the resources of its volunteers are divided among other projects.
- Flexible application framework
- Existing applications in common languages (C, C++, Fortran) can run as BOINC applications with little or no modification. An application can consist of several files (e.g. multiple programs and a coordinating script). New versions of applications can be deployed without needing any action by volunteers.
- BOINC protects against several types of attacks. For example, digital signatures based on public-key encryption protect against the distribution of viruses.
- Server performance and scalability
- The BOINC server software is extremely efficient, so that a single mid-range server can dispatch and handle millions of jobs per day. The server architecture is also highly scalable, making it easy to increase server capacity or availability by adding more machines.
- Source code availability
- BOINC is distributed under the Lesser General Public License. However, BOINC applications need not be open source.
- Support for large data
- BOINC supports applications that produce or consume large amounts of data, or that use large amounts of memory. Data distribution and collection can be spread across many servers, and participant hosts transfer large data unobtrusively. Users can specify limits on disk usage and network bandwidth. Work is dispatched only to hosts able to handle it.
- Multiple participant platforms
- The BOINC core client is available for most common platforms (Mac OS X, Windows, Linux and other Unix systems). The client can use multiple CPUs.
- Open, extensible software architecture
- BOINC provides documented interfaces to many of its key components, making it possible for third-party developers to create software and web sites that extend BOINC.
- Volunteer community features
- BOINC provides web-based tools, such as message boards, user profiles, and private messaging, that encourage volunteers to form online communities.
Which applications are suitable for BOINC?
BOINC is designed to support applications that have large computation requirements, storage requirements, or both. The main requirement of the application is that it be divisible into a large number (thousands or millions) of jobs that can be done independently.
If the project is going to use volunteered resources, there are additional requirements:
- Public appeal
- An application must be viewed as interesting and worthwhile by the public in order to gain large numbers of participants. A project must have the resources and commitment to maintain this interest, typically by creating a compelling web site and by generating interesting graphics in the application.
- Low data/compute ratio
- Input and output data are sent through commercial Internet connections, which may be expensive and/or slow. As a rule of thumb, if your application produces or consumes more than a gigabyte of data per day of CPU time, then it may be cheaper to use in-house cluster computing rather than volunteer computing.
What resources are needed to create a BOINC project?
If you have an existing application, figure on about three man-months to create the project: one month of an experienced sys admin, one month of a programmer, and one month of a web developer (these are very rough estimates). Once the project is running, budget a 50% FTE (mostly system admin) to maintain it. In terms of hardware, you'll need a mid-range server computer (e.g. Dell Poweredge) plenty of memory and disk. Budget about $5,000 for this. You'll also need a fast connection to the commercial Internet (T1 or faster).
It may be difficult for some scientists to provide these resources. In this case, it may be possible to create a BOINC project at a higher organizational level, to serve the needs of multiple scientists. For example, such a project might be created at the university campus level. Several U.S. funding agencies (NSF, NIH) have programs that could support this.