Skip to content

EXP-5700: Change from global rollout opt-out to experiments and rollouts separately (#6888)#6919

Merged
gruberb merged 1 commit intomainfrom
EXP-5700-rollouts-experiments-fixed
Sep 3, 2025
Merged

EXP-5700: Change from global rollout opt-out to experiments and rollouts separately (#6888)#6919
gruberb merged 1 commit intomainfrom
EXP-5700-rollouts-experiments-fixed

Conversation

@gruberb
Copy link
Member

@gruberb gruberb commented Aug 30, 2025

  • Adding db migration from v2 to v3 due to the flag change
  • Removing the old set_global_rollout function
  • Adding set_experiment and set_rollout functions
  • Export four new functions via UDL
    • get_rollouts_user_participation
    • set_rollouts_user_participation
    • get_experiments_user_participation
    • set_experiments_user_participation

Marked set_global_user_participation and get_global_user_participation as deprecated

Pull Request checklist

  • Breaking changes: This PR follows our breaking change policy
    • This PR follows the breaking change policy:
      • This PR has no breaking API changes, or
      • There are corresponding PRs for our consumer applications that resolve the breaking changes and have been approved
  • Quality: This PR builds and tests run cleanly
    • Note:
      • For changes that need extra cross-platform testing, consider adding [ci full] to the PR title.
      • If this pull request includes a breaking change, consider cutting a new release after merging.
  • Tests: This PR includes thorough tests or an explanation of why it does not
  • Changelog: This PR includes a changelog entry in CHANGELOG.md or an explanation of why it does not need one
    • Any breaking changes to Swift or Kotlin binding APIs are noted explicitly
  • Dependencies: This PR follows our dependency management guidelines
    • Any new dependencies are accompanied by a summary of the due diligence applied in selecting them.

@gruberb gruberb force-pushed the EXP-5700-rollouts-experiments-fixed branch 2 times, most recently from aba5fbe to 7008bb8 Compare August 30, 2025 13:12
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR transitions from a global rollout opt-out system to separate experiment and rollout participation controls, providing users more granular control over their participation in these different types of testing.

  • Adds database migration from v2 to v3 to handle the flag change
  • Replaces global participation API with separate experiment and rollout participation controls
  • Exports four new UDL functions for getting/setting experiment and rollout participation separately
  • Marks global participation functions as deprecated while maintaining backwards compatibility

Reviewed Changes

Copilot reviewed 27 out of 28 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
components/nimbus/src/stateful/persistence.rs Implements database migration v2→v3 and adds new participation flag keys
components/nimbus/src/stateful/enrollment.rs Adds separate functions for getting/setting experiment and rollout participation
components/nimbus/src/stateful/nimbus_client.rs Updates client to support separate participation controls with deprecated global fallback
components/nimbus/src/enrollment.rs Introduces Participation struct and updates evolver to use separate flags
components/nimbus/src/nimbus.udl Exports new participation functions via UDL interface
megazords/ios-rust/Sources/MozillaRustComponentsWrapper/Nimbus/Nimbus.swift Implements iOS wrapper for new participation controls
components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt Implements Android wrapper for new participation controls
Test files Updates tests to use new participation model and adds migration tests

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@gruberb gruberb force-pushed the EXP-5700-rollouts-experiments-fixed branch 3 times, most recently from 8e42356 to 35e8cc9 Compare August 30, 2025 13:14
@gruberb
Copy link
Member Author

gruberb commented Sep 3, 2025

@freshstrangemusic Can we try to get this in again?

@gruberb gruberb force-pushed the EXP-5700-rollouts-experiments-fixed branch 3 times, most recently from c9ffceb to c388b27 Compare September 3, 2025 15:42
…uts separately (#6888)

- Adding db migration from v2 to v3 due to the flag change
- Removing the old set_global_rollout function
- Adding set_experiment and set_rollout functions
- Export four new functions via UDL
	- get_rollouts_user_participation
	- set_rollouts_user_participation
	- get_experiments_user_participation
	- set_experiments_user_participation

Marked `set_global_user_participation` and `get_global_user_participation` as deprecated
@gruberb gruberb force-pushed the EXP-5700-rollouts-experiments-fixed branch from c388b27 to a1892b3 Compare September 3, 2025 16:01
@gruberb gruberb added this pull request to the merge queue Sep 3, 2025
Merged via the queue into main with commit cf4f4a8 Sep 3, 2025
14 checks passed
@gruberb gruberb deleted the EXP-5700-rollouts-experiments-fixed branch September 3, 2025 17:06
gruberb added a commit that referenced this pull request Sep 18, 2025
github-merge-queue bot pushed a commit that referenced this pull request Sep 19, 2025
* Revert "EXP-5700: Change from global rollout opt-out to experiments and rollouts separately (#6888) (#6919)"

This reverts commit cf4f4a8.

* Revert "EXT-5700 Remove marking functions and variables as deprecated (#6927)"

This reverts commit 9d71d16.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants