Bug 1349629 - Create in-tree docs for the telemetry experiment annotation API. r?chutten draft
authorAlessio Placitelli <alessio.placitelli@gmail.com>
Wed, 12 Apr 2017 18:04:16 +0200
changeset 561901 297cd55a7a183bd7ac2842d3414372e4b3970805
parent 560921 f40e24f40b4c4556944c762d4764eace261297f5
child 624112 56f7c1b9f0aabe2c4b820410e0b1ebfa74ea47d7
push id53890
push useralessio.placitelli@gmail.com
push dateThu, 13 Apr 2017 08:21:38 +0000
reviewerschutten
bugs1349629
milestone55.0a1
Bug 1349629 - Create in-tree docs for the telemetry experiment annotation API. r?chutten MozReview-Commit-ID: ACNuqpklCp6
toolkit/components/telemetry/docs/collection/experiments.rst
toolkit/components/telemetry/docs/collection/index.rst
new file mode 100644
--- /dev/null
+++ b/toolkit/components/telemetry/docs/collection/experiments.rst
@@ -0,0 +1,38 @@
+=====================
+Experiment Annotation
+=====================
+This API allows privileged JavaScript to annotate the :doc:`../data/environment` with any experiments a client is participating in.
+
+The experiment annotations are sent with any ping that includes the :doc:`../data/environment` data.
+
+The JS API
+==========
+Privileged JavaScript code can annotate experiments using the functions exposed by ``TelemetryEnvironment.jsm``.
+
+The following function adds an annotation to the environment for the provided ``id`` and ``branch``. Calling this function repeatedly with the same ``id`` will overwrite the state and trigger new subsessions (subject to throttling).
+
+.. code-block:: js
+
+    TelemetryEnvironment.setExperimentActive(id, branch)
+
+This removes the annotation for the experiment with the provided ``id``.
+
+.. code-block:: js
+
+    TelemetryEnvironment.setExperimentInactive(id)
+
+This synchronously returns a dictionary containing the information for each active experiment.
+
+.. code-block:: js
+
+    TelemetryEnvironment.getActiveExperiments()
+
+.. note::
+
+    Both ``setExperimentActive`` and ``setExperimentInactive`` trigger a new subsession. However
+    the latter only does so if there was an active experiment with the provided ``id``.
+
+Limits and restrictions
+-----------------------
+To prevent abuses, the content of both the experiment ``id`` and ``branch`` is limited to
+100 characters in length.
--- a/toolkit/components/telemetry/docs/collection/index.rst
+++ b/toolkit/components/telemetry/docs/collection/index.rst
@@ -16,34 +16,28 @@ The current data collection possibilitie
 * :doc:`histograms` can efficiently record multiple data points
 * ``environment`` data records information about the system and settings a session occurs in
 * :doc:`events` can record richer data on individual occurences of specific actions
 * ``TelemetryLog`` allows collecting ordered event entries (note: this does not have supporting analysis tools)
 * :doc:`measuring elapsed time <measuring-time>`
 * :doc:`custom pings <custom-pings>`
 * :doc:`stack capture <stack-capture>` allow recording application call stacks
 * :doc:`Use counters <use-counters>` measure the usage of web platform features
+* :doc:`Experiment annotations <experiments>`
 
 .. toctree::
    :maxdepth: 2
    :titlesonly:
    :hidden:
    :glob:
 
    scalars
    histograms
    events
    measuring-time
    custom-pings
    stack-capture
+   experiments
    *
 
 Browser Usage Telemetry
 ~~~~~~~~~~~~~~~~~~~~~~~
 For more information, see :ref:`browserusagetelemetry`.
-
-Experiment Annotation
-~~~~~~~~~~~~~~~~~~~~~
-Experiment annotations can be added through the API exposed in ``TelemetryEnvironment.jsm`` and are collected in the :doc:`environment <../data/environment>`:
-
-- ``TelemetryEnvironment.setExperimentActive(id, branch)``, adds an annotation to the environment for the provided ``id`` and ``branch``. This triggers a new subsession.
-- ``TelemetryEnvironment.setExperimentInactive(id)``, removes the annotation for the experiment with the provided ``id``. This triggers a new subsession.
-- ``TelemetryEnvironment.getActiveExperiments()``, returns a dictionary containing the informations for each active experiment.