<!--
title: Document versioning strategies
domain: data-systems
topic: Configurations
language: Yaml
source: influxdata/influxdb
updated: 2025-03-19
url: https://awesomereviewers.com/reviewers/influxdb-document-versioning-strategies/
-->

Establish and clearly document versioning strategies in configuration files, both for your application and its dependencies. For application versioning, include detailed explanations of each component in the version string:

```
v3.M.m-B[.Q.q.b]  # eg, v3.0.0-0.beta.1.0 or v3.0.0-1
 | | | |  | | |
 | | | |  | |  ----------> package build number for 'quality'
 | | | |  |  ------------> 'quality' release number
 | | | |   --------------> release quality (optional: alpha, beta, rc)
 | | |  -----------------> package build number
 | |  -------------------> micro version (non-breaking changes)
 |  ---------------------> minor version (breaking changes)
  -----------------------> major version (hugely breaking changes)
```

For dependencies in CI/CD configurations, make deliberate decisions about whether to pin specific versions (`tool@v1.2.3`) or use floating references (`tool@latest`). Document the reasoning behind your choice, and regularly review dependencies with floating versions to ensure they remain stable. When using `@latest`, verify that upstream maintainers handle versioning responsibly to prevent unexpected breaking changes in your build pipeline.
