In a meeting, @phuedx and @nettrom_WMF met to discuss approaches to sampling users for experiment enrollment. We reviewed the GrowthExperiments approach as well as PageSplitterInstrumentation.php and mediawiki.experiments.js
From our conversation, we drafted the following preferred properties:
- Does not require a backend store. Example: GrowthExperiments stores group assignment in the user_properties table.
- Can sample on a variety of levels such as page, session, user.
- Will sample consistently if given the same starting value (e.g. if we're sampling on page ID, the same page ID will always return the same assignment).
- Scales to sample when needed. For example, we can sample when a user visits a specific page and thereby not assign groups to users who never visited that page.
There might be aspects related to this that we did not capture, or where the descriptions can be improved. We're therefore looking for @mpopov to review and provide input.