<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en">
  <id>https://calver.org/</id>
  <title type="text">CalVer</title>
  <subtitle type="text">Timely Project Versioning</subtitle>
  <link rel="alternate" type="text/html" href="https://calver.org/" />
  <link rel="self" type="application/atom+xml" href="https://calver.org/atom.xml" />
  <updated>2026-10-10T04:40:08Z</updated>
  <sy:updatePeriod>hourly</sy:updatePeriod>
  <sy:updateFrequency>1</sy:updateFrequency>

  <rights type="html">&amp;copy; 2026 &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/4.0/&quot;&gt;&lt;img height=&quot;14&quot; src=&quot;/img/by-sa.png&quot; /&gt;&lt;/a&gt;</rights>
  <generator uri="https://github.com/mahmoud/chert">Chert 0.1</generator>
  
  <entry>
    <id>https://calver.org/overview.html</id>
    <author>
      <name>Mahmoud Hashemi</name>
      <uri>https://calver.org/</uri>
    </author>
    <title>Calendar Versioning</title>
    <link rel="alternate" type="text/html" href="https://calver.org/overview.html" />
    <published>2026-09-11T07:00:00Z</published>
    <updated>2026-09-11T07:00:00Z</updated>
    
    

    <content type="html">&lt;p style=&quot;text-align: center; margin: 1.25em 0 2em&quot;&gt;&lt;em&gt;CalVer is a versioning convention based on your project&#x27;s release calendar.&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;Versioning gets better with time.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For maintainers, versioning allows us to specify precise dependencies
within an ever-expanding ecosystem. For sellers and promoters, a
project&#x27;s version is a dynamic part of a brand. For all of us,
versioning lets us reference the past while upgrading to the future.&lt;/p&gt;
&lt;p&gt;Different projects use different systems for versioning, but common
practices have emerged. For instance, point-separated numbers (e.g.,
&lt;em&gt;3.1.4&lt;/em&gt;) are all but given. Another common versioning pattern
incorporates a time-based element, usually part of the release date.&lt;/p&gt;
&lt;p&gt;This date-based approach is called Calendar Versioning, or
&lt;strong&gt;CalVer&lt;/strong&gt; for short.&lt;/p&gt;
&lt;div class=&quot;toc&quot;&gt;&lt;span class=&quot;toctitle&quot;&gt;Contents&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#scheme&quot;&gt;Scheme&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#case_studies&quot;&gt;Case studies&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#ubuntu&quot;&gt;Ubuntu&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#apple&quot;&gt;Apple&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#nvidia&quot;&gt;NVIDIA&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#twisted&quot;&gt;Twisted&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#yt_dlp&quot;&gt;yt-dlp&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#the_iana_olson_timezone_database&quot;&gt;The IANA/Olson timezone database&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#other_notable_projects&quot;&gt;Other notable projects&lt;/a&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;#badges&quot;&gt;Badges&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#frequently_asked_questions&quot;&gt;Frequently Asked Questions&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#when_to_use_calver&quot;&gt;When to use CalVer?&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#what_about_breaking_changes&quot;&gt;What about breaking changes?&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#multiple_releases_per_day&quot;&gt;Multiple releases per day?&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;#to_pad_or_not_to_pad&quot;&gt;To pad or not to pad?&lt;/a&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&quot;#spec_changelog&quot;&gt;Spec changelog&lt;/a&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h2 id=&quot;scheme&quot;&gt;&lt;a href=&quot;#scheme&quot; class=&quot;toclink&quot;&gt;Scheme&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There are multiple calendar versioning schemes, long used by projects
big and small. Rather than declaring a single scheme to be CalVer,
it&#x27;s important to recognize the practicality of each and
&lt;a href=&quot;https://sedimental.org/designing_a_version.html&quot;&gt;design the scheme&lt;/a&gt; to fit the project. First,
the parts of the version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Major&lt;/strong&gt; - The first number in the version. 2 and 3 are Python&#x27;s famous
  major versions. The major segment is the most common calendar-based component.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minor&lt;/strong&gt; - The second number in the version. The 7 in Python 2.7 is
  its minor version.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Micro&lt;/strong&gt; - The third and usually final number in the version. Sometimes
  referred to as the &quot;patch&quot; segment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modifier&lt;/strong&gt; - An optional text tag, such as &quot;dev&quot;, &quot;alpha&quot;, &quot;beta&quot;,
  &quot;rc1&quot;, and so on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The vast majority of modern version identifiers are composed of two or
