# Calendar Version

Key: `technology.development.calver`

Calendar versioning (CalVer) following date-based patterns like YYYY.MM.DD or YYYY.MM. Used by projects that version based on release calendar.

Page: <https://meridian.online/docs/projects/finetype/types/technology/development/calver>

Samples: `2024.02.09`, `2023.12.31`, `2024.01.15.1`

## Background

### Origin

Calendar versioning had a long history before CalVer itself was first publicly released in 2016, by Mahmoud Hashemi.[[1]](https://calver.org/about.html) The calver.org spec does not declare a single scheme to be CalVer, recognising instead that projects have found more than one useful way to use dates in their versions.[[2]](https://calver.org/)

CalVer's terminology writes the full year as YYYY, the zero-padded month as 0M and the zero-padded day as 0D.[[2]](https://calver.org/) The CalVer spec assumes the Gregorian calendar and the convention of UTC.[[2]](https://calver.org/)

### Use

On calver.org, YYYY.0M.0D\[.MICRO\] describes a date version that sometimes carries a fourth number, as yt-dlp's does.[[2]](https://calver.org/) According to calver.org, youtube-dl pioneered the scheme of a full date with a micro segment appended when a same-day fix is needed.[[2]](https://calver.org/) calver.org advises appending an incrementing micro segment when a project makes more than one release in a day.[[2]](https://calver.org/)

CalVer deliberately does not attempt to communicate breaking changes.[[2]](https://calver.org/)

PEP 440 permits date based release segments in Python version identifiers.[[3]](https://peps.python.org/pep-0440/) PEP 440 notes that if a project using date based versions like 2014.04 switched to semantic versions like 1.0, the new releases would be identified as older under the normal sorting scheme.[[3]](https://peps.python.org/pep-0440/) PEP 440 adds version epochs so that a project previously using date based versioning can switch to semantic versioning.[[3]](https://peps.python.org/pep-0440/)

## Sources

1. [About — CalVer](https://calver.org/about.html) — secondary source
2. [Calendar Versioning — CalVer](https://calver.org/) — secondary source
3. [PEP 440 – Version Identification and Dependency Specification](https://peps.python.org/pep-0440/) — standard
