This page is meant to provide insight into how we consider and allocate our investment across our Product Hierarchy.
We track product investment across three types:
The investment mix between these three categories will shift over time as our business matures. By 2024 we would expect the investment mix to look like:
We have a framework we use to assess the investment level for each DevOps stage. The three investment drivers are as follows:
Each driver is scored on a 1-5 basis. Here is a description of how each driver is scored.
|Score||Usage Driver Key||Revenue Driver Key||SAM Driver Key|
|1||<10k SMAU||Not a driver of paid sales||<200m SAM over the next three years|
|2||10k-50k SMAU||<25% of features in paid tiers; not a major element in paid sales||200m-500m SAM over the next three years|
|3||50k-100k SMAU||>25% of features in paid tiers; not a major element in paid sales||500m-1B SAM over the next three years|
|4||100k-200k SMAU||Key element in Premium sales||1B-2B SAM over the next 3 years|
|5||>200k SMAU||Key element in Ultimate sales||>2B SAM over the next three years|
We score enabling groups differently. Their Criticality of Use score replaces their Usage score and their Degree of Enablement replaces their SAM Score. Enabling groups utilize the same scoring methodology as DevOps stage groups for their Revenue Driver score.
As for DevOps stage scores - each driver is scored on a 1-5 basis. Here is a description of how each driver is scored.
|Score||Criticality of Use||Degree of Enablement|
|1||Non-essential to use of GitLab||Enables < 25% of the DevOps Market|
|2||Non-essential but becoming more critical||Enables > 25% of the DevOps Market|
|3||Essential but not required||Enables >50% of the DevOps Market|
|4||Heavily recommmended for use of GitLab or GitLab.com||Enables >70% of the DevOps Market|
|5||Required for use of GitLab or GitLab.com||Enables entire DevOps Market|
The following table provides scores for each of our DevOps stages and a comparison of the total score to our current development spend allocation as defined by the percentage of total individual contributor developers in product groups.
|Stage||Usage Driver Score||Revenue Driver Score||SAM Driver Score||Combined Score||% of Total Score||Stage Dev||Stage Dev %||Score/Spend Difference|
Note: Enablement and Growth stages and groups aren't included, as they don't have specific target markets, and don't have a dedicated SAM. Therefore, they can't be compared directly with feature-function stages and aren't included in this analysis.
|Stage: Group||Usage Driver||ASP Driver||SAM Driver||Total||% of Total||Group Devs||Group Dev %||Score/Spend Difference|
|Plan: Project Management||5||4||5||14||4.2%||8||3.81%||-0.4%|
|Plan: Product Planning||2||5||5||12||3.6%||10||4.76%||+1.2%|
|Create: Source Code||5||4||5||14||4.2%||8||3.81%||-0.4%|
|Create: Code Review||5||4||5||14||4.2%||10||4.76%||+0.6%|
|Verify: Continuous Integration||5||3||4||12||3.6%||7||3.33%||-0.2%|
|Verify: Pipeline Authoring||5||3||4||12||3.6%||6||2.86%||-0.7%|
|Secure: Static Analysis||4||5||5||14||4.2%||7||3.33%||-0.8%|
|Secure: Dynamic Analysis||2||5||5||12||3.6%||7||3.33%||-0.2%|
|Secure: Composition Analysis||3||5||5||13||3.9%||6||2.86%||-1.0%|
|Secure: Fuzz Testing||1||1||5||7||2.1%||4||1.9%||-0.2%|
|Secure: Threat Insights||4||5||5||14||4.2%||10||4.76%||+0.6%|
|Secure: Vulnerability Research||4||5||5||14||4.2%||4||1.9%||-2.3%|
|Protect: Container Security||1||2||2||5||1.5%||8||3.81%||+2.3%|
|Enablement: Global Search||5||3||3||11||3.3%||3||1.43%||-1.9%|
For non-DevOps and Enabling stages we still track our overall investment, but don't attribute score or score/spend differences.
|Stage: Group||Group Devs||Group Dev %|
|Plan: Project Management||8||3.21%|
|Plan: Product Planning||10||4.02%|
|Create: Source Code||8||3.21%|
|Create: Code Review||10||4.02%|
|Verify: Continuous Integration||7||2.81%|
|Verify: Pipeline Authoring||6||2.41%|
|Secure: Static Analysis||7||2.81%|
|Secure: Dynamic Analysis||7||2.81%|
|Secure: Composition Analysis||6||2.41%|
|Secure: Fuzz Testing||4||1.61%|
|Secure: Threat Insights||10||4.02%|
|Secure: Vulnerability Research||4||1.61%|
|Protect: Container Security||8||3.21%|
|Growth: Product Intelligence||8||3.21%|
|Enablement: Global Search||3||1.2%|
|Learn: Applied Machine Learning||0||0.0%|
|Mobile: DevOps for Mobile Apps||0||0.0%|
|Deploy: Five Minute Production App||2||0.8%|
Service Addressable Market (SAM) is a key driver of our stage level investment. We calculate our SAM based on what percentage of the total addressable market is servicable by our current products. Here is our future Total Addressable Market (TAMkt) for 2024, percent addressable and SAM for each stage which are used to determine our SAM Driver score.
|Stage||2024 TAMkt||% Servicable||2024 SAM|
Note - It is difficult to find data sources that allow us to break down our TAMkt (and therefore) SAM by stages, groups and categories. The primary reference for this data is the 2020 IDC Worldwide DevOps Software Tools Market Shares report - internal as it is the third party market size analysis that most closely maps to our overall product scope. We used the IDC report, plus some additional market analyses, to then derive a TAMkt estimate for each stage - internal. We also publish a TAMkt estimate using a different methodology which is derived by multiplying the estimated number of potential users by GitLab's potential annual average revenue per user (ARPU).
Changes to this page are made by adding new values to the single sources of truth (categories.yml, stages.yml and addressable_markets.yml) and then editing this page in order to display those values in table form. Be sure the definition for any column value is defined in stage and category attributes and that the column headers link to those definitions.
The process for making changes requires you to submit a merge request to the stages.yml for the specific keywords that have changed and provide the data source for that change. Assign the merge request to the EVP or VP of Product and slack
#product for approval/merge. You can reference the Release Stage update for an example.