mozilla / mozilla/experimenter

Warn when a desktop delivery uses deprecated fxms-message-N placeholder features

Open
#17,149 0 comments 0 reactions 1 assignee View on GitHub

@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:

  1. Collect attached feature configs whose slug starts with fxms-message-. None, return.
  2. Return if firefox_min_version is below MIN_VERSIONED_FEATURE_VERSION[DESKTOP]. Below that floor get_versioned_schema_range falls back to the unversioned schema and would wrongly report the replacement as available.
  3. Look up the fxms-message feature config. Absent, return.
  4. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.