Because
* We need to extend experiments to support segment functionality
* We want to be able to update the API for Jetstream without affecting
the clients that consume v6
This commit
* Creates a new v8 api based on the existing v6 api to support adding
segments
Fixes#11290
Adds ADR version of decision brief to switch desktop experiments to
`group_id` as randomization and analysis unit.
---------
Co-authored-by: Mike Williams <102263964+mikewilli@users.noreply.github.com>
Because
* We have new consumers for Experimenter's public read only API whose
concerns diverge from those of the existing V6 consumers (ie
clients/jetstream)
This commit
* Introduces the V7 API with a schema and beahviour similar to V6 but
not intended to be sent to clients and so is not constrained by any
backwards compatibility or client constraints
* V7 is read only and cached
fixes#10638fixes#10639fixes#10640
Because:
- the v6 API currently returns all experiments and takes a long time to
query;
- we have an increasing number of API consumers; and
- they are only intersted in specific subsets of experiments
This commit:
- adds filters to the v6 experiments APIs for application, feature
config slugs, experiment status, localization status, and first run
status (where applicable).
Fixes#10447
Because
* We now have the ability to validate feature values using FML in Python
* We are using the CodeMirror JSON editor for feature values
* We can use the dynamic linter module in CodeMirror to do inline FML
validation for feature values
This commit
* Creates an API endpoint for PUTing a feature value and receiving an
array of FML errors
* Attaches that API to the feature value editor in CodeMirror
fixes#9478
<img width="1179" alt="Screenshot 2024-03-12 at 17 54 57"
src="https://github.com/mozilla/experimenter/assets/119884/b5214e7b-c1b7-4b61-b205-2693f6452330">
Because
* We need to run some diagnostic launches on Normandy until it's
deprecated
* We will launch one for each new release
* We need to target current versions
This commit
* Adds versions 121-140
fixes#10349
Because
- We need a way to change guardrail metric definitions
- Guardrails are hardcoded in Experimenter (so guardrail name changes
break this functionality)
This commit
- Proposes short-term solutions for versioning guardrail metric
definitions
Fixes#10266
Because
* We had intended to replace graphql with django rest framework
* We started by reimplementing the config endpoint in rest framework
* We abandoned the rest framework strategy to focus instead on htmx
* The v5 config serializer still exists but was never hooked up to
anything
* It can be safely removed
This commit
* Removes the v5 config serializer
fixes#10257
Because
* We need a way to track the published date of a recipe so that clients
can use it as a strict ordering for evaluating recipes
* We want to set it when recipes are published to remote settings
* It should always be the most recent publish date for launching
experiments/rollouts, but not overwritten after launch
This commit
* Adds a publish date field to NimbusExperiment
* Adds it to the V6 serializer
* Sets it in the kinto tasks
fixes#9786
Co-authored-by: Charlie <chumphreys@mozilla.com>
Because
- Monitor uses staging and production channels
This commit
- Add new channels - `staging` and `production`
- Update the monitor app to use those channels
fixes#9405
Because
* Local builds of IOS will report the channel as developer
* QA often uses local builds for testing
* They have been forced to manually alter recipes to channel developer
for testing
This commit
* Adds developer as a supported channel for IOS to facilitate QA testing
Becuase
- localization automation requires knowing the targeted locales for an
experiment; and
- that information is only currently available indirectly via the
`targeting` field
this commit
- adds serialization for the `locale` field.
Because
- We don't have transition diagrams for the cancel states
This commit
- Adds mermaid diagrams for the following:
- Draft -> Publish -> Cancel
- Preview -> Publish -> Cancel
- Live rollout -> Update -> Cancel
- Live experiment -> End enrollment -> Cancel
- Live -> End -> Cancel
Because
- we need to expose draft experiments for several reasons (generating
previews for jetstream, integration with automation for localized
experiments, ...)
this commit
- adds a new API endpoint to return draft experiments, optionally
filtered by the `is_localized` field.
Because
- Jetstream analysis results do not have a well-defined schema
- Jetstream (export) and Experimenter (ingest) need to be in sync for
the data sent to avoid errors/bugs
- the current approach for shared schemas (typescript schema in
nimbus-shared) perpetuates fragmentation in Nimbus ecosystem (and is not
widely used)
This commit
- documents the decisions for a) defining the schema, and b) where to
put it
Because
- we want to support localized experiments in Nimbus
this commit
- updates our serializers to support localized experiments.
Co-authored-by: Jason Prickett <jprickett@mozilla.com>
Co-authored-by: Jason Prickett <jprickett@mozilla.com>
Because...
- We are switching over to use [Mermaid]() for our sequence diagrams
These commits...
1. Adds the new sequence diagrams using Mermaid
2. Removes the old ones
3. Removes all of the old sequence files and images
4. Updates the table of contents
----
Each of the four ^ corresponds to one of the commits. It might be
easiest to look at the README in the [first
commit](2c0db7cb3a)
since it has both the old diagrams and the new ones side by side.
Because
- We require some large changes to the core structure of the Nimbus SDK
to support Nimbus for the web
This commit
- Adds ADR 0009
---------
Co-authored-by: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com>
Because
- The documentation in the `experimenter/experimenter/docs` folder
applies to Nimbus as a whole
This commit
- Moves that docs folder to the repository root
- Updates url paths in relevant docs
---------
Co-authored-by: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com>