Skip to content

Instantly share code, notes, and snippets.

@georgf
Last active June 26, 2019 18:42
Show Gist options
  • Save georgf/cbf4c145ca0e202ad0d25a5a83e06f38 to your computer and use it in GitHub Desktop.
Save georgf/cbf4c145ca0e202ad0d25a5a83e06f38 to your computer and use it in GitHub Desktop.
Mobile experiments kinto setup
{
"type": "object",
"required": [
"id",
"description",
"match",
"buckets",
"branches"
],
"properties": {
"id": {
"title": "Experiment id",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"title": "Description",
"type": "string"
},
"buckets": {
"title": "Buckets",
"type": "object",
"description": "Each user is assigned a random bucket from 0 to 999. Select the bucket ranges here to control the enrolled population size.",
"required": [
"start",
"count"
],
"properties": {
"start": {
"mininum": 0,
"maximum": 999,
"type": "number"
},
"count": {
"mininum": 0,
"maximum": 1000,
"type": "number"
}
}
},
"branches": {
"title": "Branches",
"type": "array",
"required": [
"name",
"ratio"
],
"default": [],
"uniqueItems": true,
"minItems": 1,
"description": "Each experiment needs to specify one or more branches. Each branch has a name and a ratio. An enrolled user is assigned one branch randomly, with the probabilities weighted per the ratio.",
"items": {
"description": "One experiment branch.",
"title": "Branch",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The branch name. This is what product code uses to decide which branch logic to execute.",
"minLength": 1,
"maxLength": 100
},
"ratio": {
"type": "number",
"description": "The branches ratio is the probabilistic weight for random branch assignment.",
"mininum": 1,
"maximum": 1000,
"default": 1
}
}
}
},
"match": {
"title": "Matching",
"type": "object",
"description": "A list of optional matchers, which allow restricting the experiment to e.g. specific application ids.",
"properties": {
"app_id": {
"type": "string",
"description": "Match specific application ids. A regex. E.g.: ^org.mozilla.fennec|org.mozilla.firefox_beta|org.mozilla.firefox$",
"minLength": 1,
"maxLength": 1000
},
"app_display_version": {
"description": "The applications version number. A regex. E.g.: '47.0a1', '46.0'",
"type": "string"
},
"locale_country": {
"description": "Match country, pulled from the default locale. A regex. E.g.: USA|ITA",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"locale_language": {
"description": "Language, pulled from the default locale. A regex. E.g.: eng|esp",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"device_model": {
"description": "Device name. A regex.",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"device_manufacturer": {
"description": "Device manufacturer",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"regions": {
"default": [],
"description": "Compared with GeoIP lookup, where supported.",
"items": {
"default": "",
"description": "Similar to a GeoIP lookup",
"minLength": 1,
"maxLength": 1000,
"title": "Regions",
"type": "string"
},
"title": "Regions",
"type": "array",
"uniqueItems": true
},
"debug_tags": {
"default": [],
"description": "Target specific debug tags only. This allows testing of experiments for only specific active users for QA etc.",
"items": {
"default": "",
"description": "A debug tag set through the libraries debug activity.",
"minLength": 1,
"title": "Debug tag",
"type": "string"
},
"title": "Debug tags",
"type": "array",
"uniqueItems": true
}
}
}
}
}

Where to add this

For testing create a collection mobile-experiments in the main bucket on the Kinto dev server.

Records list columns

What's added in "Records list columns" is what get's shown in the record lists overview. We want:

  • id
  • description
{
"sort": "-last_modified",
"displayFields": [
"id",
"description"
],
"attachment": {
"enabled": false,
"required": false
},
"schema": {
"properties": {
"id": {
"type": "string",
"maxLength": 100,
"title": "Experiment id",
"minLength": 1
},
"buckets": {
"description": "Each user is assigned a random bucket from 0 to 999. Select the bucket ranges here to control the enrolled population size.",
"properties": {
"start": {
"type": "number",
"mininum": 0,
"maximum": 999
},
"count": {
"type": "number",
"mininum": 0,
"maximum": 1000
}
},
"type": "object",
"required": [
"start",
"count"
],
"title": "Buckets"
},
"description": {
"type": "string",
"title": "Description"
},
"branches": {
"description": "Each experiment needs to specify one or more branches. Each branch has a name and a ratio. An enrolled user is assigned one branch randomly, with the probabilities weighted per the ratio.",
"required": [
"name",
"ratio"
],
"title": "Branches",
"items": {
"description": "One experiment branch.",
"properties": {
"ratio": {
"description": "The branches ratio is the probabilistic weight for random branch assignment.",
"type": "number",
"default": 1,
"mininum": 1,
"maximum": 1000
},
"name": {
"description": "The branch name. This is what product code uses to decide which branch logic to execute.",
"type": "string",
"maxLength": 100,
"minLength": 1
}
},
"type": "object",
"title": "Branch"
},
"type": "array",
"minItems": 1,
"uniqueItems": true,
"default": []
},
"match": {
"description": "A list of optional matchers, which allow restricting the experiment to e.g. specific application ids.",
"properties": {
"app_id": {
"description": "Match specific application ids. A regex. E.g.: ^org.mozilla.fennec|org.mozilla.firefox_beta|org.mozilla.firefox$",
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"app_display_version": {
"description": "The applications version number. A regex. E.g.: '47.0a1', '46.0'",
"type": "string"
},
"device_manufacturer": {
"description": "Device manufacturer",
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"debug_tags": {
"description": "Target specific debug tags only. This allows testing of experiments for only specific active users for QA etc.",
"title": "Debug tags",
"items": {
"description": "A debug tag set through the libraries debug activity.",
"type": "string",
"title": "Debug tag",
"default": "",
"minLength": 1
},
"type": "array",
"uniqueItems": true,
"default": []
},
"locale_country": {
"description": "Match country, pulled from the default locale. A regex. E.g.: USA|ITA",
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"regions": {
"description": "Compared with GeoIP lookup, where supported.",
"title": "Regions",
"items": {
"description": "Similar to a GeoIP lookup",
"maxLength": 1000,
"title": "Regions",
"type": "string",
"minLength": 1,
"default": ""
},
"type": "array",
"uniqueItems": true,
"default": []
},
"device_model": {
"description": "Device name. A regex.",
"type": "string",
"maxLength": 1000,
"minLength": 1
},
"locale_language": {
"description": "Language, pulled from the default locale. A regex. E.g.: eng|esp",
"type": "string",
"maxLength": 1000,
"minLength": 1
}
},
"type": "object",
"title": "Matching"
}
},
"type": "object",
"required": [
"id",
"description",
"match",
"buckets",
"branches"
]
},
"uiSchema": {
"buckets": {
"ui:order": [
"start",
"count"
]
},
"description": {
"ui:widget": "textarea"
},
"match": {
"ui:order": [
"app_id",
"app_display_version",
"locale_language",
"locale_country",
"device_model",
"device_manufacturer",
"regions",
"debug_tags"
]
},
"ui:order": [
"id",
"description",
"buckets",
"branches",
"match"
]
},
"cache_expires": 0
}
{
"ui:order": [
"id",
"description",
"buckets",
"branches",
"match"
],
"description": {
"ui:widget": "textarea"
},
"buckets": {
"ui:order": [
"start",
"count"
]
},
"match": {
"ui:order": [
"app_id",
"app_display_version",
"locale_language",
"locale_country",
"device_model",
"device_manufacturer",
"regions",
"debug_tags"
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment