Skip to content

Draft: Build centralized documentation of GitLab feature flags to aid discovery

What does this MR do?

This MR adds scripts to:

  1. Adds a script, collect-feature-flags, which:
    1. Scans the entire Ruby codebase, using Rubocop and a custom cop, for calls to Feature.enabled?
    2. Writes out a database of feature flag uses to doc/administration/feature_flags/uses.yml
  2. Adds a file, doc/administration/feature_flags/help.yml for documenting feature flags
  3. Adds a script, document-feature-flags, which:
    1. Synthesizes feature flag documentation (help.yml) and uses (uses.yml)
    2. Writes out the synthesized information to a human-readable document, doc/administration/feature_flags/directory.md

Example

Feature Flag Default GitLab.com Reason Uses
Go proxy for GitLab go_proxy disabled disabled Performance ... lib/api/go_proxy.rb:48:27
instance_statistics enabled app/controllers/admin/instance_statistics_controller.rb:16:23
serverless_domain disabled app/controllers/admin/serverless/domains_controller.rb:68:23
soft_email_confirmation disabled app/controllers/concerns/confirm_email_warning.rb:13:38
app/controllers/confirmations_controller.rb:16:43
app/controllers/registrations/welcome_controller.rb:53:23
app/controllers/registrations_controller.rb:98:5

Related issues

Closes #290719

Author's checklist (required)

Do not add the feature, frontend, backend, ~"bug", or database labels if you are only updating documentation. These labels will cause the MR to be added to code verification QA issues.

When applicable:

Review checklist

All reviewers can help ensure accuracy, clarity, completeness, and adherence to the Documentation Guidelines and Style Guide.

1. Primary Reviewer

  • Review by a code reviewer or other selected colleague to confirm accuracy, clarity, and completeness. This can be skipped for minor fixes without substantive content changes.

2. Technical Writer

  • Technical writer review. If not requested for this MR, must be scheduled post-merge. To request for this MR, assign the writer listed for the applicable DevOps stage.

For more information about labels, see Technical Writing workflows - Labels.

For suggestions that you are confident don't need to be reviewed, change them locally and push a commit directly to save others from unneeded reviews. For example:

  • Clear typos, like this is a typpo.
  • Minor issues, like single quotes instead of double quotes, Oxford commas, and periods.

For more information, see our documentation on Merging a merge request.

3. Maintainer

  1. Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review.
  2. Ensure a release milestone is set.
  3. If there has not been a technical writer review, create an issue for one using the Doc Review template.
Edited by Ethan Reesor

Merge request reports