Overview
Jira Ticket: Jira Legacy server System JIRA serverId 2207a759-5bc8-39c5-9cd2-aa9ccc1f65dd key SB-10068
As part of implementation of A/B framework, we have evaluated 4 frameworks' that are available for A/B testing. Planout (by Facebook), Wasabi (by Intuit), Alephbet & sixpack (by seatgeek)
We will list down the salient feature and comparison among this tools in following table
Planout | Wasabi | Sixpack | Alephbet | |
---|---|---|---|---|
Implemented By | Facebook (Python), Hubspot(Javascript), GlassDoor (Java) | Intuit | SeatGeek | GingerLime |
Server Implementation | Multiple - Python, Java, PHP | Java | Python | None |
Event logging mechanism | Add own logic for log-event - event object is received as an input | Full-fledged API - for assignment, impression, engagement | API for collection impression/engagement | Stores in javascript localstore, gives plug-in point |
License information | BSD | Apache 2.0 | BSD | MIT |
Other dependency | None | Cassandra/MySQL | Redis | None |
Other standout feature | Support's namespace - can be used to qualify experiment further | Has UI for configuring and looking at analytics data | Has UI for configuring and looking at analytics data | Has support for tracking adapters, as well as allows to implement custom tracking adapter. |
Config Syntax | //Extend experiment class class MyExperiment extends
var exp = | They have back-end and UI for confguri | var session = new sixpack.Session(); session.participate('test-exp', ['alt-one' | var button_color_experiment = new AlephBet.Experiment({ name: 'button color', |
It is desirable to use, just java-script implementation as minimal data storage or even just telemetry generation is enough for gathering data. So Planout/Alephbet are better fit for our purpose.
Sample Configuration
...
for
...
audience selection
Code Block | ||||
---|---|---|---|---|
| ||||
{
"activeExperiments": [
{
"ExperimentName": "<Name of experiment>", //Experiment name
"startDate": "2019-01-01", //Start date from which experiment is applicable.
"endDate": "2019-01-31", //End date when experiment expires
"rendering": true/false, //toggle for enable/disable the experiement - regardless of toher paramters.
"deploymentVersion": 1.14,
"rules": {
"stateCode": [ //Value should be one of the configured
"state1",
"state2"..."stateN"
],
"browser": [
"browser1",
"browser2"..."browserN"
],
"userType": [
"Student",
"Teacher",
..."Other"
],
"framework.id": [
"NCF",
..."Framework2"
],
"framework.board": [
"CBSE",
..."ICSE"
],
"framework.medium": [
"English",
..."Telugu"
]
}
},
{
"ExperimentName": "<Name of experiment>""startDate": "2019-02-01",
"endDate": "2019-02-28",
"rendering": true/false"deploymentVersion": 1.14"rules": {
"stateCode": [
"state1",
"state2"..."stateN"
],
"browser": [
"browser1",
"browser2"..."browserN"
],
"userType": [
"Student",
"Teacher",
..."Other"
],
"framework.id": [
"NCF",
..."Framework2"
],
"framework.board": [
"CBSE",
..."ICSE"
],
"framework.medium": [
"English",
..."Telugu"
]
}
}
]
} |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "activeExperiments": [ { "ExperimentName": "TestLibPage", "startDate": "2019-01-01", "endDate": "2019-01-31", "rendering": true, "deploymentVersion": 1.14"rules": { 'stateCode': 'AP',[ "AP", "KA" ], 'deviceTypebrowser': 'Android' } [ "Chrome" ] } }, { "ExperimentName": "TestLibPage", "startDate": "2019-02-01", "endDate": "2019-02-28", "rendering": true, "deploymentVersion": 1.15"rules": { "browser": [ "Firefox" ] } } } ] |