Bug 1193089 - Aurora e10s A/B experiment. r=vladan
authorRoberto Vitillo <rvitillo@mozilla.com>
Thu, 22 Oct 2015 17:21:16 -0400
changeset 53 0032fbee999a05cec9bed570e104dc82f0c98a7b
parent 52 59365ce5cabe2ad501e871ca01c577c94a3a7d7e
child 54 aa7164a45b9102427904f3f5d2af7f33f21dcd9f
push id40
push uservdjeric@mozilla.com
push dateThu, 22 Oct 2015 21:25:08 +0000
reviewersvladan
bugs1193089
Bug 1193089 - Aurora e10s A/B experiment. r=vladan
experiments/e10s-enabled-aurora/code/bootstrap.js
experiments/e10s-enabled-aurora/code/install.rdf
experiments/e10s-enabled-aurora/experiment.xpi
experiments/e10s-enabled-aurora/manifest.json
new file mode 100644
--- /dev/null
+++ b/experiments/e10s-enabled-aurora/code/bootstrap.js
@@ -0,0 +1,148 @@
+let {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+
+Cu.import("resource:///modules/experiments/Experiments.jsm");
+Cu.import("resource://gre/modules/Task.jsm");
+Cu.import("resource://gre/modules/Preferences.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/TelemetryLog.jsm");
+
+const SELF_ID = "e10s-enabled-aurora-20151020@experiments.mozilla.org";
+const BRANCH = "browser.tabs.remote.";
+const PREF = BRANCH + "autostart.2";
+const OPTIN_PREF = BRANCH + "autostart";
+const POPUP_PREF = "browser.displayedE10SPrompt.1";
+const DISPLAY_PREF = "browser.displayedE10SNotice";
+const ORIGINAL_PREF = "experiments." + PREF + ".backup." + SELF_ID;
+
+var gStarted = false;
+
+function startup() {
+  // Seems startup() function is launched twice after install, we're
+  // unsure why so far. We only want it to run once.
+  if (gStarted) {
+    return;
+  }
+  gStarted = true;
+
+  Task.spawn(function*() {
+    let branch = yield Experiments.instance().getExperimentBranch(SELF_ID);
+    let expected = null;
+
+    switch (branch) {
+      case null:
+        if (Preferences.isSet(OPTIN_PREF) || Preferences.isSet(PREF)) {
+          TelemetryLog.log(SELF_ID, ["Setting branch to 'user-disabled' because e10s prefs have non-default values."]);
+          yield Experiments.instance().setExperimentBranch(SELF_ID, "user-disabled");
+          return;
+        }
+
+        Preferences.set(ORIGINAL_PREF, Preferences.get(PREF));  // save default value at the beginning of the experiment
+        if (Math.random() >= 0.5) {
+          TelemetryLog.log(SELF_ID, ["Setting branch to 'control' (disable e10s)."]);
+          yield Experiments.instance().setExperimentBranch(SELF_ID, "control");
+          Preferences.set(PREF, false);
+          backupAndSetPref(POPUP_PREF, 5);  // don't show a popup to try e10s
+        } else {
+          TelemetryLog.log(SELF_ID, ["Setting branch to 'experiment' (enable e10s)."]);
+          yield Experiments.instance().setExperimentBranch(SELF_ID, "experiment");
+          Preferences.set(PREF, true);
+          backupAndSetPref(DISPLAY_PREF, 4); // don't show the e10s infobar
+        }
+
+        return;
+
+      case "control":
+        expected = false;
+        break;
+
+      case "experiment":
+        expected = true;
+        break;
+
+      case "defaultness-changed-experiment":
+        TelemetryLog.log(SELF_ID, ["Defaultness of PREF changed in the previous session: restoring experiment branch."]);
+        expected = true;
+        yield Experiments.instance().setExperimentBranch(SELF_ID, "experiment");
+        break;
+
+      case "defaultness-changed-control":
+        TelemetryLog.log(SELF_ID, ["Defaultness of PREF changed in the previous session: restoring control branch."]);
+        expected = false;
+        yield Experiments.instance().setExperimentBranch(SELF_ID, "control");
+        break;
+
+      case "user-disabled":
+      case "force-disabled":
+        return;
+
+      default:
+        throw new Error("Unexpected experiment branch: " + branch);
+    }
+
+    let defaultPrefs = new Preferences({defaultBranch: true});
+    if (defaultPrefs.get(PREF) != Preferences.get(ORIGINAL_PREF)) {  // defaultness of PREF has changed
+      TelemetryLog.log(SELF_ID, ["Setting branch to 'defaultness-changed': enforcing expected state."]);
+      yield Experiments.instance().setExperimentBranch(SELF_ID, "defaultness-changed-" + (expected == true ? "experiment" : "control"));
+      Preferences.set(ORIGINAL_PREF, defaultPrefs.get(PREF));
+      Preferences.set(PREF, expected);
+
+      if(Preferences.isSet(OPTIN_PREF)) {
+        TelemetryLog.log(SELF_ID, ["Setting branch to 'user-disabled' because OPTIN_PREF != expected."]);
+        yield Experiments.instance().setExperimentBranch(SELF_ID, "user-disabled");
+        restoreConfig();
+      }
+    } else {
+      if (expected != Preferences.get(PREF)) {
+        TelemetryLog.log(SELF_ID, ["Setting branch to 'user-disabled' because PREF != expected."]);
+        yield Experiments.instance().setExperimentBranch(SELF_ID, "user-disabled");
+        restoreConfig(false);
+      } else if(Preferences.isSet(OPTIN_PREF)) {
+        TelemetryLog.log(SELF_ID, ["Setting branch to 'user-disabled' because OPTIN_PREF != expected."]);
+        yield Experiments.instance().setExperimentBranch(SELF_ID, "user-disabled");
+        restoreConfig();
+      } else if(expected != Services.appinfo.browserTabsRemoteAutostart) {
+        TelemetryLog.log(SELF_ID, ["Setting branch to 'force-disabled' because browserTabsRemoteAutostart != expected."]);
+        yield Experiments.instance().setExperimentBranch(SELF_ID, "force-disabled");
+        restoreConfig();
+      }
+    }
+  }).then(() => {}, e => Cu.reportError("Got error during bootstrap startup: " + e));
+}
+
+function restoreConfig(completeRestore = true) {
+  if (completeRestore) {
+    Preferences.reset(PREF);
+  }
+  Preferences.reset(ORIGINAL_PREF);
+  restorePref(POPUP_PREF);
+  restorePref(DISPLAY_PREF);
+}
+
+function backupAndSetPref(pref, newValue) {
+  let value = Preferences.get(pref);
+  Preferences.set(pref, newValue);
+  if (value !== undefined) {
+    Preferences.set("experiments." + pref + ".backup." + SELF_ID, value);
+  }
+}
+
+function restorePref(pref) {
+  let backupPref = "experiments." + pref + ".backup." + SELF_ID;
+  let value = Preferences.get(backupPref);
+
+  if (value !== undefined) {
+    Preferences.set(pref, value);
+  } else {
+    Preferences.reset(pref);
+  }
+  Preferences.reset(backupPref);
+}
+
+function uninstall() {
+  Task.spawn(function*() {
+    let branch = yield Experiments.instance().getExperimentBranch(SELF_ID);
+    if (branch == "control" || branch == "experiment" || branch == "defaultness-changed") {
+      restoreConfig();
+    }
+  });
+}
new file mode 100644
--- /dev/null
+++ b/experiments/e10s-enabled-aurora/code/install.rdf
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+  <Description about="urn:mozilla:install-manifest">
+    <em:id>e10s-enabled-aurora-20151020@experiments.mozilla.org</em:id>
+    <em:version>1.0.0</em:version>
+    <em:type>128</em:type>
+    <em:bootstrap>true</em:bootstrap>
+    <em:unpack>false</em:unpack>
+
+    <!-- Firefox -->
+    <em:targetApplication>
+      <Description>
+        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+        <em:minVersion>43.0a2</em:minVersion>
+        <em:maxVersion>43.0a2</em:maxVersion>
+      </Description>
+    </em:targetApplication>
+
+    <!-- Front End MetaData -->
+    <em:name>Multi-process Firefox A/B Test</em:name>
+    <em:description>Measure the effect of multi-process Firefox</em:description>
+    <em:aboutURL>https://bugzilla.mozilla.org/show_bug.cgi?id=1193089</em:aboutURL>
+  </Description>
+</RDF>
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4738a8b240fe4e0dce91594ad45b7284d4823ebe
GIT binary patch
literal 6194
zc$|$`Wl$W<vRy1lfZz~x39>+NmmrHf!QEY!#oaAfu;6Y>fZ*=#9tavNxDx`42VTBg
zb>DsOd-qnonVKIx)qSSA`c!q#d9Q$kOaK4?&;aQWEtvqGR9kc`0Kf$Y0Ql=xNlF9E
zBBw0P27&t6IyjiJy11IIX?yc0V=eNz#*cC?)F$VEn|@IGUbDp0`ARY=kt(KsH5qYq
zNUYPa*hov@u}{Sl7T+z198>m)!r7ubzr5<0z8St*^z>hZKY2c%)vxYnKV)yTV#`{&
zg{sF$9Y{IMg5$vTBe5R9jITr(!6r6fJAN3yFkm;o7+@R72(BB6R83I4!=*(!)ddhB
zhWAmIT<A%8C7iLbpq&P*$_}f5g6J^g!u0e^TEyZc#6l%Was4h>S#?Aph+lKW27I>A
z9Z48*{25?U7|)FJ+?+qS=<uq1mZ_M2>TXi3{dA1;BjSI94vp_O5i65G0x)hprQxk?
z%c4W#QwEGW<()1Q+=PG8%K-(=EWn4|;>8g)=-%Y5zr^rYg$LrV;!k*<8tOnTA@5Gy
zNCYq$SXi*eM#e_+M1y{z;#@+}B4|w$fOD!pxw{dcrgxUbQYD-)<*X%tx?B!yt=(4q
z<cDJRgXaT?P^#`O9|HAMsS8#zNi^TzS;sNg@naqY54D<Bw`^7w)*20j))l~d^PGc8
z`Kdg~anGY&FCXLmz?>SJ=b|X$atH|pm;|Wjw)qweVTB7fj%`*&hE(Pg=$RC@pJIhq
z4&8`o7GIQr)?Vl|52k9QCb;ceTTglTrMFIxI}78Ht7n(go+(rCv@+xojz3hH)xHZ;
zDW=9(`90`!l->Qd5i>XAvJg9~&NyDly1dIpAQ$FLuD>BcT^%zke=r$r8_%WxxdD3v
zEs>nMYC9JQ{obgVhq>@$9V_pxvsVpfU>hl)v%AWKSZlDpY9r`L?bya{pQNGXK@s1B
zC)Lh9^yU3mMw`eKduW+OrmeMRTTmJT<A{}Y8LNC+Nvlx!gK8(^6B_OXxY;z+XJ48B
zOH&_)LCCY>diY0=DUQ5e_O4OX7&kz(`ptV|wSgeQ@e5ON_;rahwMQim3dId*I`y>y
z8O7Ef5Z-mPFK0Dxn=8hOw1V}GT)KExngtzVl6`6kGCi~ho$PLE7*#~cZdtvbxPD(>
z_Qh$ow2miQGdwOMa-<bXmi69sHA_BuuPUt{<;wfT$GbMMmu?{UI~17Yq#+MN7VVJd
zc#mw&_X<rQk>bx`%lJ~Z&m?C8+ERqX^QS52YhD#4bffcxGs>+-1le`1g>7z0DMN1B
zpi5gnZ1HZ<_^@h4j<ZlwslyLeM*BBW-!jHTw->vCri5ZAabcYthQ~s$VKR4Sl58yZ
zoSYCCqSGdO_Im3LIOL}H;(A<O@U%U1Cc}>bP!RNJ?hxERRO)l%4&7Oy{O!GM8>YoN
z+~Nw<PpeMlituEG5;<?HHxE{lH{0}s71e%6E?8+*Fy~oWCMR585iVJLDCxCbR6uFm
zn~2B}nb2MqZxtjtkt$z4+ENKdw=;`UQGHq2H>|X#9aPDv*9CUGYNZ@wYAgeV+s4<}
zd!QSV`>dvfv;CUneW@Y)_Ce*#H_uuSs8|o;xW_x}gP$;l9Q4MQWc;|B43@-_XP98R
znLpqlS#H9pYL~ug>a#8|Xy2&2y+ZQ9oVJ^kux90T)6u39MFf98f|({>Yu9V8f|Z@~
zBtLYolmaS@j!}?&+~>~o0dAfmAF*^3aTG`c%}OfIvT53M`Mp)t;*YYvxKY8tSx+hE
z$c!jxri{l6euIJ%2SHv&gEN`tE-QuF(y(XL4d5)rGO(?6<a^~^%Zi_q#iT<obB(zb
zn=e?+M6@I-y>_r%D8(&Q*<^ZtB1c)Z*GnV3h~}Ngae!iCzH*lMy;q`PnT8s8he3(-
z$gt=B@JF_0;^A9ppPMgS%h*ik@ryA{=d_=s6X|Ru>MK^Amy+!^aFLbSNJa>?g6q}5
zUP|;yG;nMCP9lqxQMX@J*^Je!ljoDF4{R=gdE2p3gB1Uf?0eTBSPsTQ{YY`%#fd5Q
z%~sGFqx9N$Uh$2gbydQ*lHq7M>EMU+vdeINUNKHTRN8*}_*)8-;-IHa1sv2J%AbK_
zryal>+~#^*bmVCyUYX~Q+qG3;G|De5*)e80U1sZMQL~x-(JY^_p6xxRpNBRf!kiL~
z1{2%drF+Tv*LU?qiR6?wlG^yhc|s+}r!TI#Yu$N=1sujib|}dqUIspsrMGp?^*8$(
zMZb72w2=^-aj4Ar8aPGH&D1rL@*8k5`d&aZ37CYEX%*>|HT<d%JQ3|suW|1vFSu_`
zNJXa!BVt;S)|<~Q?v5&5y7^6QGNyj}+Ko$Ci{E8q<f-iERI9QGB-DvT{nCx$it}7M
zsYJ{!ch9t@Kv-6+Zk|O~`^YR8kanfqax#fKak&_F=O`DwZowvSH+(;|BYSK0AmhLK
z`Ew!Zq_4kEzf~~aS<bi%f$&!J1$LWXNRS?GC}F~8i(2q6f6Q6|qP>Uyfy{vovUe13
zcphc^wd>$-4P<EoZhybZ&F8HO-Y(%wOzkk;Ak%yh7PX$>TW0hF57*zSMvdP^Q|g1>
zsNTizP(fE|y8?-StjDz5Cmfl8YH@H>&Otw|ESj#GcO@mSB4@9&f*uOSu<3SrHF-8N
z;drnnETw8PCNEL#t`kwS>5Fzf%nc+t@t^McLd)WWo?kXt2}Fxvvr3dC`P*~RKBmYT
zq-YzJ<I&WUx^9@>=-!-HD()}JVmG3BtG|%h1?X(7m+gcX2a|jldLAJJdF$}K6h1Nc
z>Ybn4e>RzoQ#nyB^t%%4Wxd;4T$o#q<?OOoc&H0y&r#|!MPO2VcYYX-ZOBa!q|daI
zMEzNeQxaQ}oSTjhPZ}K&XGBCcFp>m2*Q6$tBO=t{gU$gCjTk9^3O~8HoHr&QAdZwz
zI2LPY>kvAeB$}AVu6v5XhOwWzXu98t9zj4crdpH0%uXwu4r{YrU#YiPos_94r^Omn
zw_r=uNTa|@BEEW7M7KagP7YQ#j++UUbg%`Ru$%INK`JVqbc|)s0w2|`br^jMV~T~Q
z;8X+GuD^vz9k9HfP0?wN@t0nIck^JrC@P4AfA$C%-^AdJX!&h_t>4)(g~4zcg&?L)
zkySp{ct9ppq}qVFW__;uYOd<+6YGw_c9Qz+4T9U)7=gmX!&}s^6y_DA$Y6>9ZTQ7B
zer)vB5vZ-9d?{~QVW%gq8BLNC^2)s|5|p)CTIP$~Zn%zr!(+BM*sU9zwcj4@Octen
z!9pYU6PI_2eV3Iyo7<>yG`USnk@U->)%SdY9Fdu!Bdh4^TzR(f@croTSqYa$<W%$<
zXt2A<K?_g_7h7tS!#61%M}L-2Pr*Me8Psp@I?EFu#S4Vmh0vr0EbHgu;U^2<k@N?x
zH%IY<#0(@oAd(*(&0z+lLJkiLblDQ4HQ@(+`!Z;^uLOruzn2{=3*z<HUamyWuqABW
z`^ZYk_sh+5C|6D6PrfBrxZ4+Gy_OU%IW4g!Y|CN}G(3)G@s0PU3!kG9Wh{9^HNZ4?
z!*S)O{Pp)^?2)WBbvchm7sz0gObg}C8!tPc^AI>4>3A6F<Dsj#n!@v`b_0vMO>hP-
z@X8y%6k?al1dmM}g{oP<LY1_!My&tb<U#MK)}=*{Vwu0v@h$zEXvZq4-h@Re+AVKP
z(~kG7bFF`6eLreo-|5Lh)=a!ncE+R0fNUsf2hPx&MdJ4x(MGa{&7t2G2pKk7tqn}Q
zDV``LUQAJB^AVwX;*iWfY}6?}wao=kc<2)MZg-O-q<3$40~guQ=^}nm$>2oZ(}kO2
zx6ttQ@D#nOGQ<oWlO}5zK!*heTRxk+_l~@ecCF`_PCXB}VtnE>Eb?kP$!SgO9q$lb
zF<@?u{3r(Q<K1hO>h6FDYtfBUpOjxN9Z*twVPDVfyDduRu`8W_wNdRfH{KKUtv#D(
zY-G`!YEwwD7JBL_B68hZRq_30y_eC(XpuSU0~$zDXAp5-&&1}{xFIV93arjF?J{)a
z6131ebOuz@dDimI93dnKdlO!y25c1JiX6eTAM~crAp8agJVhD0F1N2dy;D>&(WO46
zTZ!GdQMCh)UTTO3owdUwM#jXKpavq<TgXT<<^D6p0v56p6UWj<m5~AE=HV+twVFJ}
z5oE#2lX^+BMAVt@s`H=4Gic)U#ys@pvAu}WmjDaMJ|5-zz5}o#o0xhOk9V2uzgOt@
zMWfJs1XY%x&n-1iO1>N|W@TehETIxwOKQ58XJnVJ)9UrX7+3p7GxX~<v*yHjvYJzt
zsSUr^>7YvZ<BnQSDOB*K^@7WHGP(V)6>MVr;5P=oyvtEvY1S_BRK0!DcEZa0$B46{
zf7p~BR(Kt^k634Jf8IMQ(skF?dixEUHt07L!&CQ_pQjitb`o+gB0L$8B#Zl-v#+s7
z&dJn(MUK9W2dqq4-y@09)<Z{f9oAVK=(Z}}zW*tmIKW?(TL6Lyd~c*h^dn7vj*a`^
zB6FU*8C|~vW-vdk_bWHpI)3(;);hd=s~hnCzrRk*N}4i+F+vt|2mnA65&-ZLKmxFJ
zbagXzaA0+@u+r2(0U#l#g0$SdUIGx1;eWjT5eQN5b;)8U=y-Um;X;JwMApC5a@Zm;
zpQgBCzmM=rUp;~3P*v#kYC|DR$t0WR!6Wbbl==9ywQL#6t!3AEA#Uu2sac><hD}yo
z6kXi`Y0?orrPQ6)@Ytq^TH!`h{`@I0+8=@qPN$Uv76PMN7~eV?6ZB@h_1(wHB*@CB
z_!?+o7&<2{&Wz+>6z*x%Wa7{%p--}`28{$)2_5;9q!>w-X{6>?c_Ybd*^EZ{yyh)q
z=E4l$Ed^HB?##S~1j)R4B#D;w8*+`2<}Dpj7On^d3!SwNB*JZP`;@9jWDC-W>e=;L
z%N|H%S{E!v#j+9)XK>f^6X(l_qK$P?8Y%dRO*q&^oTeyYz4Cdl_dj{|k|$8EG^L`<
z*w|8jCnQt9iy4$3C~Vu8q77mbWqF&sgXm2nfr(Ckb76M}P3_lQlZ9`)JaS&6NXGGi
z_Z|4VhXW+49Ye|5C6b!=m4317;XahhH_3!h;7k;%&X_cv+a-1Iw29ddBU6R2owS}u
z`}SW*YYJS{%GBh5rDZI1G<9(12<_MP4|!Ag_^$H5oZNhdF5CZrY}|GTVQOYAtW&}d
ztwk?lLRZIJ@FV1ywW9Qe9CcQa8?o=HIP@P;|HX;WKb$CAxt~oz0RR+<007KCoG^nz
z-CW&VOr2QmT>n9elK)GJQyqv34Ij?aRCW3|F)w5Zz+{Z)%mVfNAlVw}R9RjwC_n~U
zULP`AHc}hg?e=`EvxnB9X9ry?Bqs1SS--oS;NoiHD&M3YjZD_K-ef)$8zUgZPfFjg
zMa4+5y06#i<H)}7o_cL5f9>fp70o}GCoaVTrel*7_g!=JoEnyrwoH3UQBRzLZ=Hod
z$2})sYPENReVA-uo2esgD#pS%ZsI7GHn(%(5gMzo4O(XfF2T?8tHu|$jE$e1=m{~|
zs@DCx-pQovU6~l4sY*+~rZ`U&cLHBy-@J;$zJ7HRh!GUE|9H+lE;}*UFz@N34E@t&
zL~M9ydWn;wbrKU}QF2_Rw(XWT_qHflUA}aGAYvp)i$)`)(uxtmc4Vs-g&G|-`jh*S
zCcpghaky-P%SC0F81<n)xaZ)@ZGMtKH#v5da=>?1_esJxCs=K*eu3WpE}H1!HVrep
zTygY6G)aDpE?j#FQpM+yL5J`4m4_LGsWXcC-!bYGs!jFqYwoC$QF;K{3`x`k(|Vm6
zIa3mFA2}qX?1JeLGk}+g&n^7pf;IW=A$oKupThHN($_+FTFN4SXk%ns-qZjU!R2Dk
zI4J$KVM7eb%0Q;mh9&@7IY#gOZRfyq&r3RtQ{*7ij)~C_DOk>i6wE84Ob`#5MLO{z
z*~%PkZfxmeyUeMVd`g}G&zr>1nzd>-+f96Xz}vbB5&)36tdHVNyLv01m^dxZv5#ZV
zJ&Bbe(+3TyTxZDbJ>ddzI%BoY^L!H1_T20W_T#!ZZc3f)q2N}BK5+Cp!GgZi!&DMK
zL?Ztaw#%wYU+ii@WA^FC!!Ux35TPVO8}RWf)S%zrqYGDK%~17t$n<zBMW(Kyt?K>}
zHnLb+=~y`{R}CTMP=1C+1s=~J;HeeC@4S*&+t}Ly%-iJh!6WNJD~@}PJy+WK@8(PK
z@wtSk6E<{SO)nFX`oi*mhcL8L9Nkuh*wk{t@|&iJ67YGY=Nc7v><v)k$ScgJJP1c#
z8v}x~_ob=~CD3BoL?Xmgf4lbl0)smo?7f^@9w}A8ifK8gLE$J}NTNUs_W{ghw*{C(
zpNu58YS%<WO`L`^e2}(Ox~f!L3thgeVgxmgx4eeXJ?ll9T&#R++5}pbS&`$nHkOHf
zqo^t2xwdT1uz{XX_yOxKN)yl^4Bqh}NOmyX>chq~E=)Q6<5LH}L@vgR&yo=?Mf0-x
zOhwJEWsDL&JA7>8%cK&2F3BQjv92fhcz+&qTDj){krg?YsAvJCb=M;OiSj@q@pxuI
zC(Ws?T4)Vv4lVxU6!5tSl`rr}!`6-^hiHvX+<7BxbMivZvz&)*?JEQfiM)>;;rt~O
ze_2xC#hc*VjGAoQF|Np|V_FJ-z3jUC+RtVTfaSNdY|VuqP(ep@g~+NI@ox4$%XEVQ
z5-u;XLRdRHdQGFdbZ)%&jc}Dcfd(c8ck}<~n#w|O6<aSS_^~_+ru4z5eW9Z&WT9tA
zJ7ll>1uTHpCH-+a0pmjg-n;@})YU&TYR&SRsCu1mZ_i(CJtHspeW$2bBro)uDWS5V
z3}l_s)z)P0u*%#=HgKWurDKLWOJyy^TpGade0nTA{IcXJ%-OW<F4C1Q1?cTf+^iIP
zgx8G8`qLc=Ph`6G^H(yVBV}=3fMA*S-uOruvP`&TM4I+F{Lts^+;KL=+nb2SvY%lc
zTcazsdd5mZZB);NQ0RizTFt4YV<*!g+^T<mtGlrDyr;%z-9(*<r0G-g-RBRQSoYPd
zdb<(YX>mL=1&cUe#stoj<_kfYxn4~U3xUY^)l1hM(5vrnh;Q+)qulj0aBZxVCev}!
zLt3?IZ@ez6JCAMn<qe0Q2nwmpLVo<LP|LIB|JC5vYR`<_#9;IMjPU+{sidy^bXmQB
zECPhTtE8rmwpNy|ZmbZikCWh6z3e1I7rvrW=VnYzCZpKLI1_>#VcP=>?qyT=S`jMo
zXsDoOkoVIln|#U$7yBus1gtSOXcz+=m{s31E9fa!)4NYEO5CiTNb8vGBLF!$bGtZk
z!rKo7R?asDD|8hz1vV;o#|}p<mz&WQNT(&Lf9Zoqb^XGzu#TuZ`9Jt6_`rdsG+j3$
z_XXvcBssa2cu#w$+lr0R7diI2t7ab65`rZ6-5rSY8*}-=uM>Br!a`O|nLo*~QL8-t
zEoDTg>Q}ozmiM27|L=rhSF4v(iqi_rj4bl=SPCpmQxntmYV6;*Hh;Nu%)5^&s<5zr
zg)2>rD<W}L5QtB5KE5&R=X@EefSCkGQp5O7BhEPofwYDQlVfqD=o6%)hHI0gk-_Lu
zA9lkcXe}*}(;qTkXcP;rxHu#H8N3h>36TD?YW>d@gaG&t8uniZlt}-1c>8Pp6`UU|
z^auC<G0Oc<z<<~I{|Q(etnv!*|C$5-p5)(2_pc=B3I9C>|BmqY8vYC6HPOGV=z9f}
S7k@dR{Mj~to^2rd%la>e`BfAE
new file mode 100644
--- /dev/null
+++ b/experiments/e10s-enabled-aurora/manifest.json
@@ -0,0 +1,18 @@
+{
+  "publish"     : true,
+  "priority"    : 2,
+  "name"        : "Multi-process Firefox A/B test",
+  "description" : "Measure the effect of multi-process Firefox",
+  "info"        : "<p><a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=1193089\">Related bug</a></p>",
+  "manifest"    : {
+    "id"               : "e10s-enabled-aurora-20151020@experiments.mozilla.org",
+    "startTime"        : 1442707200,
+    "endTime"          : 1446336000,
+    "maxActiveSeconds" : 864000,
+    "appName"          : ["Firefox"],
+    "channel"          : ["aurora"],
+    "minVersion"       : "43.0a2",
+    "maxVersion"       : "43.0a2",
+    "sample"           : 1.0
+  }
+}