[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:
- 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.
- 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
-
Optional. Consider taking the GitLab Technical Writing Fundamentals course. -
Follow the: -
If you're adding a new page, add the product availability details under the H1 topic title. -
If you are a GitLab team member, request a review based on: - The documentation page's metadata.
- The associated Technical Writer.
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 likeDefault behavior when you close an issue. -
The headings (other than the page title) should be active. Instead of Configuring GDK, say something likeConfigure 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.