three numeric segments, plus the optional modifier. Convention
suggests that four-numeric-segment versions are discouraged.&lt;/p&gt;
&lt;p&gt;As seen in the &lt;a href=&quot;https://calver.org/overview.html#case-studies&quot;&gt;case studies&lt;/a&gt; below, projects have
found more than one useful way to leverage dates in their
versions. Rather than choose a single scheme, CalVer introduces
standard terminology for developers, in addition to the &quot;semantic&quot;
versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;YYYY&lt;/code&gt;&lt;/strong&gt; - Full year - 2006, 2016, 2106&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;YY&lt;/code&gt;&lt;/strong&gt; - Short year - 6, 16, 106&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;0Y&lt;/code&gt;&lt;/strong&gt; - Zero-padded year - 06, 16, 106&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;M&lt;/code&gt;&lt;/strong&gt; - Short month - 1, 2 ... 11, 12&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;0M&lt;/code&gt;&lt;/strong&gt; - Zero-padded month - 01, 02 ... 11, 12&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;W&lt;/code&gt;&lt;/strong&gt; - Short week (since start of year) - 1, 2, 33, 52&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;0W&lt;/code&gt;&lt;/strong&gt; - Zero-padded week - 01, 02, 33, 52&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;D&lt;/code&gt;&lt;/strong&gt; - Short day - 1, 2 ... 30, 31&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;0D&lt;/code&gt;&lt;/strong&gt; - Zero-padded day - 01, 02 ... 30, 31&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A few real versions, decomposed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;26.04&lt;/code&gt; is &lt;strong&gt;&lt;code&gt;YY.0M&lt;/code&gt;&lt;/strong&gt; (Ubuntu)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2026.2&lt;/code&gt; is &lt;strong&gt;&lt;code&gt;YYYY.MINOR&lt;/code&gt;&lt;/strong&gt; (JetBrains, Kali Linux)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2026.08.19&lt;/code&gt; is &lt;strong&gt;&lt;code&gt;YYYY.0M.0D&lt;/code&gt;&lt;/strong&gt; (yt-dlp)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A single letter is the plain number, and a leading &lt;code&gt;0&lt;/code&gt; marks
zero-padding, so each token reads only one way. Earlier revisions of
this page spelled the short forms with doubled letters; see the note
below.&lt;/p&gt;
&lt;p&gt;Note that traditional, incremented version numbers are 0-based,
whereas date segments are 1-based, and the short and zero-padded years
are relative to the year 2000. &lt;code&gt;YY&lt;/code&gt; and &lt;code&gt;0Y&lt;/code&gt; only produce different
strings for the years 2000-2009 and 2100 onward: Ubuntu&#x27;s first
release, 4.10 (October 2004), is &lt;code&gt;YY.0M&lt;/code&gt;, and C++03 is &lt;code&gt;0Y&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Trailing optional segments are written in square brackets, so
&lt;code&gt;YYYY.0M.0D[.MICRO]&lt;/code&gt; is a date version that sometimes carries a
fourth number, as yt-dlp&#x27;s does.&lt;/p&gt;
&lt;p&gt;Weeks deserve caution. There are several definitions in common use
(&lt;code&gt;strftime&lt;/code&gt;&#x27;s &lt;code&gt;%W&lt;/code&gt; counts Monday-started weeks from 00, &lt;code&gt;%U&lt;/code&gt; does the
same from Sunday, and ISO 8601&#x27;s &lt;code&gt;%V&lt;/code&gt; runs 01 through 53 with its own
week-based year), and depending on the definition a year can have as
many as 54 numbered weeks. A project using weeks should state which
definition it means. Usage of weeks is mutually exclusive with months
and days.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;MM&lt;/code&gt;, &lt;code&gt;WW&lt;/code&gt;, and &lt;code&gt;DD&lt;/code&gt; are deprecated.&lt;/strong&gt; From 2016 until spec 26.0,
this page wrote the short month, week, and day with doubled
letters. Those spellings keep that meaning, so existing badges and
tool configs still read correctly: &lt;code&gt;YY.MM.MICRO&lt;/code&gt; is &lt;code&gt;YY.M.MICRO&lt;/code&gt;.
They are deprecated because most date formats (ISO 8601&#x27;s
&lt;code&gt;YYYY-MM-DD&lt;/code&gt;, Java, moment.js, day.js) read a doubled letter as
two digits, so a reader can&#x27;t tell which is meant. Write &lt;code&gt;M&lt;/code&gt;, &lt;code&gt;W&lt;/code&gt;,
and &lt;code&gt;D&lt;/code&gt; for short values and &lt;code&gt;0M&lt;/code&gt;, &lt;code&gt;0W&lt;/code&gt;, and &lt;code&gt;0D&lt;/code&gt; for zero-padded
ones. Tools that implement the doubled spellings (bumpver,
bump-my-version, JReleaser, and others) keep working; as they add
the single letters, prefer those. See the &lt;a href=&quot;https://calver.org/overview.html#spec-changelog&quot;&gt;spec
changelog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Gregorian_calendar&quot;&gt;Gregorian calendar&lt;/a&gt; is assumed, as is the convention
of &lt;a href=&quot;https://en.wikipedia.org/wiki/Coordinated_Universal_Time&quot;&gt;UTC&lt;/a&gt;. Technically any calendar can be used, provided projects
state which one.&lt;/p&gt;
&lt;h2 id=&quot;case_studies&quot;&gt;&lt;a href=&quot;#case_studies&quot; class=&quot;toclink&quot;&gt;Case studies&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;CalVer has quite a few users. These are projects selected for their
notability and variety of use cases.&lt;/p&gt;
&lt;h3 id=&quot;ubuntu&quot;&gt;&lt;a href=&quot;#ubuntu&quot; class=&quot;toclink&quot;&gt;Ubuntu&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/calver-YY.0M.MICRO-22bfda.svg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt;&lt;/strong&gt;, one of the most prominent Linux-based operating
systems available, uses a three-segment CalVer scheme, with a short
year and zero-padded month. It has done so
&lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_Ubuntu_releases&quot;&gt;from the very start&lt;/a&gt;, in October 2004, making 4.10
the first general release of Ubuntu.&lt;/p&gt;
&lt;p&gt;Even a simple operating system involves many, many parts, making it
difficult to communicate much meaning with an arbitrary number. By
dating the project release, the calendar-based version is much more
than an arbitrary number, communicating useful information that is
rooted in simple fact.&lt;/p&gt;
&lt;p&gt;Ubuntu derives additional benefit from its CalVer scheme, by
integrating it with their support schedule. Ubuntu currently has
five-year support periods for their long-term support (LTS) releases,
and only 9 months for non-LTS releases. Thanks to CalVer and
elementary arithmetic, any user can easily determine whether their
version is still supported. The current LTS release at the time of
writing, &lt;a href=&quot;https://ubuntu.com/about/release-cycle&quot;&gt;26.04 LTS&lt;/a&gt;, will be supported until 2031.&lt;/p&gt;
&lt;h3 id=&quot;apple&quot;&gt;&lt;a href=&quot;#apple&quot; class=&quot;toclink&quot;&gt;Apple&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/calver-YY.MINOR-22bfda.svg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Measured by devices, probably the largest calendar versioning adoption to date.&lt;/p&gt;
&lt;p&gt;At WWDC in June 2025, &lt;strong&gt;&lt;a href=&quot;https://www.apple.com/newsroom/2025/06/apple-elevates-the-iphone-experience-with-ios-26/&quot;&gt;Apple&lt;/a&gt;&lt;/strong&gt; moved every one of its
operating systems to a single year-based number: iOS 18 became iOS
26, macOS 15 became macOS 26, and iPadOS, watchOS, tvOS, and visionOS
made the same jump, with Xcode 26 and Safari 26 following. 
Releases are numbered by the following year, so WWDC 2026 brought iOS version 27, 
&lt;a href=&quot;https://www.apple.com/newsroom/2026/06/apple-unveils-next-generation-of-apple-intelligence-siri-ai-and-more/&quot;&gt;confirming the pattern is annual&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In CalVer terms, the scheme is &lt;code&gt;YY.MINOR&lt;/code&gt; with the year offset by one:
the calendar supplies the major version, point releases counting up as
deemed fit. Eminently marketing-friendly, finally embracing the brand&#x27;s maturity.&lt;/p&gt;
&lt;p&gt;The advantage is the same Ubuntu found decades before: 
One number tells a customer, a developer, or a
support engineer how current any Apple platform is, with versions
lining up across platforms instead of drifting (who wants to remember that 
iOS 18 coincided with macOS 15 and watchOS 11). &lt;/p&gt;
&lt;h3 id=&quot;nvidia&quot;&gt;&lt;a href=&quot;#nvidia&quot; class=&quot;toclink&quot;&gt;NVIDIA&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/calver-YY.M.MICRO-22bfda.svg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NVIDIA&lt;/strong&gt; runs calendar versions across much of its infrastructure
software. The &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/life-cycle-policy.html&quot;&gt;GPU Operator&lt;/a&gt; for Kubernetes went from SemVer 1.11
to 22.9.0 in September 2022, with a new major every six months and a
twelve-month support window, so the version alone tells an operator
when support ends. &lt;a href=&quot;https://docs.rapids.ai/notices/rgn0013/&quot;&gt;RAPIDS&lt;/a&gt;, the CUDA data science
libraries, jumped from 0.19 to 21.06.00 in June 2021. The &lt;a href=&quot;https://docs.nvidia.com/deeplearning/frameworks/container-release-notes/index.html&quot;&gt;NGC
deep-learning containers&lt;/a&gt; (PyTorch, TensorFlow, TensorRT,
Triton) have shipped monthly as &lt;code&gt;YY.0M&lt;/code&gt; since at least 19.08.
&lt;a href=&quot;https://docs.nvidia.com/legate/latest/versions.html&quot;&gt;Legate&lt;/a&gt; uses &lt;code&gt;YY.0M.PP&lt;/code&gt; with &lt;code&gt;.devXXX&lt;/code&gt; weeklies and
promises API and ABI stability within each month version.&lt;/p&gt;
&lt;p&gt;Interestingly, NVIDIA uses both padded and unpadded CalVer.
GPU Operator is unpadded to stay compatible with semantic versioning.
RAPIDS, NGC, and Legate pad, because their versions are container
tags that sort as strings.&lt;/p&gt;
&lt;p&gt;To decide for your use case, see &lt;a href=&quot;https://calver.org/overview.html#to-pad-or-not-to-pad&quot;&gt;To pad or not to pad?&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;twisted&quot;&gt;&lt;a href=&quot;#twisted&quot; class=&quot;toclink&quot;&gt;Twisted&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/calver-YY.M.MICRO-22bfda.svg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://twisted.org/&quot;&gt;Twisted&lt;/a&gt;&lt;/strong&gt;, the venerated Python networking and
asynchronous execution framework, uses a three-segment CalVer scheme,
with a short year in the major version slot, short month in the minor
version slot, and micro/patch version in the third and final slot.&lt;/p&gt;
&lt;p&gt;First released in 2002 and still actively developed today (26.4.0 at
the time of writing), Twisted is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Twisted_%28software%29&quot;&gt;mature&lt;/a&gt; library that
has grown to match its large scope. It features everything from an
IRC client to an HTTP server to a slew of utilities for concurrent
programming. Like an operating system, Twisted has a lot of parts,
making SemVer a poor fit due to the individual parts deprecating and
breaking compatibility individually.&lt;/p&gt;
&lt;p&gt;The non-deprecated parts of Twisted are backwards-compatible between
each successive version, and breaking changes are done on a time basis,
where one year must pass and two releases issued between the release
deprecating the functionality and the removal of the functionality.&lt;/p&gt;
&lt;p&gt;Its versioning scheme has spread to related projects, including
&lt;a href=&quot;https://github.com/twisted/klein&quot;&gt;Klein&lt;/a&gt;, &lt;a href=&quot;https://github.com/twisted/treq&quot;&gt;Treq&lt;/a&gt;, and even one of Twisted&#x27;s dependencies,
&lt;a href=&quot;https://github.com/pyca/pyopenssl&quot;&gt;PyOpenSSL&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;yt_dlp&quot;&gt;&lt;a href=&quot;#yt_dlp&quot; class=&quot;toclink&quot;&gt;yt-dlp&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/calver-YYYY.0M.0D%5B.MICRO%5D-22bfda.svg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/yt-dlp/yt-dlp&quot;&gt;yt-dlp&lt;/a&gt;&lt;/strong&gt;, the community successor to youtube-dl and
understated ally of Internet media archivists everywhere,
continues the tradition of using CalVer. youtube-dl
pioneered the scheme, a full date with a micro segment appended when
a same-day fix is needed. yt-dlp forked in January 2021 and kept going,
tagging &lt;a href=&quot;https://github.com/yt-dlp/yt-dlp/releases/tag/2026.08.19&quot;&gt;2026.08.19&lt;/a&gt; in the usual style.&lt;/p&gt;
&lt;p&gt;Despite the name, yt-dlp&#x27;s scope is expansive. It supports extracting
audio and video from a long, ever-expanding list of sites. Consider
the rapid release cycle of supported services and the surface area of &quot;breaking&quot; changes,
and it becomes clear why the project has adopted CalVer to such a great degree.&lt;/p&gt;
&lt;p&gt;The tags are zero-padded, but PyPI lists the same release as
&lt;code&gt;2026.8.19&lt;/code&gt;, the &lt;a href=&quot;https://packaging.python.org/en/latest/specifications/version-specifiers/#integer-normalization&quot;&gt;PEP 440&lt;/a&gt;-normalized form. It is a live
illustration of the &lt;a href=&quot;https://calver.org/overview.html#to-pad-or-not-to-pad&quot;&gt;padding note&lt;/a&gt; below: the two strings
are one version.&lt;/p&gt;
&lt;h3 id=&quot;the_iana_olson_timezone_database&quot;&gt;&lt;a href=&quot;#the_iana_olson_timezone_database&quot; class=&quot;toclink&quot;&gt;The IANA/Olson timezone database&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/calver-YYYYa..z-22bfda.svg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.iana.org/time-zones&quot;&gt;IANA/Olson timezone database&lt;/a&gt; represents the history of local
time for many representative locations around the globe, and is the source
of truth for essentially every operating system, database, website, or other
computer that deals with timezones or daylight savings time.&lt;/p&gt;
&lt;p&gt;It is updated periodically to reflect changes made by political bodies to
time zone boundaries, UTC offsets, and daylight-saving rules.  Because these
changes follow political and legislative whim rather than a fixed schedule,
the database is &lt;a href=&quot;https://data.iana.org/time-zones/tz-link.html&quot;&gt;versioned&lt;/a&gt; with a four-digit year followed by
lower-case letter (a through z, then za through zz, then zza through zzz,
and so on).  Calendar versioning offers a date-stamped snapshot of an
otherwise chaotic system.&lt;/p&gt;
&lt;h3 id=&quot;other_notable_projects&quot;&gt;&lt;a href=&quot;#other_notable_projects&quot; class=&quot;toclink&quot;&gt;Other notable projects&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://boltons.readthedocs.io/en/latest/&quot;&gt;boltons&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YY.MINOR.MICRO&lt;/code&gt;&lt;/strong&gt; - A broad library of
  utilities supplementing the Python standard library.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pypi.org/project/certifi/&quot;&gt;certifi&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YYYY.0M.0D&lt;/code&gt;&lt;/strong&gt; - certifi is a wrapper around
  Mozilla&#x27;s certificate authority bundle, used for secure Internet
  communication. Similar to &lt;a href=&quot;https://calver.org/overview.html#the-iana-olson-timezone-database&quot;&gt;the IANA timezone database&lt;/a&gt;,
  certificate updates do not follow a fixed schedule, but timely,
  dateable updates are critical to security.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cockroachlabs.com/blog/calendar-versioning/&quot;&gt;CockroachDB&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YY.MINOR.MICRO&lt;/code&gt;&lt;/strong&gt; - Distributed SQL
  database, on CalVer since 19.1.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.freshports.org/sysutils/fusefs-ntfs&quot;&gt;fusefs-ntfs&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YYYY.M.D_MICRO&lt;/code&gt;&lt;/strong&gt; - One of the
  earliest and most cross-compatible NTFS access layers for Unix
  systems.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.home-assistant.io/blog/2020/12/13/release-202012/&quot;&gt;Home Assistant&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YYYY.M.MICRO&lt;/code&gt;&lt;/strong&gt; - Open-source home
  automation platform, released monthly since 2020.12.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jetbrains.com/idea/whatsnew/&quot;&gt;JetBrains IDEs&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YYYY.MINOR.MICRO&lt;/code&gt;&lt;/strong&gt; - IntelliJ
  IDEA, PyCharm, and the rest of the family, since 2016.1.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.libreoffice.org/&quot;&gt;LibreOffice&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YY.M&lt;/code&gt;&lt;/strong&gt; - free and powerful office suite,
  and a successor to OpenOffice.org (commonly known as OpenOffice).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://openscad.org/&quot;&gt;OpenSCAD&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YYYY.0M&lt;/code&gt;&lt;/strong&gt; - The premiere open-source
  offering for solid 3D CAD modelling.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pip.pypa.io/en/stable/news/&quot;&gt;pip&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YY.MINOR.MICRO&lt;/code&gt;&lt;/strong&gt; - Official package manager for Python.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stripe.com/blog/introducing-stripes-new-api-release-process&quot;&gt;Stripe&#x27;s API&lt;/a&gt; - &lt;strong&gt;&lt;code&gt;YYYY-0M-0D.MODIFIER&lt;/code&gt;&lt;/strong&gt; - An API-first
  payments platform. Integrations pin a dated API version; since 2024
  the twice-yearly breaking releases carry a plant name, as in
  &lt;code&gt;2024-09-30.acacia&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the &lt;a href=&quot;https://calver.org/users.html&quot;&gt;Users page&lt;/a&gt; for a growing list of CalVer users.&lt;/p&gt;
