Changes between Version 14 and Version 15 of BossaOverview


Ignore:
Timestamp:
Jul 29, 2008, 1:41:39 PM (16 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • BossaOverview

    v14 v15  
    2222Distributed thinking projects have widely varying properties
    2323and hence different requirements.
    24 Bossa's design philosophy is to provide '''mechanisms''',
    25 and leave it up to the projects to define the '''policies'''.
    26 This is done using the following techniques:
     24Bossa doesn't directly provide all needed features;
     25rather, it makes it easy for you to implement what you need.
     26The division of labor is as follows:
    2727
    28 == The diverse requirements of distributed thinking ==
     28 * Bossa provides '''mechanisms'''. It provides all the database (MySQL) support.
     29 * You (the project) define the '''policies''' by writing PHP functions; you need to have basic knowledge of PHP to use Bossa.
    2930
     31Some of these mechanisms and policies are as follows.
    3032
    31 First, they may require different ''distribution policies'',
     33== Job and result representation ==
     34
     35The data needed to display a job may include various filenames, numbers, etc.
     36This info is stored in a PHP structure
     37that you create when you generate the job.
     38Bossa stores this in a serialized (textual) from in the database.
     39When a job is to be displayed to a volunteer,
     40Bossa calls your "job display function", passing it this structure.
     41
     42Similarly, the results of a completed job are stored in a PHP structure
     43defined by your application.
     44
     45== Job distribution policy ==
     46
     47Applications may require different ''job distribution policies'',
    3248i.e. different orders in which jobs are distributed.
    3349Consider the two cases:
     
    4763The longer the project runs, the more jobs are finished.
    4864
    49 Second, projects may want to assess the ability of each volunteer,
     65Bossa's mechanism is that each job has a floating-point priority,
     66and jobs are issued in order of decreasing priority.
     67The manipulation of these priorities is up to you.
     68Policies 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
     73Projects may want to assess the ability of each volunteer,
    5074and use this to determine how many replicas of each job to perform.
    5175Several factors might contribute to the ability estimate:
     
    6084 * For more complex tasks, ability could have arbitrarily many dimensions.
    6185
    62 Third, there are various way in which "experts" might be used.
     86Bossa lets you associate an arbitrary PHP structure with each volunteer.
     87This can be initialized and updated however you want.
     88
     89Bossa provides a '''calibration job''' mechanism;
     90jobs can be designated as calibration jobs,
     91and Bossa can be instructed to randomly mix a given rate of calibration jobs into the job stream.
     92
     93== Use of experts ==
     94
     95There are various way in which "experts" might be used.
    6396Two general possibilities:
    6497
     
    69102 For example, non-experts might look for features, while experts classify them.
    70103
    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.
     104Bossa provides the following mechanism:
     105volunteers can be assigned integer '''levels'''.
     106Each job has a vector of priorities, one per level.
     107Jobs are sent to a given volunteer in order of decreasing level-specific
     108priority.