ZFVM
Zillowe Foundation Versioning Method
A clear, flexible, and structured approach to software version management.
Overview
ZFVM (Zillowe Foundation Versioning Method) provides a standardized way to version software, ensuring clarity about its development stage, stability, and build history. It combines information about the development branch, the status of the code, a semantic version number, and an optional build number.
The full canonical format is:
[Branch] [Status] [X.Y.Z] [Build (optional)]
Where:
- Branch: The development environment (e.g.
Dev
,Prod
).. - Status: The maturity level of the code (e.g.
Alpha
,Beta
,Release
). - X.Y.Z: The standard Major.Minor.Patch semantic version number.
- Build: An optional identifier for a specific build instance, such as a CI/CD run number or a commit hash.
Flexible Version Forms
ZFVM is designed for versatility and supports multiple representations for different contexts:
- Full Form:
[Branch] [Status] [X.Y.Z] [Build]
- The complete, unambiguous version string. Ideal for release tagging and formal documentation.
- Contextual Form:
[Status] [X.Y.Z]
- Used when the branch is implied by the environment (e.g. in a development pipeline).
- Semantic Form:
[X.Y.Z]
- For tools and dependency managers that only understand standard SemVer.
- Symbolic Form:
b<n>s<m>-X.Y.Z
- A compact, coded representation for constrained environments (e.g. filenames, URL slugs).
<n>
and<m>
correspond to the index of the Branch and Status in the official specification.
- A compact, coded representation for constrained environments (e.g. filenames, URL slugs).
Why ZFVM?
In today's complex software development landscape, managing multiple versions, features, and deployment environments can quickly become chaotic. ZFVM addresses this by:
- Providing Clarity: The format offers an at-a-glance understanding of a software version's context.
- Standardizing Communication: ZFVM establishes a common language for development teams, QA, and stakeholders.
- Facilitating Broader Context: While SemVer (X.Y.Z) handles API compatibility, ZFVM adds layers for branch, status, and build, crucial for internal development cycles and staged rollouts.
- Supporting Diverse Workflows: ZFVM's flexible forms adapt to various use cases, from CI/CD logs to public-facing dependency manifests.
- Improving Traceability: Encoding the development stage, branch, and build into the version string aids in tracking issues and managing deployments.
ZFVM aims to bring the rigor of Semantic Versioning to the broader context of the software development lifecycle.
Examples
Here are a few examples of ZFVM in practice:
Dev Beta 1.2.3 987
: A beta release on the development branch, from build #987.Prod Release 1.5.0
: The stable production release.Prod Release 1.5.1 1120
: A patch release to production for bug fixes, from build #1120.b2s4-1.2.3
: The Symbolic Form forDev Beta 1.2.3
.
Full Specification and Guide
For the complete Zillowe Foundation Versioning Method specification, including detailed definitions, implementation guidelines, a comprehensive FAQ, and more, please see the full document:
-> ZFVM Specification and Guide
Zillowe Foundation Versioning Method is designed to provide clear context about the development state and version history of software projects.
Last updated on