Changes

5,033 bytes added ,  17:26, 24 June 2014
Line 8: Line 8:  
=== Concepts ===
 
=== Concepts ===
   −
[[File:Harvest-diagram.png]]
+
[[File:Harvest-diagram-4.png]]
    
* Activities refers to the sugar applications that are being used.
 
* Activities refers to the sugar applications that are being used.
 
* Learners refers to the sugar users.
 
* Learners refers to the sugar users.
* Instances refers to the different sessions an particular activity.
+
* Instances refers to the different entries of an particular activity, owned by one learner.
* Launches refers to the different times the same session is started.
+
* Launches refers to the metadata associated with each time the instance is started.
 +
* Counters refers to the network traffic measurements.
   −
=== Meta-data ===
+
=== Metadata ===
    
{| class="wikitable"
 
{| class="wikitable"
Line 25: Line 26:  
|'''Type'''
 
|'''Type'''
 
|-
 
|-
|rowspan="3"|Learners
+
|rowspan="4"|Learners
 
|serial_number
 
|serial_number
 
|Hashed laptop identifier
 
|Hashed laptop identifier
Line 31: Line 32:  
|-
 
|-
 
|birthdate
 
|birthdate
|Aproximate birthdate of the user
+
|Approximate date of birth of the user
 
|Unix time
 
|Unix time
 
|-
 
|-
 
|gender
 
|gender
|Gender of the user
+
|Gender of the user (either male, female, or unspecified by the user)
 +
|String
 +
|-
 +
|grouping
 +
|Custom group associated with his learner (see [[#Custom_Groups|Custom Groups]])
 
|String
 
|String
 
|-
 
|-
Line 43: Line 48:  
|String
 
|String
 
|-
 
|-
|rowspan="10"|Instances
+
|rowspan="9"|Instances
 
|object_id
 
|object_id
 
|Entry identifier
 
|Entry identifier
Line 62: Line 67:  
|buddies
 
|buddies
 
|Number of user's associated to the entry
 
|Number of user's associated to the entry
|Integer
  −
|-
  −
|spent_time
  −
|Just a place holder for now. Still not supported in Sugar
   
|Integer
 
|Integer
 
|-
 
|-
Line 84: Line 85:  
|String
 
|String
 
|-
 
|-
|rowspan="1"|Launches
+
|rowspan="2"|Launches
 
|timestamp
 
|timestamp
 
|Launch time for an particular entry
 
|Launch time for an particular entry
 
|Unix time
 
|Unix time
 +
|-
 +
|spent_time
 +
|seconds that the activity was opened (see [[#Spent_time|Spent time]])
 +
|Integer
 +
|-
 +
|rowspan="3"|Counters
 +
|timestamp
 +
|Time stamp for the beginning of the day (see [[#Network_traffic|Network traffic]])
 +
|Unix time
 +
|-
 +
|download
 +
|Bytes downloaded during that day
 +
|Integer
 +
|-
 +
|upload
 +
|Bytes uploaded during that day
 +
|Integer
 
|}
 
|}
   −
'''''Observation:''' All the meta-data names, matches the original names of the journal meta-data.''
+
'''''Observation:''' All the metadata names, matches the original names of the journal metadata.''
    
== How does it work? ==
 
== How does it work? ==
Line 102: Line 120:     
== What are the advantages? ==
 
== What are the advantages? ==
* No need to copy the kids journal content, no backups required either.
+
* Learners data are never copied nor transferred out of their machines.
* Does not require OS customization, it based on Sugar's web service framework, can be installed on any existing Sugar 0.100+ distribution.
+
* The collection is being done continuously over time. This means that its sampling is very fine grained.
* Does not depend on the school server, it can be deployed in a central server.
+
* It is very lightweight. It can be deployed in a central server.
 +
* Does not require OS customization. The client is based on Sugar's web service framework, and it can be installed on any existing Sugar 0.100+ distribution.
    
== What is implemented so far? ==
 
== What is implemented so far? ==
Line 131: Line 150:  
* https://github.com/tchx84/harvest-client
 
* https://github.com/tchx84/harvest-client
 
* https://github.com/tchx84/harvest-server
 
* https://github.com/tchx84/harvest-server
 +
 +
== External dependencies ==
 +
 +
=== Custom Groups ===
 +
 +
In the About Me section of the Sugar control panel (and in the Sugar intro) it is possible set the age of the user.
 +
However, not every deployment may want to group users by age, e.g., in Australia, they group students by grade.
 +
 +
Using a configuration file (<code>/usr/share/sugar/data/group-labels.defaults</code>), it is possible to configure the selection into groups specific to the needs of a deployment. The configuration file is a JSON-encoded Python dictionary that maps ages to labels and icons associated with those labels. There is also an environment variable <code>$SUGAR_GROUP_LABELS</code> defined in <code>sugar.in</code>.
 +
 +
The file that configures the default Sugar behavior is shown here (with added CRs for readability in the wiki):
 +
 +
[[File:Aboutme-age.png|thumb|Age selector]]
 +
 +
{"group-label": "Select age:",
 +
"group-items": [
 +
{"female-icon": "female-0", "male-icon": "male-0", "label": "0-3", "age": 3},
 +
{"female-icon": "female-1", "male-icon": "male-1", "label": "4-5", "age": 5},
 +
{"female-icon": "female-2", "male-icon": "male-2", "label": "6-7", "age": 7},
 +
{"female-icon": "female-3", "male-icon": "male-3", "label": "8-9", "age": 9},
 +
{"female-icon": "female-4", "male-icon": "male-4", "label": "10-11", "age": 11},
 +
{"female-icon": "female-5", "male-icon": "male-5", "label": "12", "age": 12},
 +
{"female-icon": "female-6", "male-icon": "male-6", "label": "13-17", "age": 15},
 +
{"female-icon": "female-7", "male-icon": "male-7", "label": "Adult", "age": 25}
 +
]}
 +
 +
:The group-label is the prompt that appears in the UI
 +
:Each group-item is represented by a different icon and label in the interface and is mapped to a specific age used to calculate birthdate reported by Harvest. The icons are gender-specific. If no gender is specified, the female icon is used.
 +
 +
A file that configures grades instead of ages is shown here (with added CRs for readability in the wiki):
 +
 +
[[File:Aboutme-grade.png|thumb|Grade selector]]
 +
 +
 +
{"group-label": "Select grade:",
 +
"group-items": [
 +
{"female-icon": "female-1", "male-icon": "male-1", "label": "Preschool", "age":  4},
 +
{"female-icon": "female-1", "male-icon": "male-1", "label": "Kindergarten", "age": 5},
 +
{"female-icon": "female-2", "male-icon": "male-2", "label": "1st Grade", "age": 6},
 +
{"female-icon": "female-3", "male-icon": "male-3", "label": "2nd Grade", "age": 7},
 +
{"female-icon": "female-4", "male-icon": "male-4", "label": "3rd Grade", "age": 8},
 +
{"female-icon": "female-5", "male-icon": "male-5", "label": "4th Grade", "age": 9},
 +
{"female-icon": "female-5", "male-icon": "male-5", "label": "5th Grade", "age": 10},
 +
{"female-icon": "female-6", "male-icon": "male-6", "label": "6th Grade", "age": 11},
 +
{"female-icon": "female-6", "male-icon": "male-6", "label": "7th Grade", "age": 12},
 +
{"female-icon": "female-7", "male-icon": "male-7", "label": "High School", "age": 13},
 +
{"female-icon": "female-7", "male-icon": "male-7", "label": "Adult", "age": 25}
 +
]}
 +
 +
=== Network traffic ===
 +
 +
Harvest-monitor is a lightweight daemon which uses custom iptables counters to do measurements on network traffic. These counters are then accumulated in a SQLite database, where each row presents a day. This is an optional feature. If available, harvest-client will collect these measurements and report it to the server.
 +
 +
*The source code can be found at: https://github.com/tchx84/harvest-monitor
 +
*The RPM package can be downloaded from: http://www.sugarlabs.org/~tch/repos/f18/harvest-monitor-0.2.0-2.noarch.rpm
 +
 +
=== Spent time ===
 +
 +
This is based on downstream sugar-toolkit and sugar-toolkit-gtk3 patches by Manuel Quiñones and Martin Abente. These patches allow the activities to count the time (in seconds) for when it was opened. Only takes into account the time for when activity is the main screen. This is also a optional feature.
 +
 +
* sugar-toolkit downstream pathches: https://github.com/manuq/sugar-toolkit/tree/spent-time
 +
* sugar-toolkit-gtk3 downstream patches: https://github.com/manuq/sugar-toolkit-gtk3/tree/spent-time-3
 +
 +
The precision of the time tracking can be improved by taking into account power management events and other sugar UI events. In order to do so, harvest-tracker must be installed.
 +
 +
* harvest-tracker source code: https://github.com/tchx84/harvest-tracker
 +
* harvest-tracker RPM package: http://www.sugarlabs.org/~tch/repos/f18/harvest-tracker-0.3.0-1.noarch.rpm
    
== RPMs ==
 
== RPMs ==
572

edits