Citizen Science with BOINC

published on • last edited on

After I replaced my old smartphone, which hasn’t been receiving Lineage OS security updates for a long time anymore, I was looking for good uses for the device. Given it’s age, looks, and lack of software updates, selling it would have been a challenge. Porting postmarketOS onto it would have been interesting, but realistically I lack time (and skill?) for that. Throwing a working device away was definitely not an option; but just having it lying around also felt wasteful.

Luckily I remembered about the Berkeley Open Infrastructure for Network Computing (BOINC) and the science projects it powers.

What is BOINC?

According to the BOINC project’s website, the

BOINC [platform] lets you help cutting-edge science research using your computer. The BOINC app, running on your computer, downloads scientific computing jobs and runs them invisibly in the background.

Basically, the BOINC platform enables you to donate (unused) computing power of your devices to computationally intensive science projects around the world. This (non-exhaustive) list of projects gives an overview of problems where scientists would appreciate your computing power donations.

From a software perspective, the BOINC platform is a free and open-source middleware application which you install on your computing device (desktop, laptop, Android smartphone or tablet1, RaspberryPi — you name it). However, in and of itself, the BOINC app does not do anything.

To actually do some computing, you need to register for one of the different BOINC projects. Then you can connect the BOINC app on your device to the project and start downloading tasks for a specific application of the project (each project can have multiple applications requiring computational resources).

Once the tasks have been downloaded they will be worked on as per your settings. You can set certain CPU/RAM resource limits, battery thresholds and much more in the BOINC app to tailor under what circumstances your device runs computations. Once the device has worked through all the tasks, it sends the results back to the server and retrieves a new batch of tasks.

Back to my old Lineage OS phone

After installing the BOINC app from the F-Droid store on my old smartphone, I had to choose from projects

  1. whose tasks can be calculated on an Android phone, and
  2. whose applications were licensed under a free and open-source license.

The first condition is a technical one and simply a result of the fact that not all projects and applications support all platforms. But this condition was relatively easy to meet, as the Android BOINC app already provides you with a selection of projects which work on Android.

The second condition is an ethical one and — unfortunately — was much harder to meet. I strive to not run proprietary software on any of my computing devices as it is defective by design. In addition to that, I firmly believe that science should be as transparent and open as possible. Now, many BOINC projects' applications are not well documented and thus, it turned out to be difficult to find their licensing terms2. In case of the Android capable projects, only the Einstein@home project was very open about the fact that it is free software3.

For your reference, I have created an overview of BOINC projects and applications which are free software.

Once I had connected to my Einstein@home account from the BOINC application on my old phone, my old device has been successfully repurposed and is now happily looking for pulsars ;)

BOINC on a GNU/Linux machine

Given that I also had an idle RaspberryPi available, I decided to give it some BOINC work, too. The following steps can be generalized to all GNU/Linux powered machines, you just might have to replace the apt package manager utility calls in this guide with calls to the package manager of your distribution.

Log in and open a terminal on the GNU/Linux machine (or just ssh into it) and run:

# install the BOINC command line tool:
$ sudo apt-get update
$ sudo apt-get install boinc-client
# connect the boinc client to your project account:
$ boinccmd --lookup_account <projectURL> <email> <password>

This should give you an output similar to this

status: Success

poll status: operation in progress
poll status: operation in progress

account key: <your_account_key>

Proceed with:

$ boinccmd --project_attach <projectURL> <your_account_key>
# clear the current bash session history so that your passwords are not exposed
$ history -c
# get an overview of attached projects and active tasks:
$ boinccmd --get_simple_gui_info

That’s already it. More boinccmd command line options (e.g. for suspending the work on BOINC projects or stop the download of new work) can be found here.

If you feel like customizing your BOINC configuration, you have to adapt /var/lib/boinc-client/cc_config.xml and run boinccmd --read_cc_config subsequently. All client configuration options can be found in this BOINC wiki entry.

BOINC and energy consumption

Please take into account that doing computational work will make your device require more energy and (depending on your device) have a noticeable impact on your electricity bill.

For what it is worth, I am convinced though that if you already own a computing device which you struggle to find use for, you might as well use it for what it was designed: compute. A lot of energy goes into the production of computing devices and by not utilizing them until they fail afterwards, that initial energy cost goes “wasted”4. And since you’re not senselessly computing SHA-256 but advancing human knowledge, you are putting energy and computing capability to good use. But if you are really concerned about the environmental impact of using more energy than necessary, run BOINC computations in winter only: Then the generated heat from the computations can also warm your home.

Free Software BOINC projects and applications

Project Application License source
Einstein@home Gravitational Wave search GPLv2 git repo
Einstein@home Binary Pulsar Radio search GPLv2 (?)
Einstein@home Gamma-ray Pulsar search GPLv2 (?)
LPC@home SixTrack LGPLv2 git repo
DENIS@home all of them Apache v2 git repos

  1. The latest version of the BOINC Android app can only be downloaded from the F-Droid store (which you should be using anyways) as some Google Play Store policies prevent BOINC from being distributed there. ↩︎

  2. I have reached out to the BOINC administrators whether it would be possible to indicate whether the projects run free or proprietary software on your device. ↩︎

  3. I have made a request to properly provide access to the source code of all of the Einstein@home applications. ↩︎

  4. E.g. if you use a smartphone for 3 years, ~80% of the total energy consumption over the whole lifecycle have been spent on producing the device↩︎