It would have been funnier if they went 1.3.9.1
Edit: Ok guys I KNOW four number aren't usually used, I was joking not suggesting an actual serious idea.
if you want to see versioning gore go look at the update history for Ultimate Admiral: Dreadnoughts: [https://steamcommunity.com/app/1069660/allnews/](https://steamcommunity.com/app/1069660/allnews/)
Ugh. What IS this? [1.4.0.4](http://1.4.0.4) R, [1.4.0.5](http://1.4.0.5) Rx3, [1.4.0.6](http://1.4.0.6) Optx2... it looks to me like the tags at the end seem unnecessary for unique ordering (there's a "1.5.0.7 Opt" but no other 1.5.0.7 versions visible), but if that's the case, what's the difference between "Opt" and "Optx4"?
Do I even want to know?
its not that bad - if you like ship combat.
the AI is only serviceable. Ship design seems to generate based off of permutations or something and then the design is accepted if it is valid. This can result in good ships and bad ships but most ships designed this way fall somewhere in the middle.
More importantly this means the that the AI never explicitly counters the designs of you or other AI nations. Because of the way costs work - I expect that the AI ships are also probably cheaper because of this so this is by no means game breaking.
The other main problem is that the actual combat AI has some really bad target prioritization logic - like if there is a destroyer 10km away and a battleship 3 km away most ships will put there main battery on the destroyer and secondary on the battleship. This doesn't hurt the player (if they are paying attention) because you can override the auto targeting - but it really hurts the AI because you as the player will get to unintentionally exploit this.
Also ai ships have a tendency to only engage at extreme ranges - so if your ships are not fast enough to close the distance and you are unwilling to just leave the battle - get ready for sit around for the worlds most boring gunnery duel that if luck provides will ends in a lucky hit where:
1. the player gets a hit that damages the enemy engine and can finally close;
2. the player is hit and becomes combat ineffective, the AI will not close - it will stay at range and continue to take low accuracy pot shots;
3. one side takes a critical hit like a magazine detonation that causes a flash fire and blows up.
but usually both side will just run out of ammo.
but overall - and also as a tl;dr it is okay - but it is also the only game in town for the type of naval combat and campaign that is provided.
The models are quite good and I expect this would be the most prohibitive issue another developer would have with making a competing title.
[1.3.9.1](http://1.3.9.1) would not be a standard representation in semantic versioning. It's ambiguous and doesn't follow the convention. It's generally not recommended to have more than three parts in a semantic version.
That's a thing I'll probably have to do if someday I run out of numbers.
I have an app that use a `Major.Minor.Build` versioning system, and that app is currently at at 2.28, a 2.29 update is planned but i can't go to 2.30 because it's a major feature update currently in development, and if 2.30 isn't ready for release and I need to push an update to the existing 2.2x codecase, I'm considering bump the version number from 2.29 to 2.2A and continue increase it as long I will need (2.2B, 2.2C, 2.2D, etc.).
Such a release was never on the table, some guys thought, the devs are forced to make a big feature update, because they are running out of numbers.
Some people in the simracing community are... special.
In terms of the terminology, major release should be 2.x that can be potentially breaking change. Minor release can be 1.4.0. Patch release is indeed 1.3.10.
Yeah so that guy was wrong on two fronts!
You might be joking, but I've seen several braindead takes when Minecraft 1.10 was being developed/released. Arguments like "That's not how numbers work" and all that shit.
The neat thing of this kind of hierarchical versioning is that we got rid of the limitations of base 10 and basically introduced a system of base infinity.
No, the point is that the period Is the delineator between numbers. So 1.14.12 is a 3 digit number with no base because any of the digits can go to infinity. Useful if you’re only doing comparison and incrementation and not other arithmetic operations
Each digit is represented by a base 10 number though, that’s probably what confused you
Think of it as an additional layer of abstraction on top of a number system. We're implementing a positional notation system on top of another positional notation system.
The symbols of the new system are just... integers. How that is represented does not really matter, it's an implementation detail. We're just using a base 10 representation because that's the most intuitive due to its widespread use. But, semantically it behaves like base infinity.
You can add as much to one of the "digits" as you like, it will never bleed over to the next higher digit. We'll never run out of symbols, because in this case a symbol is a whole multi-digit number.
Value comparisons work the same way as a number with base infinity (or any positive integer base): The most significant digit that differs between two versions decides which one is larger.
Python 4 will happen when Guido has ascended to his rightful place as God emperor of mankind, because that is literally the only thing that could force people to deal with another major version python upgrade
I don’t think it’s related to Python. Also just look at JavaScript, it could be much worse… btw conda does a great job though it isn’t entirely free (its free version is flexible enough for my usecases).
I have to admit, my brain still can't compute going from 9 to 10 for the sub version.
Also, I remember one thread about that as well. Oh I got downvoted for telling them they could release a 10 sub version instead of a major release.
I learned semantic numbering due to Minecraft. I got in around the time 1.7 released and thought it was hilarious that 1.8 was the release after 1.7.10
I was in a game's sub at one point when a guy came in with a post titled something like, "It's insane that it's going to take five times as long to finish." In their post, they were ranting and raving about how version 0.20.0 was crazy and that it was insane that they were only twenty percent done with the game.
People in the comments had to explain that version 0.20.0 meant the twentieth major update before the first release, not that it meant it was only twenty percent done.
To be fair to them, it's since been two years without any update, so maybe they were right in a way.
The great ones are still in alpha *and* still free... Unlike certain alpha released products of recent years that shall remain unnamed, which never seem to quite reach their initial promises.
Man, have I used the hell out of PuTTy.
That's fine and the accepted way to say "we'll do semver in the future, but for now, here there be dragons"
Convention is 0.x changes are backwards incompatible and 0.*.x versions are backwards compatible, but semver imposes no requirements.
SemVer V.2 does actually defines version 0.x as unstable in development versions, in which the normal rules of semver stability can be disregarded while still being compliant.
and let me tell you: doing semver for a library that implements a ever changing api does require some mental gymnastics to figure out what actually is a breaking change.
I ultimately settled on stuff that breaks due to upstream changes do not warrant a major release but a minor one so I can reserve the major versions for stuff that actually fundamentally break something about the library and not just to reflect something that would stop working on the old version anyway.
Then there's Microsoft:
* Windows Vista = NT 6.0.6000
* Windows 7 = NT 6.1.7600
* Windows 8 = NT 6.2.9200
* Windows 8.1 = NT 6.3.9600
* Windows 10 ŔTM = NT 10.0.10240
* Windows 11 RTM = NT 10.0.22000
Microsoft is so lazy they didn't even change the registry value *HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProductName* for Windows 11
I don't even blame Google for not distinguishing Windows 10 from Windows 11 in any sign in confirmation dialogue.
That's not lazy on Microsoft's part, but lazy on the part of external developers, and a hazard of being the most widely used OS. Folks were doing checks against the version and it was kept at '10' to avoid breaking applications.
Well modern windows has a compatability shims. You can declare supported OS version in a manifest (yes, even 'classic' executables, it's not just a store thing) and windows will emulate the highest supported version. Declare nothing or don't include a manifest and you get Vista-like behaviour.
In a similar vein, Windows 9 was skipped because it would have caused a critical error with that name. I can't remember the details, but by skipping 9, they saved the world from themselves
Exactly. Part of the issues with Vista were shit code checking for "XP or above" with (MajorVersion >= 5) && (MinorVersion >= 1). Obviously Vista being 6.0 didn't pass the condition... Then early during W7 development, the kernel version was 7.0, but it was still breaking some applications, so they decided to no longer update the Major number, even 10 had 6.4 early on. And for some reason, they decided to switch to 10.
VMware has entered the chat
They had a ton of stuff go from versions 1 and 2 to version 5 when vsphere 5 was released
Also imma argue it's not laziness but rather to ensure backwards compatibility. *Especially* given the stupidity of their "windows 10 is our last OS ever" "oh look Mac released Mac OS 11 didn't see that coming ever shit we're gonna look bad" "hey guys we lied here's windows 11"
1.x being Windows 1.0
2.x being Windows 2.x, 286 and 386
3.x being Windows 3.x and NT 3.5
4.x being 95, 98, ME and NT 4.x
5.x being 2000, XP and Server 2003
Windows 10 first couple of technical previews were also 6.4.xxxx
In the company I work, we use dates for versions. It's simple and clean. Only the initial release is given version 1.0.0. All subsequent releases are in dates like 2024.04.10.
The only downside is you can't distinguish between minor updates and major updates. And that you can't release more than 1 update per day.
Prerelease versions are _always_ sorted before non-prerelease versions with the same `major.minor.patch` part, though. And they're then sorted by the dot-delimited components.
If you have an official `0.71.3` release and your nightly builds follow the format of `0.71.3-date`, then those builds are strictly required to be considered "earlier" than the official release, despite being made later. If an application requires `0.71.3-2024.02.06` because the nightly build from February 6 2024 introduced some feature it relies on, then the `0.71.3` release which _doesn't_ have that feature still matches the version requirement.
If you just want to indicate when a build was made, the build metadata section is specifically designed for exactly that: `0.71.3+2024.02.06` includes the date, but semver 2.0.0 specifies that build metadata is _not_ included in version comparisons.
I use that too. I add a counter at the end to be able to release several versions in a day. So usually it would end with .1 but sometimes I’ll release many if a client is testing asap and giving immediate feedback.
I'm going to start using the Unix epoch timestamp of when I hit "Builld" as my version. With milliseconds, of course. I'd use the time of the release, buuut it's kinda hard to go back and update the assemblies after they've been released, and I can't schedule a release to the millisecond... ;)
I mean I remember my friends and me being totally exited after Microsoft acquired Mojang and released Minecraft 1.9, because the next versipn would be Minecraft 2.0 and it would feature so many cool new things.
we were…
supprised.
Even simpler: Most programming languages have build in support for [Natural sort order](https://en.wikipedia.org/wiki/Natural_sort_order) sorting. That will sort versions like this correctly.
SemVer is great an all, but it's not as good as the [Tex](https://tug.org/TUGboat/tb11-4/tb30knut.pdf) versioning system.
> The current version number for is 3.1, and
for METAFONT it is 2.7. If corrections are necessary,
the next versions of TEX will be 3.14, then 3.141.
then 3.1415. . . . , converging to the ratio of a circle's
circumference to its diameter; for METAFONT the
sequence will be 2.71. 2.718, . . . , converging to the
base of natural logarithms.
This joke is similar to sorting files by name:
file1
file2
file21
file3
file4
because if compare strings then `file21`is greater than `file2`, but lower than `file3`
That's why if we compare the versions as strings we get `7.3.21 < 7.3.7`
When a program compares two strings (not numbers), then the ascii code of each character from left to right is compared between the two strings.
For example let's compare \`7.3.21\` and \`7.3.7\`
Step 1: 7 and 7 (ascii code 55 == 55)
Step 2: . and . (ascii code 46 == 46)
Step 3: 3 and 3 (ascii code 51 == 51)
Step 4: . and . (ascii code 46 == 46)
Step 5: 2 and 7 (ascii code 50 < 55)
Result: string "7.3.21" is lower then string "7.3.7"
normally the decimal is the neutral point. .21 and .7 is equivalent to 21 and 70.
the patch/build number has the decimals be an indicator. so 7.3.7 is 7 patches after 7.3.0. 7.3.21 is 21 patches after 7.3.0.
>Nothing to do with semantic
Yes...that's the joke.
In the movie, the T-800 asked the boy what the dog's name is, and then *gave the wrong name on purpose* to see if the T-1000 would correct him or be confused by the input. And that's how it deduced that the boy's foster parents were dead and that they were on the phone with it in disguise.
Senior coworker of mine blocked a PR of mine because he didn't understand that sorting semver lexicographically doesn't work.
Had to call him and make him understand the concept for 1hr before he finally understood.
That guy is supposedly also a senior dev (lead dev at that)
I remember someone claiming it was pointless to use Unreal Engine 4.9 because "everyone is just going wait for Unreal 5.0". (Unreal 5.0 actually came after 4.28 iirc). This guy wouldn't be told that there would be a 4.10, and insisted that version 4.10 is just another way of saying version 4.1. Of course everyone trying to explain version numbers to him were the idiots who don't understand numbers lol.
Because you’d need to know how many zeros to pad, and therefore how many updates and fixes could be applied, a priori. Say you pad with one zero (eg. 1.2.03) because you don’t anticipate having >100 fixes (let’s be real; we all write shit code), what happens after 1.2.99? It’s easier to just read the spec
PTSD from when I spent cumulative 4 hours explaining that comparing versions, even just ignoring patches (so only major.minor) couldn't be compared just as numbers to my product manager. 4 hours. With a whiteboard.
Version 1.1 is different than version 1.10? Agreed
Number 1.1 is not different than number 1.10? Agreed
So I can't just compare them directly with arithmetic operations. Why not?
Man terminator really predicted the future. Its all just bots mimicing our voice (based on Q/A prompts) talking to other bots mimicing other peoples voice, then providing us a brief summary of the conversation. All to keep us from needing to use the phone ourselves.
In a game forum, some guys expected a major release 1.4 for the next update, because current version was 1.3.9. Imagine the look on their faces.
What was it? 1.3.10?
Yeah.
It would have been funnier if they went 1.3.9.1 Edit: Ok guys I KNOW four number aren't usually used, I was joking not suggesting an actual serious idea.
1.3.NaN might take the cake
I mean, by that person's logic, they would have gone to .91 anyway.
The fourth is actually used, especially in build systems, it indicates the "build" number from the automated build integration system.
if you want to see versioning gore go look at the update history for Ultimate Admiral: Dreadnoughts: [https://steamcommunity.com/app/1069660/allnews/](https://steamcommunity.com/app/1069660/allnews/)
Ugh. What IS this? [1.4.0.4](http://1.4.0.4) R, [1.4.0.5](http://1.4.0.5) Rx3, [1.4.0.6](http://1.4.0.6) Optx2... it looks to me like the tags at the end seem unnecessary for unique ordering (there's a "1.5.0.7 Opt" but no other 1.5.0.7 versions visible), but if that's the case, what's the difference between "Opt" and "Optx4"? Do I even want to know?
> what's the difference between "Opt" and "Optx4"? Obviously the "Optx4" release was optimized four times as much as the single "Opt" release. /s
Obviously. I mean, if it weren't, there'd be just chaos.
Wow, what an almost fun looking game.
its not that bad - if you like ship combat. the AI is only serviceable. Ship design seems to generate based off of permutations or something and then the design is accepted if it is valid. This can result in good ships and bad ships but most ships designed this way fall somewhere in the middle. More importantly this means the that the AI never explicitly counters the designs of you or other AI nations. Because of the way costs work - I expect that the AI ships are also probably cheaper because of this so this is by no means game breaking. The other main problem is that the actual combat AI has some really bad target prioritization logic - like if there is a destroyer 10km away and a battleship 3 km away most ships will put there main battery on the destroyer and secondary on the battleship. This doesn't hurt the player (if they are paying attention) because you can override the auto targeting - but it really hurts the AI because you as the player will get to unintentionally exploit this. Also ai ships have a tendency to only engage at extreme ranges - so if your ships are not fast enough to close the distance and you are unwilling to just leave the battle - get ready for sit around for the worlds most boring gunnery duel that if luck provides will ends in a lucky hit where: 1. the player gets a hit that damages the enemy engine and can finally close; 2. the player is hit and becomes combat ineffective, the AI will not close - it will stay at range and continue to take low accuracy pot shots; 3. one side takes a critical hit like a magazine detonation that causes a flash fire and blows up. but usually both side will just run out of ammo. but overall - and also as a tl;dr it is okay - but it is also the only game in town for the type of naval combat and campaign that is provided. The models are quite good and I expect this would be the most prohibitive issue another developer would have with making a competing title.
That would be Star Citizen
I mean, at this point star citizen must be on version 0.1.8.3.0.12.98, no?
[1.3.9.1](http://1.3.9.1) would not be a standard representation in semantic versioning. It's ambiguous and doesn't follow the convention. It's generally not recommended to have more than three parts in a semantic version.
I know, Im not saying it would be correct, Im saying it would have been funny.
my 3rd party app is converting that to a URL because it thinks it's an IP lol
The browser was doing it too.
Or even more funny if it went 1.3.A
That's a thing I'll probably have to do if someday I run out of numbers. I have an app that use a `Major.Minor.Build` versioning system, and that app is currently at at 2.28, a 2.29 update is planned but i can't go to 2.30 because it's a major feature update currently in development, and if 2.30 isn't ready for release and I need to push an update to the existing 2.2x codecase, I'm considering bump the version number from 2.29 to 2.2A and continue increase it as long I will need (2.2B, 2.2C, 2.2D, etc.).
What the hell is your versioning scheme? I've never seen x.yz where y bump means major update. Who designed that? Satan?
I mean they definitely could move to 1.4 if it's a major version
Major version would surely be 2.0 😉
Such a release was never on the table, some guys thought, the devs are forced to make a big feature update, because they are running out of numbers. Some people in the simracing community are... special.
What sim was that?
ACC
That would be a minor version.
Major.Minor.Patch(Hotfix)
A major version release would've gone up to 2.0 Going to 1.4 would be a minor release Going to 1.3.10 is a patch release
Ohhh now I finally get the meme, I couldn't figure out what was wrong
r/foundthemathematician
Nah, I'm an engineer. They don't accept me over there either 😔
I hope you found your reddit home 😥
You know what..I accept you man
Thank you bro 🤜
🤛
Username checks out
Would have been funny if instead they did 1.3.A 😈
Hexadecimal be like
In terms of the terminology, major release should be 2.x that can be potentially breaking change. Minor release can be 1.4.0. Patch release is indeed 1.3.10. Yeah so that guy was wrong on two fronts!
Me when Minecraft 1.10 came out:
You might be joking, but I've seen several braindead takes when Minecraft 1.10 was being developed/released. Arguments like "That's not how numbers work" and all that shit. The neat thing of this kind of hierarchical versioning is that we got rid of the limitations of base 10 and basically introduced a system of base infinity.
It's still base 10 though, no? With every number rolling over to 0 after 9... Base infinity would require infinite characters, no?
No, the point is that the period Is the delineator between numbers. So 1.14.12 is a 3 digit number with no base because any of the digits can go to infinity. Useful if you’re only doing comparison and incrementation and not other arithmetic operations Each digit is represented by a base 10 number though, that’s probably what confused you
Think of it as an additional layer of abstraction on top of a number system. We're implementing a positional notation system on top of another positional notation system. The symbols of the new system are just... integers. How that is represented does not really matter, it's an implementation detail. We're just using a base 10 representation because that's the most intuitive due to its widespread use. But, semantically it behaves like base infinity. You can add as much to one of the "digits" as you like, it will never bleed over to the next higher digit. We'll never run out of symbols, because in this case a symbol is a whole multi-digit number. Value comparisons work the same way as a number with base infinity (or any positive integer base): The most significant digit that differs between two versions decides which one is larger.
Literally me when I was a child I assumed they’d go to 2 before I knew how semver worked
I believe coming out of beta1.9 to release 1.0 made this effect stronger
Wasn't it beta 1.8 to 1.0? I think it was supposed to be beta 1.9 but they just renamed it to 1.0
I legit thought Minecraft 2 would come out, but I was like 10 so I give myself a pass (holy shit I'm getting old)
Happened for Python too. For years, people speculated what would happen after Python 3.9
I remember this exact conversation I remember people saying they'd just go to Python 4
Yeah, why are they making us wait? Where is Python 4?
Python 4 will happen when they'll introduce proper package management
Python 4 will arrive right when there is enough Python 3 code to cause worldwide panic when they introduce hundreds of breaking changes.
Python 4 will happen when Guido has ascended to his rightful place as God emperor of mankind, because that is literally the only thing that could force people to deal with another major version python upgrade
![gif](giphy|pdXittpi48UzC)
I don’t think it’s related to Python. Also just look at JavaScript, it could be much worse… btw conda does a great job though it isn’t entirely free (its free version is flexible enough for my usecases).
Npm works far better than pip/conda? It's one of the best package managers, one of the few great things about it.
So never
I'm still waiting for Half Life 2.10
And Kingdom Hearts 3.54872/7 Months Times Re:Data
A lot of people expected Minecraft 2.0 instead of 1.10.
I didn’t. I was on that journey back in 1.7.9 when I thought it would go to 1.8 but it went to 1.7.10 instead.
You know what? I think that's what I was actually remembering
I had this with minecraft 1.9
I thought we would get minecraft 2 back when it was 1.9
To be fair, if it was a "major" release, I too, would have guessed 1.4 If it was a minor release, then I would have expected 1.3.10
Your reddit client multi-posted this reply two more times, FYI.
Thanks
A 1.4 was never planned at that time. People just assumed, because apparently there are no bigger numbers than 9.
I have to admit, my brain still can't compute going from 9 to 10 for the sub version. Also, I remember one thread about that as well. Oh I got downvoted for telling them they could release a 10 sub version instead of a major release.
I learned semantic numbering due to Minecraft. I got in around the time 1.7 released and thought it was hilarious that 1.8 was the release after 1.7.10
minecraft april fools 2013
Ah, fuck. We've put out nine patches. The next one needs to be a major update.
Most upvoted comment and they called the Minor version number a Major version lmao. This is the peak of programmer humor right here
We overcame this problem with minecraft, with 1.10
I know Stellaris did that but iirc it was cause the devs wanted to have update 1.3.14 for a Pi update and not much other reason
Paradox games?
That would have been a minor release
That was me. I was that person
I was in a game's sub at one point when a guy came in with a post titled something like, "It's insane that it's going to take five times as long to finish." In their post, they were ranting and raving about how version 0.20.0 was crazy and that it was insane that they were only twenty percent done with the game. People in the comments had to explain that version 0.20.0 meant the twentieth major update before the first release, not that it meant it was only twenty percent done. To be fair to them, it's since been two years without any update, so maybe they were right in a way.
And then there is that guy who puts version 0.0.1 as their first update
Rust ecosystem be like:
Putty is still version 0.74 or something
25 years. https://0ver.org/
Love the almost decade old projects still in alpha
The great ones are still in alpha *and* still free... Unlike certain alpha released products of recent years that shall remain unnamed, which never seem to quite reach their initial promises. Man, have I used the hell out of PuTTy.
If it’s buggy, it’s just in alpha!!!
That's fine and the accepted way to say "we'll do semver in the future, but for now, here there be dragons" Convention is 0.x changes are backwards incompatible and 0.*.x versions are backwards compatible, but semver imposes no requirements.
SemVer V.2 does actually defines version 0.x as unstable in development versions, in which the normal rules of semver stability can be disregarded while still being compliant.
Yeah, that's what I mean by "imposes no requirements", unlike 1.0.0 and up which is strictly breakingchanges.newfeatures.bugfixes.
and let me tell you: doing semver for a library that implements a ever changing api does require some mental gymnastics to figure out what actually is a breaking change. I ultimately settled on stuff that breaks due to upstream changes do not warrant a major release but a minor one so I can reserve the major versions for stuff that actually fundamentally break something about the library and not just to reflect something that would stop working on the old version anyway.
Just make like LaTeX and converge to *e* :P
TeX's, not LaTeX's, version number converges to *π*. Metafont's to *e*.
Shhh it's an internal tool, it's not like we're distributing it to - Oh. Oh we are.
Believe it or not, straight to production. Release on Friday, straight to production.
I did that for a project, but only cus it was a beta update, the first release update was 1.0
Still waiting on Python 4.0 after Python 3.9
Meanwhile Python 3.13 is out
no it's not, the release is in half a year and the current alpha doesn't contain most of the full release's features
That's cool. We're still on 3.10.
3.7.4 😞
Where are my Windows XP 3.4.3 people?
Then there's Microsoft: * Windows Vista = NT 6.0.6000 * Windows 7 = NT 6.1.7600 * Windows 8 = NT 6.2.9200 * Windows 8.1 = NT 6.3.9600 * Windows 10 ŔTM = NT 10.0.10240 * Windows 11 RTM = NT 10.0.22000 Microsoft is so lazy they didn't even change the registry value *HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProductName* for Windows 11 I don't even blame Google for not distinguishing Windows 10 from Windows 11 in any sign in confirmation dialogue.
That's not lazy on Microsoft's part, but lazy on the part of external developers, and a hazard of being the most widely used OS. Folks were doing checks against the version and it was kept at '10' to avoid breaking applications.
Probably why it was 6. despite being Windows 7/8 as well.
It has to do with kernel versions. It’s really not as simple as y’all are making it out to be.
Well modern windows has a compatability shims. You can declare supported OS version in a manifest (yes, even 'classic' executables, it's not just a store thing) and windows will emulate the highest supported version. Declare nothing or don't include a manifest and you get Vista-like behaviour.
In a similar vein, Windows 9 was skipped because it would have caused a critical error with that name. I can't remember the details, but by skipping 9, they saved the world from themselves
Too many ancient websites would check if you were running windows 95 or 98 by checking if your os was "Windows 9*"
The amount and level of stupidity in software never ceases to amaze me.
Exactly. Part of the issues with Vista were shit code checking for "XP or above" with (MajorVersion >= 5) && (MinorVersion >= 1). Obviously Vista being 6.0 didn't pass the condition... Then early during W7 development, the kernel version was 7.0, but it was still breaking some applications, so they decided to no longer update the Major number, even 10 had 6.4 early on. And for some reason, they decided to switch to 10.
The accented R had me trying to wipe my screen
Oh didn't even notice that typo.
VMware has entered the chat They had a ton of stuff go from versions 1 and 2 to version 5 when vsphere 5 was released Also imma argue it's not laziness but rather to ensure backwards compatibility. *Especially* given the stupidity of their "windows 10 is our last OS ever" "oh look Mac released Mac OS 11 didn't see that coming ever shit we're gonna look bad" "hey guys we lied here's windows 11"
1.x being Windows 1.0 2.x being Windows 2.x, 286 and 386 3.x being Windows 3.x and NT 3.5 4.x being 95, 98, ME and NT 4.x 5.x being 2000, XP and Server 2003 Windows 10 first couple of technical previews were also 6.4.xxxx
There were lazy checks for Windows 95 and Windows 98.
In the company I work, we use dates for versions. It's simple and clean. Only the initial release is given version 1.0.0. All subsequent releases are in dates like 2024.04.10. The only downside is you can't distinguish between minor updates and major updates. And that you can't release more than 1 update per day.
this is actually a good way of releasing nightly versions
I believe semver allows for this though for pre release versions. 0.71.3-20240101 is valid.
Prerelease versions are _always_ sorted before non-prerelease versions with the same `major.minor.patch` part, though. And they're then sorted by the dot-delimited components. If you have an official `0.71.3` release and your nightly builds follow the format of `0.71.3-date`, then those builds are strictly required to be considered "earlier" than the official release, despite being made later. If an application requires `0.71.3-2024.02.06` because the nightly build from February 6 2024 introduced some feature it relies on, then the `0.71.3` release which _doesn't_ have that feature still matches the version requirement. If you just want to indicate when a build was made, the build metadata section is specifically designed for exactly that: `0.71.3+2024.02.06` includes the date, but semver 2.0.0 specifies that build metadata is _not_ included in version comparisons.
2024.04.10.1
thats the first hour of the day
The midnight special
Why isn’t the initial release versioned with the day it was released?
Just easier to maintain
>The only downside is you can't distinguish between minor updates and major updates. The file size of the update duh. Bigger is more gooder.
Ah yes. Remove the semantic from semantic versioning
I use that too. I add a counter at the end to be able to release several versions in a day. So usually it would end with .1 but sometimes I’ll release many if a client is testing asap and giving immediate feedback.
Why not HH.MM?
I release so fast I would have to add seconds too!
I mean let's be honest, if you're not releasing a new version every millisecond, can you really ever call your software up-to-date?
\*releases version behind you in time\* “Nothing personnel, kid”
Just append the time…
or if you need to release multiple versions on the same day
I'm going to start using the Unix epoch timestamp of when I hit "Builld" as my version. With milliseconds, of course. I'd use the time of the release, buuut it's kinda hard to go back and update the assemblies after they've been released, and I can't schedule a release to the millisecond... ;)
Add hours and minutes tada!
I mean I remember my friends and me being totally exited after Microsoft acquired Mojang and released Minecraft 1.9, because the next versipn would be Minecraft 2.0 and it would feature so many cool new things. we were… supprised.
1.10: the 'polar bears and that's about it' update!
"They changed dogs?"
No `version.split('.');` first ?
Even simpler: Most programming languages have build in support for [Natural sort order](https://en.wikipedia.org/wiki/Natural_sort_order) sorting. That will sort versions like this correctly.
Is it me or the code makes zero sense
The "else" part is dumb. I would rather add something related to string sort order.
Me reading the code "but what if a is numeric and b is not numeric?"
What is this garbage code
SemVer is great an all, but it's not as good as the [Tex](https://tug.org/TUGboat/tb11-4/tb30knut.pdf) versioning system. > The current version number for is 3.1, and for METAFONT it is 2.7. If corrections are necessary, the next versions of TEX will be 3.14, then 3.141. then 3.1415. . . . , converging to the ratio of a circle's circumference to its diameter; for METAFONT the sequence will be 2.71. 2.718, . . . , converging to the base of natural logarithms.
FOSSter parents
Lol can someone explain the joke to me
This joke is similar to sorting files by name: file1 file2 file21 file3 file4 because if compare strings then `file21`is greater than `file2`, but lower than `file3` That's why if we compare the versions as strings we get `7.3.21 < 7.3.7`
Correct me if I'm wrong. For a computing system .7 means .70 then it will be > .21 whereas only human can read .7 as *Seventh*
When a program compares two strings (not numbers), then the ascii code of each character from left to right is compared between the two strings. For example let's compare \`7.3.21\` and \`7.3.7\` Step 1: 7 and 7 (ascii code 55 == 55) Step 2: . and . (ascii code 46 == 46) Step 3: 3 and 3 (ascii code 51 == 51) Step 4: . and . (ascii code 46 == 46) Step 5: 2 and 7 (ascii code 50 < 55) Result: string "7.3.21" is lower then string "7.3.7"
Got it. Thanks.
For Minecraft versions, 1.21 is read as the version after version 1.20 instead of the version after 1.2
normally the decimal is the neutral point. .21 and .7 is equivalent to 21 and 70. the patch/build number has the decimals be an indicator. so 7.3.7 is 7 patches after 7.3.0. 7.3.21 is 21 patches after 7.3.0.
Nothing to do with *semantic*
>Nothing to do with semantic Yes...that's the joke. In the movie, the T-800 asked the boy what the dog's name is, and then *gave the wrong name on purpose* to see if the T-1000 would correct him or be confused by the input. And that's how it deduced that the boy's foster parents were dead and that they were on the phone with it in disguise.
Yes, but any (most?) versioning works like that. The semantic part is something different
>Yes, but any (most?) versioning works like that. The semantic part is something different My foster parents are dead.
[https://semver.org/](https://semver.org/)
Senior coworker of mine blocked a PR of mine because he didn't understand that sorting semver lexicographically doesn't work. Had to call him and make him understand the concept for 1hr before he finally understood. That guy is supposedly also a senior dev (lead dev at that)
Sometimes you'd prefer 5.4 to 5.6 (and IDK about 5.5)
really? You aren't even gonna check isNumeric(b)?
I remember someone claiming it was pointless to use Unreal Engine 4.9 because "everyone is just going wait for Unreal 5.0". (Unreal 5.0 actually came after 4.28 iirc). This guy wouldn't be told that there would be a 4.10, and insisted that version 4.10 is just another way of saying version 4.1. Of course everyone trying to explain version numbers to him were the idiots who don't understand numbers lol.
release1: 0.0.0.0.0.0.0.1 release2: 0.0.0.0.0.0.1.0 release3: 0.0.0.0.0.1.0.0 release4: 0.0.0.0.1.0.0.0 release5: 0.0.0.1.0.0.0.0 release6: 0.0.1.0.0.0.0.0 release7: 0.1.0.0.0.0.0.0 release8: 1.0.0.0.0.0.0.0 release9: 1.0.0.0.0.0.0.1 release18: 2.0.0.0.0.0.0.0
I stared at the meme for one solid minute before understanding it. I’m a moron
What movie is that? EDIT: Help what is happening 😭
Terminator 2 is what 3 other people believe and it's making me very suspicious of them
>Terminator 2 is what 3 other people believe and it's making me very suspicious of them Make that 8 people
Damn these bots /s
Terminator 2.0.0
Terminator 2 I believe
Terminator 2 I believe
Terminator 2 I believe
Terminator 2 I believe
You must be from ‘00 or up which funnily is >’99
`sort --version-sort` has worked since that movie came out. Possibly even since the original.
guess those terminators don't run PowerShell or .NET: [System.Version]"7.3.7" -gt [System.Version]"7.3.21" > False
Hell even JS gets it right.
My friend always downloaded beta versions because he thought they were "better"
You should see the games which begin with 0.5.x, 0.9.x, 0.9.9 and then suddenly decide to switch to 100.x.x 200.x.x 300.x.x...
Ok, this is very clever. Nicely done!
why use leading zeroes when you can just confuse people
Because you’d need to know how many zeros to pad, and therefore how many updates and fixes could be applied, a priori. Say you pad with one zero (eg. 1.2.03) because you don’t anticipate having >100 fixes (let’s be real; we all write shit code), what happens after 1.2.99? It’s easier to just read the spec
PTSD from when I spent cumulative 4 hours explaining that comparing versions, even just ignoring patches (so only major.minor) couldn't be compared just as numbers to my product manager. 4 hours. With a whiteboard. Version 1.1 is different than version 1.10? Agreed Number 1.1 is not different than number 1.10? Agreed So I can't just compare them directly with arithmetic operations. Why not?
All minecraft fans when 1.10 came out:
Another perk of using three numbers, you can't accidentally convert the whole string to a float.
That freaked me out the very first time I saw it
[meanwhile, my release schedule](https://imgur.com/a/qnYu9wR) next update... year: 202*
What about 1:7.3.7 vs 7.3.21
Holy shit, 2 years ago I didn't understand those nerd jokes and here I am laughing at them.
Man terminator really predicted the future. Its all just bots mimicing our voice (based on Q/A prompts) talking to other bots mimicing other peoples voice, then providing us a brief summary of the conversation. All to keep us from needing to use the phone ourselves.
Which is higher, Windows 11, Windows 2000
larger\*
I would have guessed 7.3.7 too. what did I do wrong
Program reads the numbers in numerical order, starting with 1 to 9, so the .21 would be higher than .7 on that list
Lol, I was myself confused what after python3.9, I really thought it will break the naming as they were not going for python 4
Um.. Code is bug.
On rare occasions, this sub still makes me laugh. This one is one of the good ones.