Experimentation Lab
Test Kitchen (previously Metrics Platform, Experimentation Lab, xLab) is a platform (suite of tools) that helps Wikimedia teams make data-driven decisions about product experiences. Use Test Kitchen to create instrumentation that captures click rates, or to run an A/B test comparing conversion rates between treatment and control. Get started by choosing a workflow below.
Workflows
Guides
- Create an instrument
- Measuring clickthrough rates
- Local development setup
- Decommission an instrument
- Automated analysis of experiments
- Converting queries for product health monitoring
- Regulation section
Templates
- Measurement plan
- Instrumentation spec (for non-experiment instrumentation)
- Instrumentation spec for experiments
- Experimentation scorecard
Reference
- App schema
- Web schema
- Custom schemas
- Contextual attributes
- Interaction data
- Stream configuration
- Analytics sampling
- Feature Availability
Meta
Experimentation Lab maintainer documentation
- Maintainer introduction
- Architecture
- Deploy client libraries
- Validate events
- MPIC administration
- Custom Data Monitor
- MPIC Design Document
Support
If you have questions that are not covered by these pages, or additional guidance is needed, please don't hesitate to reach out using the Experiment Platform intake process.
Contributing
Contributions to the Experimentation Lab client libraries are most welcome and appreciated. Learn more about contributing to Experimentation Lab development
About
Built on the Event Platform, Test Kitchen provides standardized algorithms, behaviors, and basic necessities for web and app instrumentation, including:
- a specialized Event Platform client designed to require less work in creating instrumentation
- a predefined core interaction schema covering the most common data fields
- a library of event schemas designed for use across a wide range of projects
- a library of already existing instruments to be reused directly or as a starting point
- easy means to build new schemas to further enrich events with contextual data
- the ability to mix in different schemas depending on your needs
- standardized session ID generation, consistent across MediaWiki, Android, and iOS
- standardized session expiry
- determining which events are in-sample or out-of-sample based on a specific identifier (currently: pageview, session, or app install ID).
To learn more about Test Kitchen and which components are available to use, see the FAQ.
When to use Test Kitchen
Test Kitchen is a good fit for products within MediaWiki without pre-existing Event Platform instrumentation. Here are a few situations where the Event Platform would be a better option for creating instrumentation:
- Browser extensions, backend services outside of MediaWiki, or programming languages not covered by the xLab API
- Websites outside of MediaWiki (although these sites can still use the Experimentation Lab schema conventions)
- Existing features instrumented using the Event Platform. In this case, it can be preferable to continue to use the Event Platform to keep everything consistent
Background
Previously, different teams implemented their own analytics solutions in isolation from one another. Those solutions were typically based on the Legacy EventLogging pipeline and, more recently, the Event Platform. Test Kitchen is an effort to unify that previous work and to establish uniformity and consistency across platforms. Its objectives include:
- making it easier to implement and maintain instruments. Test Kitchen provides the APIs and protocols that MediaWiki developers need to create sophisticated instruments in as few lines of code as possible while maintaining quality, rigor, and safety.
- making it easier for analysts to support teams which are not their primary teams. Previously, every instrument has its own quirks and conventions, which need to be remembered by analyst that works with the data produced by the instrument – including analysts that are providing temporary support.
- making it easier to leverage data from multiple platforms to yield insights into how our users use our whole ecosystem of products in unison.
All pages
- API
- Analytics/Fragments
- Analytics sampling
- App schema
- Architecture
- Architecture/GrowthBook JS SDK Analysis
- Automated analysis of experiments
- Automated analysis of experiments/Converting queries for product health monitoring
- Automated analysis of experiments/Prepared metrics
- Conduct an experiment
- Contextual attributes
- Contextual attributes/Java
- Contextual attributes/JavaScript
- Contextual attributes/PHP
- Contextual attributes/Swift
- Contribute
- Core properties
- Create an instrument
- Custom Data Monitor
- Custom schemas
- Decision Records
- Decision Records/Changing Sampling During Experiment
- Decision Records/Deprioritize Custom Data
- Decision Records/Experiment end behaviour
- Decision Records/Remove 24h requirement
- Decision Records/Single Table Per Base Schema
- Decisions informed by experiments
- Decommission an instrument
- Demos
- Deploy client libraries
- Documentation maintenance
- Experiment Notes
- FAQ
- Feature availability
- Glossary
- Incident reports
- Incident reports/2028-09-17 MinT for Readers AA test missing subject IDs
- Instrument list
- Interaction data
- JavaScript API
- Java API
- List of active and archived experiments
- Local development setup
- MPIC
- MPIC/Administration
- Maintainer introduction
- Measure product health
- Measuring clickthrough rates
- Overriding experiment enrollment
- PHP API
- Privacy considerations
- Proposals
- Regulation section
- Sampling
- Schemas
- Stream configuration
- Swift API
- Troubleshooting
- Validate events
- Web schema