| 20 | Distributed thinking projects may have widely varying |
| 21 | properties and requirements. |
| 22 | |
| 23 | First, they may require different orders of job distribution. |
| 24 | Consider the two cases: |
| 25 | |
| 26 | * Project A has a limited set of jobs and lots of volunteers. |
| 27 | * Project B has an unbounded stream of jobs and a limited set of volunteers. |
| 28 | |
| 29 | Project A will want to have each job performed about the same number of times. |
| 30 | It will want to issues all jobs once, |
| 31 | then issue them all a second time, and so on. |
| 32 | In constrast, project B will want to issue the first job to a quorum of volunteers, |
| 33 | then issue the second job to a quorum, and so on. |
| 34 | |
| 35 | Second, projects may want to assess the ability of each volunteer, |
| 36 | and use this to determine how many replicas of each job to perform. |
| 37 | Several factors might contribute to the ability estimate: |
| 38 | |
| 39 | * The volunteer's performance on a training course. |
| 40 | * The volunteer's performance on a stream of "calibration jobs" (with known answers) intermixed with the job stream. |
| 41 | * The fraction of time a volunteer's response to a job agrees with the "correct" response, as determined by replication. |
| 42 | |
| 43 | In addition, the way in which ability is described may vary. |
| 44 | In simple cases it might be a single number, e.g. and error rate. |
| 45 | For tasks that involve feature detection we might want to track |
| 46 | the rates of false positives and false negatives separately. |
| 47 | For more complex tasks there could be arbitrarily many dimensions. |
| 48 | |
| 49 | Third, the way in which more able volunteers are used may differ. |
| 50 | Two general possibilities: |
| 51 | |
| 52 | '''Experts do the same job, only better''':: |
| 53 | For example, experts might be used to resolve cases in which no concensus is reached by other volunteers. Or they might be used to verify the identification of rare features. |
| 54 | |
| 55 | '''Experts do more sophisticated jobs''':: |
| 56 | For example, non-experts might look for features, while experts classify them. |
| 59 | |
| 60 | Bossa's design philosophy is to provide '''mechanisms''', |
| 61 | and leave it up to the projects to define the '''policies'''. |
| 62 | This is done using the following techniques: |
| 63 | |
| 64 | * Project-specific information about jobs and volunteers is stored in PHP objects. The structure of these objects is determined by the project. Bossa stores them in a serialized form in the database. |
| 65 | * Project-specific policies are encoded in PHP '''callback functions''' that are invoked at various points (e.g., when jobs are issued, when they complete, and when they time out). |
| 66 | |
| 67 | The mechanisms provided by Bossa include: |
| 68 | |
| 69 | * Jobs can be designated as '''calibration jobs''', and Bossa can be instructed to randomly mix a given rate of calibration jobs into the job stream. |
| 70 | * The order in which jobs are issued is determined by a floating-point priority. The manipulation of these priorities is up to the project. |
| 71 | * Users can be assigned integer '''levels''', in which case each job has a vector of priorities, one per level. |
| 72 | |
| 73 | This framework enables all of the examples listed above |
| 74 | (and others not yet conceived) |
| 75 | to be implemented with a small amount of PHP programming. |