-
Notifications
You must be signed in to change notification settings - Fork 4.9k
Description
CalVer sounds really good especially as we will have to do changes and releases based on external factors i.e. if a security issue is found in a package we need to push a stable release immediately and if we work on a bigger feature i.e. porting our aged core to rust and using it to do the heavy lifting and by that reduce the complexity we have sitting in our chaotic elisp core we may not have much to show for weeks.
If we go for CalVer I would vote for YYYY.MINOR.MICRO this would allow us to increase micro for bug fixes and minor for breaking changes, resetting each year. A year change is then always like a breaking change.
What do you think?
Originally posted by @smile13241324 in #16775 (comment)
There are numerous semantics we could adopt, but I think for something as significant as an elisp to rust transition for core/ should be done in spacemacs/core-rs and populated as a submodule during install. If core/ is a submodule users can choose to populate it with either the default elisp, which should be maintained in perpetuity for hacker's sake, or the rust port for speed (when released).
I think whatever semantics are adopted should respect:
- layer api
- dotspacemacs version
- patches
- features?
The big question is breaking changes for who? Package authors? Layer authors? dotspacemacsen? That's what a version number should encode. The meaningful bits at a glance. Is it safe to update from 2512–2601 in a scheme with YYMM as a prefix?
YYMM.LDPPP
- year
- month
and
- layer
- dotspacemacs version
- patch
- 2506.1.1‐001
- 2506.1.1‐002
- 2507.1.1-001
- elided
- 2509.201003
They're all directly comparable with <
if each larger component resets the others, just like a clock, yes.
Maybe the usual bits should be flipped? Or CalVer is crap for us? 🤷 Are version numbers helpful at all?