Page MenuHomePhabricator

[XL] xLab Client Library: Convert to Kotlin and bring into app repo.
Closed, ResolvedPublic8 Estimated Story Points

Description

It would be maximally beneficial if the xLab client library code could be moved to become a submodule of the Android app repo.

  • If the library is converted to Kotlin, it would automatically take advantage of Kotlin-specific optimizations, and would allow us to use kotlinx.serialization, which is the compile-time serialization library we use throughout the app.
  • It would de-duplicate a lot of code (and remove unnecessary network calls) by sharing code between the xLab logic and our current legacy MEP logic, since both of these share the same model classes, such as stream configurations etc.

Event Timeline

Dbrant renamed this task from xLab Client Library: Convert to Kotlin and bring into app repo. to [XL] xLab Client Library: Convert to Kotlin and bring into app repo..Nov 24 2025, 6:42 PM

Code review posted at https://github.com/wikimedia/apps-android-wikipedia/pull/6179#pullrequestreview-3601109884 . Thanks @Dbrant for the port, tests, and more, including the extensive renaming.

Noting the following quotes from IM for collective memory. I think the removal from Metrics Client would be an okay follow-on task for Experiment Platform Team in Test Kitchen tasks, possibly as a fast follower of the rename of things to Test Kitchen (including the client SDK pieces)...or scoped from T412028: [SPIKE] Scope bringing Kotlin SDK up to date and then tasked in a separate epic.

I'm assuming there's no CI step that would require the artifact from Gitlab going forward. @Dbrant that sound right?

Yep, the old Java library is no longer used, and should be safe to deprecate entirely.

do you have an impression of whether you'd want an Android engineer to also always review and approve any changes going into that SDK?

As long as the pull-requests are made to the SDK side of the [Wikipedia for Android] repo (i.e. within the analytics/testkitchen package), then they can be reviewed/merged entirely by Experiment Platform engineers, until we're ready to integrate with the SDK in earnest from the app.