[Discuss] Undeprecate use of percentage-of-time Feature Flags

What does this MR do?

Not necessarily meant to be merged, just trying to get feedback for now!

We had deprecated use of percentage-of-time FFs: https://docs.gitlab.com/ee/development/feature_flags/controls.html#percentage-of-time-roll-out

The reasoning was that in face of deploying new features, a user should experience consistent behavior so that the same user always falls into the same on/off bucket.

I think this is a valid thing to say, but misses several other use cases where pct-of-time FFs would lead to better user experience in the presence of failures, or are even necessary:

  1. gitlab_com_derisk rollouts: These kinds of feature flags do not typically introduce new features. They are put in place to de-risk a structural change with no visible effect to users such as refactors. If there were errors during the rollout, using pct-of-actors leads to dramatically worse user experience: when rolled out to say 25%, 1 in 4 users on our website will experience 100% of these failures i.e. essentially a complete outage on this code path. With pct-of-time, only 1 in 4 requests would fail for any given user.
  2. Not all code paths can be allocated to an actor. There are valid use cases where the implementation has no actor associated with it. A cron job is a good example: if it performs cleanup or pre-caching, to name just two examples, what user or group would this be associated with?

I think we should un-deprecate percentage-of-time FFs and let developers decide what is the best tool to get their job done.

Related issues

MR that spawned this discussion: !172378 (merged)

Author's checklist

If you are a GitLab team member and only adding documentation, do not add any of the following labels:

  • ~"frontend"
  • ~"backend"
  • ~"type::bug"
  • ~"database"

These labels cause the MR to be added to code verification QA issues.

Reviewer's checklist

Documentation-related MRs should be reviewed by a Technical Writer for a non-blocking review, based on Documentation Guidelines and the Style Guide.

If you aren't sure which tech writer to ask, use roulette or ask in the #docs Slack channel.

  • If the content requires it, ensure the information is reviewed by a subject matter expert.
  • Technical writer review items:
    • Ensure docs metadata is present and up-to-date.
    • Ensure the appropriate labels are added to this MR.
    • Ensure a release milestone is set.
    • If relevant to this MR, ensure content topic type principles are in use, including:
      • The headings should be something you'd do a Google search for. Instead of Default behavior, say something like Default behavior when you close an issue.
      • The headings (other than the page title) should be active. Instead of Configuring GDK, say something like Configure GDK.
      • Any task steps should be written as a numbered list.
      • If the content still needs to be edited for topic types, you can create a follow-up issue with the docs-technical-debt label.
  • Review by assigned maintainer, who can always request/require the reviews above. Maintainer's review can occur before or after a technical writer review.
Edited by Matthias Käppler

Merge request reports

Loading