Android GUI discussion
(note from June 17 2014 conf call)
Goals
We'd like the GUI to
- convey the feeling that the device is actively making a contribution; i.e. it should show change in some way.
- convey the feeling of community and power in numbers; this device is one of a large set of device, and the volunteer is one of a large group of people.
- encourage the user to run BOINC more on this device (i.e. leave it plugged in more).
- encourage the user to run BOINC on their PCs as well.
And
- we should show information graphically rather than textually as much as possible.
- when we show numbers, they should be in units that are easily understandable to the volunteer, e.g. hours of computing rather than credits.
GUI structure
The GUI currently has a set of pages, or "tabs": projects, tasks, prefs, notices. The projects and tasks tabs show lists; each list item can be expanded into a page showing its details.
It probably needs two additions:
- A "splash screen" that users see the first time they run the app. This would briefly explain what the app does and mention some of the science projects.
- A top-level page to show info for this device as a whole.
Ideas
I think the Tasks tab is good more or less as is, except that it should always show a progress bar for each task.
Most of the following idea apply to the Projects tab and the project detail page.
Computing time
(By "computing time" I mean the time that BOINC is allowed to compute; this is not the same as CPU time).
We could show
- Computing time in last 24 hours
- Computing time in last week
We could show these graphically as pie charts or bars. We could also show them as "time lines" showing the specific times when computing happened. This would show, e.g., if computing was toggled because of battery charge or heat.
We could show total computing time, either textually or as a graph showing its increase over long time scales (weeks, months, or since the beginning).
Task completion by this device
We could show the # of tasks completed by this device
- per project, or summed over projects
- in the last week, or since the beginning
- textually, or as a graph
We could show a time line with horizontal lines (color coded by project) showing the lifetime of each task.
Contribution as fraction of whole
For the various quantities (computing time, credit, tasks) we could show the device's contribution relative to the project as a whole. E.g. "Einstein@home processed 1,234,567 jobs this week, and your device did 2 of them".
It's not clear whether volunteers would find this discouraging.
Contribution relative to average volunteer
For the various quantities (time, credit, tasks) we could show the device's contribution relative to the Android average. E.g. "Your device computed 7.4 hours per day, and the average is 6.9". Or we could show the distribution of the quantity, and where this device lies on the distribution.
Badges
Projects can grant "badges" for any kind of achievement:
- total credit
- average credit percentile (i.e. top 1% or 5% of volunteers)
- number of message-board posts
Badges have corresponding images and textual descriptions.
The GUI should show badges, and it should notify the volunteer when a new badge has been earned.
Project "big picture"
We could convey the idea of the project as a whole by showing
- The # of jobs completed each day
- The total # of jobs completed (this could continuously increment; i.e. if 100K jobs/day, increment every 0.86 sec).
PC suggestion
We could say, somewhere in the GUI, something like "Want to help more? You can also run Einstein@home (and ...) on your desktop or laptop computer. Click for more info.".
We should probably make the GUI aware of whether the volunteer is in fact already running BOINC on other computers, and if so not show this message.
Game-ification
An alternative is to present BOINC as a game. A couple of takes on this:
- You have a virtual plant. Computing (or recruiting other volunteers, etc.) waters the plant, and it grows. Otherwise it shrivels up and dies.
- You're a virtual scientist, with a career. You get to pick a name and a gender, you get to pick a field (project related, e.g. astrophysics, medicine, geography, math). Based on this information projects get attached in the background, some landmark achievements (elementary school, high school, college, a PhD, publications, a Nobel prize etc.) are awarded. The scientists is of course modeled in "cute" graphics, and some environment conditions encourage the volunteer to meet the BOINC computing conditions, e.g. , can only study with light (charger connected), can only study with access to books (wifi connected), can only study when not distracted (screen off) etc. It would entirely hide BOINC from the user: no projects, no tasks, no preferences, no nothing. just a game. and it *actually helps science* they will say.
Available data
GUI RPCs currently make available the following data, which could be used by GUIs:
- In CC_STATE::time_stats
- "active time" (computation enabled) during current run of client
- Total active time. If the GUI wants to show e.g. active time in last week, it can use this.
- The time BOINC first ran
- In PROJECT
- User and team names
- User and team total and average credit
- # of successful and failed jobs
- Elapsed time (total, of all jobs of this project). May be > active time if multicore.