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. |