&lt;h2 id=&quot;badges&quot;&gt;&lt;a href=&quot;#badges&quot; class=&quot;toclink&quot;&gt;Badges&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The scheme badges on this page are stock &lt;a href=&quot;https://shields.io/badges&quot;&gt;shields.io&lt;/a&gt; static
images, and any project can mint one. Put your scheme in the middle
segment of the URL, and link the image here so your readers can
decode the notation:&lt;/p&gt;
&lt;pre style=&quot;white-space: pre-wrap; overflow-wrap: anywhere&quot;&gt;&lt;code&gt;[![CalVer - YYYY.M.D](https://img.shields.io/badge/calver-YYYY.M.D-22bfda.svg)](https://calver.org/)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Dots pass through badge URLs untouched. A literal dash must be
doubled (&lt;code&gt;--&lt;/code&gt;), and square brackets are percent-encoded, as in
yt-dlp&#x27;s &lt;code&gt;YYYY.0M.0D%5B.MICRO%5D&lt;/code&gt; above.&lt;/p&gt;
&lt;h2 id=&quot;frequently_asked_questions&quot;&gt;&lt;a href=&quot;#frequently_asked_questions&quot; class=&quot;toclink&quot;&gt;Frequently Asked Questions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;And their answers, in time.&lt;/p&gt;
&lt;h3 id=&quot;when_to_use_calver&quot;&gt;&lt;a href=&quot;#when_to_use_calver&quot; class=&quot;toclink&quot;&gt;When to use CalVer?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If third parties use your project, then use a serious version. &lt;/p&gt;
&lt;p&gt;Luckily, the decision on whether to use CalVer is easier than ever:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does your project feature a large or constantly-changing scope?&lt;ul&gt;
&lt;li&gt;Large systems and frameworks, like &lt;a href=&quot;https://calver.org/overview.html#ubuntu&quot;&gt;Ubuntu&lt;/a&gt; and &lt;a href=&quot;https://calver.org/overview.html#twisted&quot;&gt;Twisted&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Amorphous sets of utilities, like &lt;a href=&quot;https://calver.org/overview.html#other-notable-projects&quot;&gt;Boltons&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Non-technical audiences, who shouldn&#x27;t have to understand if a change is &quot;breaking&quot;, as in &lt;a href=&quot;https://calver.org/overview.html#apple&quot;&gt;Apple&#x27;s iOS&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Is your project time-sensitive in any way? Do other external changes
  drive new project releases?&lt;ul&gt;
&lt;li&gt;Business requirements, such as &lt;a href=&quot;https://calver.org/overview.html#ubuntu&quot;&gt;Ubuntu&lt;/a&gt;&#x27;s focus on support schedules.&lt;/li&gt;
&lt;li&gt;Security updates, such as &lt;a href=&quot;https://calver.org/overview.html#other-notable-projects&quot;&gt;certifi&lt;/a&gt;&#x27;s need to update certificates.&lt;/li&gt;
&lt;li&gt;Political shifts, such as &lt;a href=&quot;https://calver.org/overview.html#the-iana-olson-timezone-database&quot;&gt;the IANA database&lt;/a&gt;&#x27;s handling of timezone changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you answered yes to any of these questions, CalVer&#x27;s semantics make
it a strong choice for your project.
You can even have your agent adopt it for you, the &lt;a href=&quot;https://github.com/mahmoud/calver/blob/master/skills/calver-adoption/SKILL.md&quot;&gt;CalVer SKILL.md&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;what_about_breaking_changes&quot;&gt;&lt;a href=&quot;#what_about_breaking_changes&quot; class=&quot;toclink&quot;&gt;What about breaking changes?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;CalVer deliberately does not attempt to communicate breaking changes.
That&#x27;s because there&#x27;s never been consensus on what counts as a breaking change, especially in mature, widely-adopted systems.
Some versioned objects don&#x27;t even have breaking changes, such as informational documents.
&lt;a href=&quot;https://sedimental.org/designing_a_version.html&quot;&gt;There is no substitute for a changelog and policy&lt;/a&gt;.
Pair a calendar version with a time-based deprecation policy and
you&#x27;re in good graces: Twisted requires one year and two releases between
deprecating something and removing it. Further
discussion in &lt;a href=&quot;https://github.com/mahmoud/calver/issues/4&quot;&gt;GitHub Issue #4&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;multiple_releases_per_day&quot;&gt;&lt;a href=&quot;#multiple_releases_per_day&quot; class=&quot;toclink&quot;&gt;Multiple releases per day?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Append an incrementing micro segment, &lt;code&gt;YYYY.M.D.MICRO&lt;/code&gt;: &lt;code&gt;2026.9.11&lt;/code&gt;, then &lt;code&gt;2026.9.11.1&lt;/code&gt;.
Intra-day timestamps trade readability for still-limited resolution 
(two releases in the same minute) or a version that grows too
long. Humans don&#x27;t convert a second-counter to a wall clock in
their heads. 
Further discussion in &lt;a href=&quot;https://github.com/mahmoud/calver/issues/49&quot;&gt;#49&lt;/a&gt; and &lt;a href=&quot;https://github.com/mahmoud/calver/issues/62&quot;&gt;#62&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;to_pad_or_not_to_pad&quot;&gt;&lt;a href=&quot;#to_pad_or_not_to_pad&quot; class=&quot;toclink&quot;&gt;To pad or not to pad?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Short version: Unless your versions commonly appear as
filenames to the end reader, unpadded is the sensible default.
&lt;code&gt;YYYY.M.D&lt;/code&gt;, not &lt;code&gt;YYYY.0M.0D&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The longer explanation is that most version comparators already treat 
&lt;code&gt;04&lt;/code&gt; and &lt;code&gt;4&lt;/code&gt; as the same number. 
dpkg and rpm compare numerically, and &lt;a href=&quot;https://packaging.python.org/en/latest/specifications/version-specifiers/#integer-normalization&quot;&gt;PEP 440 normalizes
leading zeros away&lt;/a&gt;, so PyPI shows &lt;code&gt;2025.4&lt;/code&gt; whether you pad or not.&lt;/p&gt;
&lt;p&gt;Padding is problematic in a lot of systems, 
because a padded segment is invalid &lt;a href=&quot;https://semver.org/&quot;&gt;SemVer&lt;/a&gt; (&quot;MUST NOT
contain leading zeroes&quot;). Cargo and Go both enforce strict SemVer, 
so definitely don&#x27;t pad there.
NVIDIA&#x27;s GPU Operator uses CalVer and &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/life-cycle-policy.html&quot;&gt;puts it this way&lt;/a&gt;: &quot;Zero
padding is omitted for month to be still compatible with semantic
versioning.&quot;&lt;/p&gt;
&lt;p&gt;Zero-padding makes the most sense when versions will commonly
live in filenames, image tags, or object-store keys that get listed 
lexically. With padding, &lt;code&gt;26.04&lt;/code&gt; stays sorted ahead of &lt;code&gt;26.10&lt;/code&gt;. 
This is probably why Ubuntu, NixOS, the Arch Linux ISOs, and
NVIDIA&#x27;s monthly NGC containers pad. Pad when it helps your 
users to have the basic lexical sort work out of the box.&lt;/p&gt;
&lt;h2 id=&quot;spec_changelog&quot;&gt;&lt;a href=&quot;#spec_changelog&quot; class=&quot;toclink&quot;&gt;Spec changelog&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;26.0&lt;/strong&gt; (2026): short month, week, and day are written
  &lt;code&gt;M&lt;/code&gt;, &lt;code&gt;W&lt;/code&gt;, and &lt;code&gt;D&lt;/code&gt; (the synonymous doubled &lt;code&gt;MM&lt;/code&gt;, &lt;code&gt;WW&lt;/code&gt;, and &lt;code&gt;DD&lt;/code&gt; are deprecated due to ambiguity). Optional segments in square brackets. Padding
  guidance. Case studies and users refreshed for a decade of
  adoption.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;19.7&lt;/strong&gt; (2019): revised text, case studies, and users list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;16.6&lt;/strong&gt; (2016): original publication.&lt;/li&gt;
&lt;/ul&gt;



&lt;hr /&gt;

</content>

  </entry>
  
</feed>
