The android SDK needs to be translated from Java to Kotlin, then brought up to date with Test Kitchen's current requirements.
This is a spike to plan out the work needed to bring up to date once the conversion to Kotlin is complete.
The android SDK needs to be translated from Java to Kotlin, then brought up to date with Test Kitchen's current requirements.
This is a spike to plan out the work needed to bring up to date once the conversion to Kotlin is complete.
| Status | Subtype | Assigned | Task | ||
|---|---|---|---|---|---|
| Open | None | T413855 Remove Java Metrics Platform/Test Kitchen code | |||
| Resolved | Dbrant | T401023 [XL] xLab Client Library: Convert to Kotlin and bring into app repo. | |||
| Resolved | cjming | T412028 [SPIKE] Scope bringing Kotlin SDK up to date |
The recent refactor of the Java MPC to Kotlin (T401023: [XL] xLab Client Library: Convert to Kotlin and bring into app repo.) was a direct port wherein it functions as a core event client (i.e. the client submits an interaction). It has the event submission, config, context, and sampling components but it does not provide an experiment-shaped wrapper for events, nor instrument retrieval/event-send capabilities.
The task is to bring the Test Kitchen Kotlin library to functional parity with the Test Kitchen JavaScript + PHP (note that imminent changes introduced in T367034: TestKitchen Extension: Merge PHP MetricsPlatform client library will inform suggested Kotlin updates below) SDKs and current platform requirements (including future work to provide exposure logging T414729: Add Experiment#logExposure method to SDKs + curated contextual attributes T414726: Include curated set of contextual attributes with exposure events). Per discussion with team, this work will NOT be included at this time. We will port over exposure logging after it has been successfully implemented on web.
Ideally all the SDKs should:
The JS/PHP SDKs in their current incarnation sit in between experiment enrollment and event logging by taking standardized enrollment results and turning them into correctly-shaped events. They model an Experiment-type object that knows an experiment name and assigned variant, how/where to log events, and how to attach context to events. They also (to be implemented in PHP) provide basic functionality for getting instruments and sending valid events for guardrail and product health metrics.
In order for Kotlin to become more about event construction and contextual attributes, it needs:
3. Exposure logging event
(exposure logging N/A for now)
When setting up an A/B test for any feature, subclass from ABTest.kt, which automatically assigns the current user into a test bucket.
Some other questions/notes coming out of Slack/Phab: