| 31 | | First, they may require different ''distribution policies'', |
| | 33 | == Job and result representation == |
| | 34 | |
| | 35 | The data needed to display a job may include various filenames, numbers, etc. |
| | 36 | This info is stored in a PHP structure |
| | 37 | that you create when you generate the job. |
| | 38 | Bossa stores this in a serialized (textual) from in the database. |
| | 39 | When a job is to be displayed to a volunteer, |
| | 40 | Bossa calls your "job display function", passing it this structure. |
| | 41 | |
| | 42 | Similarly, the results of a completed job are stored in a PHP structure |
| | 43 | defined by your application. |
| | 44 | |
| | 45 | == Job distribution policy == |
| | 46 | |
| | 47 | Applications may require different ''job distribution policies'', |
| 49 | | Second, projects may want to assess the ability of each volunteer, |
| | 65 | Bossa's mechanism is that each job has a floating-point priority, |
| | 66 | and jobs are issued in order of decreasing priority. |
| | 67 | The manipulation of these priorities is up to you. |
| | 68 | Policies are encoded in PHP '''project policy functions''' that are invoked at various points |
| | 69 | (e.g., when jobs are issued, when they complete, and when they time out). |
| | 70 | |
| | 71 | == Volunteer assessment == |
| | 72 | |
| | 73 | Projects may want to assess the ability of each volunteer, |
| 62 | | Third, there are various way in which "experts" might be used. |
| | 86 | Bossa lets you associate an arbitrary PHP structure with each volunteer. |
| | 87 | This can be initialized and updated however you want. |
| | 88 | |
| | 89 | Bossa provides a '''calibration job''' mechanism; |
| | 90 | jobs can be designated as calibration jobs, |
| | 91 | and Bossa can be instructed to randomly mix a given rate of calibration jobs into the job stream. |
| | 92 | |
| | 93 | == Use of experts == |
| | 94 | |
| | 95 | There are various way in which "experts" might be used. |
| 71 | | == How Bossa addresses these requirements == |
| 72 | | |
| 73 | | |
| 74 | | |
| 75 | | * Project-specific information about jobs and volunteers is stored in '''project data''' fields. These are PHP objects whose structure is determined by the project. Bossa stores them in a textual form in the database. |
| 76 | | * Project-specific policies are encoded in PHP '''project policy functions''' that are invoked at various points (e.g., when jobs are issued, when they complete, and when they time out). |
| 77 | | |
| 78 | | The mechanisms provided by Bossa include: |
| 79 | | |
| 80 | | * 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. |
| 81 | | * The order in which jobs are issued is determined by a floating-point priority. The manipulation of these priorities is up to the project. |
| 82 | | * Users can be assigned integer '''levels''', in which case each job has a vector of priorities, one per level. |
| 83 | | |
| 84 | | This framework enables all of the examples listed above (and others not yet conceived of) |
| 85 | | to be implemented with a small amount of PHP programming. |
| | 104 | Bossa provides the following mechanism: |
| | 105 | volunteers can be assigned integer '''levels'''. |
| | 106 | Each job has a vector of priorities, one per level. |
| | 107 | Jobs are sent to a given volunteer in order of decreasing level-specific |
| | 108 | priority. |