mozilla / mozilla/experimenter
Warn when a desktop delivery uses deprecated fxms-message-N placeholder features
@jaredlockhart is already working on this.
Since Sep 4, 2026.
- Dominant language
- Python
- Stars
- 151
- Forks
- 229
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 212
Description
Problem
Firefox 152 added a single co-enrolling desktop Nimbus feature fxms-message (allowCoenrollment: true), which replaces the 25 individual non-co-enrolling placeholder features fxms-message-1 through fxms-message-25. Added upstream by Bug 1961268, mozilla-central 455b1fe98c5f. From that commit: "There's no need to have more than one, since it won't behave any differently."
The numbered placeholders still exist and still work, so nothing is broken, but a delivery that only targets versions where fxms-message is available should use it. The numbered features each occupy a single feature slot, so two deliveries using the same numbered ID cannot both enroll a client, while fxms-message allows any number of simultaneous enrollments.
Nothing currently tells an author this.
Proposed change
Add a non-blocking review warning, not a launch-blocking error, on the existing shared warning card. #17087 made this a serializer-only change.
Add _validate_desktop_fxms_message_coenrollment to NimbusReviewSerializer, dispatched from the existing desktop block at the end of validate(). It sets self.warnings["fxms_message_coenrollment"] when a desktop delivery attaches a numbered placeholder AND the co-enrolling replacement is available across the delivery's entire targeted version range.
Determine availability from the manifest data rather than hardcoding a version number. Experimenter already ingests this: allow_coenrollment is a field on NimbusVersionedSchema populated by load_feature_configs, and fxms-message is absent from every versioned manifest below v152.0.0. So NimbusFeatureConfig.get_versioned_schema_range(min, max) answers the question directly, and the check stays correct if the manifest changes.
Control flow:
- Collect attached feature configs whose slug starts with
fxms-message-. None, return. - Return if
firefox_min_versionis belowMIN_VERSIONED_FEATURE_VERSION[DESKTOP]. Below that floorget_versioned_schema_rangefalls back to the unversioned schema and would wrongly report the replacement as available. - Look up the
fxms-messagefeature config. Absent, return. - Warn only if the range yields schemas, has no unsupported versions, and every schema allows co-enrollment.
Also add a REVIEW_WARNING_LABELS entry so the card shows a readable label rather than the humanized fallback.
Acceptance criteria
- A desktop delivery attaching a numbered placeholder, whose whole targeted range supports
fxms-message, shows a non-blocking warning naming the offending feature IDs and the replacement. - No warning when the targeted range includes versions without
fxms-message. - No warning when no numbered placeholder is attached.
- The warning never blocks launch or review.
- Non-desktop applications are unaffected.
Notes
Follow-up to #17087, which built the shared warning path this uses.
┆Issue is synchronized with this Jira Task
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.