Skip to content

AB Testing Architecture #12789

Description

@Sadashii

Feature Request

Problem / Opportunity

Describe: Open Library lacks a way to test layouts/features/designs partially by releasing to a portion of patrons to gather more insights or decide between two+ clashing options.

Justify: Implementing a testing framework allows us to make design decisions based on actual patron behavior (e.g., measuring if a layout increases borrowing rates or registrations). Doing this through a central system prevents layout glitches (flickering) and keeps pages loading fast.

Define Success:

  • Ability to easily configure experiments / experiment splits.
  • Patrons getting the same experience in different visits (sticky groups)
  • Abilit to manually override the experiment group for testing.

Proposal

Brief Overview of Proposed Solution
We have set up a lightweight A/B testing framework that runs on both the backend and frontend:

  • Experiment Registry: A single configuration file to list active tests and variant distributions (e.g., 50% group A, 50% group B).
  • Stable User Assignment: Patrons are assigned to a group using their account identifier or session, ensuring they see the same layout on every visit.
  • Frontend Integration: Webpage scripts can easily check which group the user is in to adjust UI components on the fly.
  • Testing Overrides: Developers can append parameters to page URLs to easily preview different test groups.

Breakdown

Implementation Details (for maintainers)

Related files

Refer to this map of common Endpoints:
*

Requirements Checklist

Checklist of requirements that need to be satisfied in order for this issue to be closed:

  • [ ]

Stakeholders


Instructions for Contributors

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Lead: @mekarpelesIssues overseen by Mek (Staff: Program Lead) [managed]Metric: RetentionSurface the value we have and give patrons reason(s) to stick aroundNeeds: BreakdownThis big issue needs a checklist or subissues to describe a breakdown of work. [managed]Needs: Community DiscussionThis issue is to be brought up in the next community call. [managed]Needs: Staff DecisionIssues that are blocked on a staff member's decisionPriority: 2Important, as time permits. [managed]Type: Feature RequestIssue describes a feature or enhancement we'd like to implement. [managed]

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions