I propose we replace semantic versioning with pride versioning
@nikitonsky love it, is this post the canonical URL for quoting? :)
@nikitonsky
Isn't this how it's always been?
@j_j @nikitonsky yeah, looks very much like how I number releases at work. Still on v2.x.x :(
@j_j the proud version also jumps up to a large round number significantly different from the previous one when the marketing team gets involved, even if there's nothing to be proud of.
@nikitonsky isn't this how it already works for most things
@hazelnot @nikitonsky I honestly have no idea how versioning works and just assumed this is how it works lmfao
@ivy @nikitonsky @hazelnot it shouldn't be how semantic versioning is done but a lot of developers just do whatever the fuck they want lol
i also may have been guilty of doing this in the past :3
@nikitonsky @ivy @hazelnot in theory it should be major.minor.patch where major is only incremented for breaking changes
@lily @nikitonsky @hazelnot fair, but what happens if you get to like 1.9.9 and your next update is also not breaking so then it's like 1.99.9 or like what if everything is always backwards compatible
@ivy @nikitonsky @hazelnot after 1.9.9 the next update would be 1.10.0
@lily @ivy @nikitonsky I used to think that after 1.9 comes 2.0 and was confused when Minecraft 1.10 came out
@lily @ivy @nikitonsky I was already legally an adult at that time btw
@hazelnot @nikitonsky @ivy the way minecraft does versioning is really funny. i assume it doesn't follow semantic versioning but we look at it that way that would mean that there were no breaking changes between 1.0 and 1.21 or whatever is the latest

@lily @nikitonsky @ivy to be fair you can just, load a map from Minecraft 1.2 and it will work

Not seamlessly, the new chunks are gonna be hella different, but it will work. And if you factor in converting the file it will apparently work all the way back to Infdev-20100327

So I think it would be like, 2.something, cause the previous map format was from the beta which wouldn't count since they reset versioning between the development stages

@hipsterelectron I'm not joking I'm just dumb 
@ivy i deleted bc i didn't feel like i fully understood whether @lily was joking and/or whether they were talking about an intricacy i didn't understand sorry!! i rly wish the . separator wasn't used bc it reads like a decimal to me and in fact the three columns are completely distinct nonnegative integers. they were obv correct that if you make a new minor (middle) release, that that resets the patch (right) counter to 0 (and major/left does the same to minor and patch)
@hipsterelectron @ivy the reason i said 1.10.0 and not 1.9.10 is because she asked the next update, not the next patch
@lily @ivy thanks! glad i deleted
@ivy @lily i wanted to clarify that it's not a decimal so 1.9.9 => 1.9.10 if incrementing patch, while as lily said it goes to 1.10.0 if incrementing minor (this is what i misunderstood). but incrementing patch is totally distinct from incrementing minor is all
@ivy @lily this gets much more tricky if you are trying to parse version strings as constraints as opposed to concrete strings. i have tried to rewrite the version parsing in @spack literally 5 times so far and i keep throwing it away—spack will parse any version string and has a hook method to parse horrific stuff like openssl versions. it's ludicrously interesting but fundamentally at this point i think we should not be stringly typing versions, either concrete or constraint
@hipsterelectron @ivy@cutie.city @lily @spack c'mon Danny, it's one regex, what could it cost? 2 pegged cores?
@arichtman @ivy @lily noooooo don't make me think about parallel compiling regex that's the one thing that was safely serial!!! spack's code is actually very straightforward for parsing it's actually calculating whether something like @3:4 contains the concrete version @4.1 and propagating inclusivity of range endpoints where everything gets hairy and awful. other package managers have it easier bc they can restrict what packages can declare but spack supports literally every codebase including non-semver ones so it needs to be completely general
@hipsterelectron @ivy that’s not dumb, quite the opposite. It’s an intelligent question in response to a non-obvious behaviour.
Note also, this isn’t the only system. At my workplace we do, eg, R24, or R24.8, where R24 is the first released version in 2024, and R24.8 is the first released version in August of 2024.
@hazelnot Yes. The most devastating breaking changes are typically in a "patch" release.
That's kinda how I do it already
@nikitonsky And compatible versioning with eaks versioning:
x.0 - [0] versions since API breakage, x breaks so far
1.y - [y] versions since API breakage

@nikitonsky how about the metric versioning system?

X.Y.Z

Rules:
- Start at 0.0.0
- Increment Z when you tag a release
- When Z reaches 9, the next version is X.(Y+1).0
- When Y and Z both reach 9, the next version is (X+1).0.0

That's it! Always 10 releases between minor versions and 100 releases between major versions. None of the confusing counting methods of imperial versioning. What could be simpler?

@aburka @nikitonsky

Year and build number. That's what infinite kind uses iirc.

Your metric proposal is bad. I'm sorry, I don't like to say that on a non work discussion. It means there will be huge pressure against doing patch releases from marketing folks. The resulting conversations can be... High energy.

Which is why I boosted the spot-on original post

@aburka @nikitonsky Nah, most system work on the assumption that a major version is incompatible. So while it's more or less safe to update to latest minor and patch, major version upgrades don't happen that often.
@nikitonsky
This is a really good way to explain it outside of "major addition"."minor feature"."bugfix"

@nikitonsky Exciting news everyone!

Release 0.0.6853 is out. Upgrade today (or don't).

@jack @nikitonsky “Update if you enjoy my shame I guess”

@nikitonsky

I worked for a software company in the 90s/around the millennium that shipped "point" releases, not "patch" releases, because the word "patch" connotes a problem.

#truestory

@nikitonsky insta-coding this into my current project's version class. i'll use this post as a credit url until you get a better one ;-)
@nikitonsky Oh, that's why all my projects are still 0 as the first segment!
@deepbluev7 @nikitonsky Well, some of my projects are version 0.0.x, so...

@nikitonsky

Or this interpretation

- Enough changes/upgrades that you can justify it being a paid upgrade
- Significant things that should have been included/fixed in the current version, free upgrade
- Changes that 99% of users won't notice

@nikitonsky Current #XeTeX is 0.999992. That is 999992 shameful releases.
@owiecc @nikitonsky … or the 2nd version of the 5th really-final-I-mean-it-this-time pre v1 release?
@nikitonsky "My faith! For more than forty years I have been speaking prose while knowing nothing of it, and I am the most obliged person in the world to you for telling me so."
@nikitonsky
Windows 0.11.7554, right?

@nikitonsky all my software will be versioned the way it was when i was in university, though

0.0.0.52317

@nikitonsky That's too true to be published.
@nikitonsky might unironically start using this
@nikitonsky This needs the fourth digit of marketing.
@nikitonsky Context: The definition of semantic versioning https://semver.org/
Semantic Versioning 2.0.0

Semantic Versioning spec and website

Semantic Versioning
@nikitonsky that’s not how it’s done?
@nikitonsky The version number should be a single integer that gets bumped by one on every change 
GitHub - zegl/extremely-linear: Extremely Linear Git History // git-linearize

Extremely Linear Git History // git-linearize. Contribute to zegl/extremely-linear development by creating an account on GitHub.

GitHub
@nikitonsky With the invisible fourth number, the "this was so embarrassing you need to diff the code to discover the fix" element. Also useful for fixing typos in comments.

@nikitonsky a git-repo will come soon ^^" https://pridever.org/
also: can I use your image?

UPDATE: git repo: https://github.com/bison--/pridever

Pride Versioning - Pride Versioning 🏳️‍🌈 0.2.0

Forget semantic versioning, use PRIDE VERSIONING 🏳️‍🌈

@bison @nikitonsky can you add pride flags to this website? for reasons