--- layout: default manual_cookiebot: true extra_css: - home.css - maturity.css extra_js: - libs/on-scroll.js - all-clickable.js - libs/moment.min.js - maturity.js title: "Maturity" description: "To convey the state of our GitLab feature set and be transparent, we have developed a maturity framework for categories, application types, and stages." canonical_path: "/direction/maturity/" --- .container %p{style: "padding-top: 15px"} GitLab has a = succeed "," do = link_to "broad scope and vision", "/direction/" and we are constantly = link_to "iterating", "/handbook/values/#iteration" on existing and new features. Some stages and features are more mature than others. To convey the state of our feature set and be = succeed "," do = link_to "transparent", "/handbook/values/#transparency" we have developed a maturity framework for categories, application types, and stages that considers both adoption and user experience. Contributions from our community are an essential part of achieving this overall vision for GitLab. %a.scroll-anchor{id: "legend"} %table.legend-table %tr %td{style: "width: 50%"} = link_to "Category", "#category-maturity" and = link_to "Application Type", "#application-type-maturity" maturity: = partial "includes/product/maturity_legend" %td{style: "width: 50%"} %p = link_to "Stage", "#maturity-by-stage" lifecycle: %ul - for i in 0..7 %li = lifecycle(i) %p = link_to "Investment Thesis", "/handbook/product/product-processes/#product-investment-thesis" horizons. .container %section.maturity-tables %h2#category-maturity Category maturity %p GitLab features are grouped into a = succeed "," do = link_to "hierarchy", "/handbook/product/product-categories/#hierarchy" representing increasingly higher level capabilities. Features make up a broader Category, which then belong to a DevOps Stage. Stages are assigned a yearly = succeed "," do = link_to "lifecycle", "#legend" and categories a = succeed "." do = link_to "maturity", "#legend" .sdlc-container.position-relative#maturity-no-padding .sdlc-table - Gitlab::Homepage::Stage.all!.select{|stage| stage.marketing}.each do |stage| .sdlc-column .stage-container %a{href: "##{stage.key}"} = partial "/includes/icons/sdlc-icons/#{stage.key}.svg" %a{href: "##{stage.key}"} %p #{stage.display_name} .solutions-container - active_categories = active_categories(stage.categories) - upcoming_categories = planned_categories(stage.categories) - if active_categories.length >= 1 .current-categories %p.font-bold Since #{stage.established} GitLab added: .stage-column .category-list - active_categories.each do |category| .category .category-cell - if category.new_maturity %a.new-maturity{ href: "##{category.key}"} = partial "/images/maturity/#{maturity(category, Date.today)}.svg" - else %a{ href: "##{category.key}"} = partial "/images/maturity/#{maturity(category, Date.today)}.svg" .category-cell - url = category.best_link %a{ href: "#{url}" } #{category.name} .future-categories %p.font-bold Future %br - if upcoming_categories.length >= 1 = succeed ':' do %a.font-bold{ href: "#{stage.direction}"} direction - else %a.font-bold{ href: "#{stage.direction}"} direction .stage-column .category-list - upcoming_categories.each do |category| .category .category-cell %a{ href: "##{category.key}"} = partial "/images/maturity/#{maturity(category, Date.today)}.svg" .category-cell - url = category.best_link %a{ href: "#{url}" } #{category.name} %h2#maturity-plan Planned category maturity %p The maturity framework makes it easy to visualize where GitLab is making investments, and resulting category maturity improvements. As part of the %a{href: "https://about.gitlab.com/handbook/product/#planning-and-strategy"} planning process for each category, the set of features required and expected date to reach the next maturity is maintained. It can also be used to compare historical to planned velocity. A reduction in velocity is %a{href: "https://about.gitlab.com/handbook/leadership/biggest-risks/#loss-of-velocity"} one of our biggest risks. %p Below is a chart which illustrates the aggregate current and future progression of all categories. .drop-shadow .maturity-chart = maturity_chart() %h3#maturity-by-stage DevOps stage maturity - stages = data.stages.stages.select { |stageKey, stage| stage.marketing } = partial('includes/maturity/stage-details.html.haml', locals: { stages: stages }) %h3#non-devops-maturity-by-stage Non-DevOps stage maturity - stages = data.stages.stages.select { |stageKey, stage| !stage.marketing } = partial('includes/maturity/stage-details.html.haml', locals: { stages: stages }) %p Learn how to make changes to categories and their maturity on our = succeed "." do %a{ href: "../../handbook/marketing/website/#working-with-category-maturity"} website handbook page