<% feature_flags_yaml = @items["/_data/feature_flags.yaml"] def enabled_state(ff) ff[:default_enabled] ? 'Enabled' : 'Disabled' end def enabled_count(ffs) ffs.count { |ff| ff[:default_enabled] } end def disabled_count(ffs) ffs.count { |ff| !ff[:default_enabled] } end %> <% if feature_flags_yaml %> ## Available feature flags The feature flags available to you depend on: - The edition of GitLab: [Community Edition or Enterprise Edition](https://about.gitlab.com/install/ce-or-ee/). - The version of GitLab: For example, 15.8 or 16.0. - The installation of GitLab: self-managed or GitLab.com. <% feature_flags_yaml[:products].each do |product, ffs| %> ### <%= product %> <%= ffs.count %> feature flags are available in <%= product %>. <% sorted_ff = ffs.sort_by { |ff| ff[:milestone].to_f } %> | Name | Group | Milestone | Default state | Rollout issue | |------|--------|-----------|---------------|---------------| <% sorted_ff.reverse.each do |ff| %>| <%= ff[:introduced_by_url] ? "[`#{ff[:name]}`](#{ff[:introduced_by_url]})" : "`#{ff[:name]}`" %> | `<%= ff[:group] || 'Not defined' %>` | <%= ff[:milestone] || 'Not defined' %> | <%= enabled_state(ff) %> | <%= ff[:rollout_issue_url] ? "<#{ff[:rollout_issue_url]}>" : 'Not defined' %> | <% end %> <% end %> ## Ownership by group GitLab features are developed by [engineering groups](https://about.gitlab.com/handbook/product/categories/). <% all_ffs = feature_flags_yaml[:products].map { |_, ffs| ffs }.flatten %> <% ff_groups = all_ffs.group_by { |ff| ff[:group] || 'Not defined' }.sort_by { |group, _| group } %> | Group | Count | Enabled | Disabled | |-------|-------|---------|----------| <% ff_groups.each do |group, ffs| %> | `<%= group %>` | <%= ffs.count %> | <%= enabled_count(ffs) %> | <%= disabled_count(ffs) %> | <% end %> ## Count by milestone GitLab features [are delivered](https://about.gitlab.com/handbook/engineering/releases/): - Continuously for GitLab SaaS. - Every month on the [release date](https://about.gitlab.com/releases/) for GitLab self-managed. <% all_ffs = feature_flags_yaml[:products].map { |_, ffs| ffs }.flatten %> <% ff_milestones = all_ffs.group_by { |ff| ff[:milestone].to_s || 'Not defined' }.sort_by { |milestone, _| milestone } %> | Milestone | Count | Enabled | Disabled | |-----------|-------|---------|----------| <% ff_milestones.reverse.each do |milestone, ffs| %> | <%= milestone %> | <%= ffs.count %> | <%= enabled_count(ffs) %> | <%= disabled_count(ffs) %> | <% end %> <% end %>