mahmoud / calver

đź“… The web's go-to resource for Calendar Versioning info.
https://calver.org
Other
489 stars 32 forks source link

Grammar? #36

Closed asarkar closed 3 years ago

asarkar commented 3 years ago

The good thing about standards is that there are so many to choose from. /Andrew S. Tanenbaum

Reading the docs here, I couldn't help but remember Tanenbaum's famous statement.

Ubuntu - YY.0M.MICRO
Twisted - YY.MM.MICRO
youtube_dl - YYYY.0M.DD
pytz - YYYY.MINOR
Teradata - YY.MM.MINOR.MICRO
Unity - YYYY.MINOR.MICRO
pip - YY.MINOR.MICRO
PyCharm - YYYY.MINOR.MICRO
OpenSCAD - YYYY.0M 
fusefs-ntfs - YYYY.MM.DD_MICRO
certifi - YYYY.MM.DD
boltons - YY.MINOR.MICRO

Seriously, what the &$!#%?

Please publish a grammar defining what constitutes a valid CalVer. As is abundantly clear from the above, such an important decision can't be left up to individual projects. Apart from restoring some sanity, it'll also help tools like the one I wrote (jsemver). SemVer 2.0 BNF grammar for reference: https://semver.org/#backusnaur-form-grammar-for-valid-semver-versions

It is also import to define precedence rules. Is 2020 greater, smaller or equal to 20? What characters are allowed in each version segment? Are numeric segments compared alphabetically or numerically? To my knowledge, none of these questions are answered by https://calver.org.

mahmoud commented 3 years ago

Hi Abhijit. Your tone aside, I disagree with your assertion of "abundant" clarity.

CalVer is shorthand for a common practice, not prescriptive standard. I recommend rereading the site, and linked resources, as to why SemVer's attempt at rigidness is a failure.

asarkar commented 3 years ago

Hi @mahmoud
I don’t think the answer to “SemVer's attempt at rigidness” is deliberate vagueness and lucidity allowing every project to concoct their homegrown versioning scheme. I’m wondering what’s CalVer’s role here? In other words, what’d change if CalVer didn’t exist (which is true for many of these projects since they began first).

mahmoud commented 3 years ago

"Calendar Versioning"/"CalVer" are mostly handy terms to reference the date/time-based versioning approach. The site is a counterpoint to the modern dogma of SemVer, and useful for people to justify taking control of their versions. It's been sufficient for calver projects (e.g., pycalver) to develop akin to jsemver. Linked from the site is this prelude I wrote explaining why that's a good thing for many: https://sedimental.org/designing_a_version.html

asarkar commented 3 years ago

Yeah, I read the article. In absence of concrete guidelines, CalVer at this time is simply a pattern recognition of what some other projects have been doing for years, without any intent or authority to solve the problems associated with SemVer. I’ll pass, for now. Thanks for your effort though.

mahmoud commented 3 years ago

That's right, CalVer informs, rather than dictates. For many, that property alone solves problems with SemVer. There are concrete guidelines there for those who care to see them. Per the meme in your avatar, keep on coding, and you may reach that point, too. :wave: