wiki:BadgesOld

Version 4 (modified by brevilo, 11 years ago) (diff)

--

Proposal: badges and achievements for volunteer contributions

Motivation

The heading says it all: (volunteer) motivation. The general idea is to have BOINC support the notion of "badges" that represent various achievements and can be assigned to a volunteer's profile. Those badges should motivate the volunteers to keep contributing as they, apart from (un-sexy) credits alone, can show off their individual contributions in a more tangible and meaningful way. The idea isn't new and projects like World Community Grid already support the assignment of achievement badges which are then displayed in the community section, e.g. as part of the forum post author details. We, the Einstein@Home and Joachim Fritsch, propose to standardise and extend this feature to all interested BOINC projects and beyond.

Note

The following represents a proposal, a basis for discussion. It's still work in progress!

Requirements

The following list is a first shot at the requirements we have in mind (subject to change and refinement):

  • Origin: badges should be assignable by projects and, eventually, in a cross-project way.
  • Numbers: the numbers of assigned badges shouldn't be constrained. The could be tens of badges per volunteer, so prepare to visualise those.
  • Assignment: assignments should support temporary (incl. renewal) and unlimited badges.
  • Visibility: badges should be visible across the whole BOINC universe, at least in managers (desktop/mobile) and the web front-end (forums/profile), eventually even on the stats sites.
  • Types: badges should be represented by icons/images, supported by textual descriptions. There should also be the means to represent different levels of the same badge type (e.g. a "Continued Support" badge in "Bronze", "Silver" or "Gold")
  • Assignees: badges should be assignable to users as well as teams.

Implementation notes

  • Badge "format"
    • Image
      • Bitmaps or vector graphics?
      • For bitmaps: pre-defined set of resolutions?
      • Which formats to support (GUI toolkit and browser compatibility)?
    • Descriptive text
      • Title
      • Level
      • Description
      • Eventually multi-language
    • Origin (name of project, cross-project)
    • Time of awarding (e.g. for sorting)
  • Display
    • Forums
      • Be sure to avoid clutter: limit number and link to full list
      • Make entire badge display optional via community preference
    • Support badges display as port of "user of the month" feature
    • Show descriptive text when hovering over badge (mouse/tool-tip)
    • Teams
      • Show team badges also in profiles of team members (somewhat separately)
    • Search (web)
      • Support user profile searches filtered by badges
      • Support team searches filtered by badges
  • Server
    • Project-specific badges defined in project database
    • Rule-based assignment: use SQL to determine eligible users/teams per defined badge
    • Project task to update the assignments by processing ruleset
    • Support manual assignment of badges
    • Stats site support
      • Extend user profiles and team data to include badge references
      • Provide set of (project) badges in dedicated download (sub)directory, tailored for (r)sync.

Database schema

Open questions and challenges

  • How to ship the badges (images) efficiently?
    • Should they be downloaded on demand (via URL) or shipped as "project file" (download on project attach/update)?
    • Should they be downloaded as compound images (see stats site forum signature images) or separately?
  • How to ship badge assignment data to the managers?
    • Part of scheduler request (length constraints!)?
    • User-specific notices/RSS feed?
    • Periodic web RPCs?
  • Should updates (images and data) be incremental or always be a full snapshot (e.g. to support badge removal)?
  • How to implement cross-project badges? Are stats sites (e.g. BOINCstats) the natural place to do that?
    • We could define a set of standard badges to allow stats site-agnostic assignment
    • Should stats sites be allowed to come up with their own set of cross-project badges?

Work package assignments

  • Desktop manager: Rom/Charlie?
  • Android app: Joachim
  • Server: David and/or E@H (TBD)
    • DB:
    • C++ bindings:
    • PHP bindings:
  • Documentation