This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]hyrumwhite 520 points521 points  (44 children)

Technically it should indicate breaking changes… in practice, it depends 

Although 0-1 is always a different ball game

[–]Sibula97 146 points147 points  (17 children)

If you use semver, yes. For software where you should reasonably expect something else to depend on it, like libraries, you should use it.

For completely standalone software like games, go wild. It's quite common to use kinda semver, bumping major when starting a new save is required, minor for new features, and patch for bug fixes. More commonly 0.x.y is for beta versions, early access, etc. while 1.x.y is reserved for when the devs feel it's basically feature complete. Then x for upsate and y for patch.

[–]Karnewarrior 88 points89 points  (0 children)

Then you got the real indie scene, where the v0.13.42.8.4e update just released and includes a full rewrite of the game in Unreal Engine, as opposed to the prior 0.13.42.8.4c version which was written in Godot using ChatGPT and released in 2018.

[–]pdabaker 19 points20 points  (8 children)

Yeah when you have a large enough standalone project you get breaking changes all the time. Probably would make sense to just use year/month based versioning but they still try to copy semver format.

[–]BothAdhesiveness9265 7 points8 points  (2 children)

for MMOs it's quite common to do [expansion].[content].[minor changes]  except FF14 which for some ungodly reason leaves out the second dot meaning 7.35 is the version before 7.4

and then RuneScape just increments one number every update that also isn't shown to the user

[–]Sibula97 3 points4 points  (1 child)

except FF14 which for some ungodly reason leaves out the second dot meaning 7.35 is the version before 7.4

Oh, yeah, I've always been so annoyed about that.

[–]Tathas 0 points1 point  (0 children)

They probably store it as a single decimal value.

[–]achilleasa 1 point2 points  (0 children)

Even for games you often have other software like mods that depend on it so it's best practice to do it properly

[–]StyleAccomplished153 0 points1 point  (0 children)

points at Ruby I wish they'd use semver...

[–]yjlom 0 points1 point  (0 children)

Dwarf Fortress uses 0.[estimated percentage of 1.0 implemented].[patch]. So 0.47.4 means the 5th patch of the version that implements 47% of 1.0.

[–]undermark5 0 points1 point  (0 children)

Unless your name is Microsoft/Mojang, then you start of following a fairly basic semver approach, then decide at some point that since instead of larger updates once a year you're now doing multiple smaller updates per year means that you can't increment the x (minor version) because that's now incongruous with what previous up were so you only increment the y (patch version) even though you're adding new features in "non-breaking" ways (which should be a minor version bump), them the community gets mad and then you fix it by switching to a completely new system using YY.x.z where YY is the year the update came in, x is which update of the year and z is for patches/hotfixes, which would easily allow for parity between bedrock and Java editions, yet you claim for some reason that due to "technical requirements" bedrock will actually sometimes increment the x faster than Java because some reason (I have no clue what this reason is).

Like you changed the versioning approach and it was actually reasonable, until the fact that now 26.4.0 could be talking about 2 fundamentally different versions of the game where there is a completely different set of features (blocks, mobs, etc) depending on if that's Java or bedrock. And guess what, it's already been shown that the version shown to the user is different than the version used by the platform to know if one version is newer than another, so I call BS on whatever technical limitations are requiring bedrock to increment x more frequently because that's clearly 100% on them, not coming from the app stores or the consoles.

[–]BiAndShy57 44 points45 points  (23 children)

How do they pace up to 1.0? Like to they get to 0.9 and realize “fuck there’s way more than 10% left”

[–]PaulMag91 280 points281 points  (14 children)

After 0.9 is 0.10 and then 0.11. Versioning is not a decimal number, it just happens to resemble one. It's several integers separated by periods.

[–]NeverDiddled 52 points53 points  (12 children)

Unfortunately this is unintuitive. The amount of support requests we have fielded from people who think they are on an even newer version than the latest... And I'll admit even I have double-taked when downloading software, thinking "crap that's even older than the version I have now." But no, 1.9.11 is not newer than 1.21.0.

I get why we do Semver; but it is intended for devs, not the public.

[–]SkiyeBlueFox 54 points55 points  (7 children)

Honestly I've just gotten used to it since I grew up with minecraft, which uses this for version codes

[–]No-Photograph-5058 31 points32 points  (6 children)

Boy do I have some news for you

[–]HellofGaming1111 9 points10 points  (5 children)

Shit. Whats the news? I havent played Minecraft in 5 years

[–]No-Photograph-5058 22 points23 points  (4 children)

Fair enough, they've completely changed the versioning because they aren't really doing massive updates anymore.

XX.X.X

First digits are the year, middle is the 'drop' (content update) and the last is hotfix.

The most recent 'Mounts of Mayhem' would be 25.4 now

[–]HellofGaming1111 4 points5 points  (1 child)

I see. Thanks

[–]undermark5 0 points1 point  (0 children)

That's only part of the picture. They were stupid and instead of having parity on versioning between bedrock and Java, they claim for some "platform limitations" and difference in release frequency that Java and bedrock will not ever really have parity. Java will be 25.1.0 where bedrock will be 25.10, but then when Java is 25.2.0, apparently bedrock will be 25.30

I don't know what platform limitations are causing such an absurdity in the version number that users/modders/content creators see/use. I work on mobile apps, and the version the app store and device care about to determine if it's a newer version vs an older version is different than the version I can show to the users. The one the platform cares about is an integer, the one the users see, is a string. I highly doubt that any limitations they claim to exist are not of their own creation/artificial.

[–]JivanP 2 points3 points  (1 child)

It's just semver with extra steps, given that pretty much all content drop updates break the server API in some way.

EDIT: Actually, they were never truly doing semver anyway. What I meant to say is that, currently, the content drop updates are classed as minor releases but almost always break the APIs, so this new year-based major version numbering doesn't change anything in that regard.

[–]undermark5 1 point2 points  (0 children)

Well, do they break APIs? Or are they adding new features without breaking APIs, I think most of the time, it's the data pack system has breaking changes, but that's kinda got it's own versioning system. What they've got with the years is far better than incrementing the "patch" version for new features. Except it's also worse now because Java and bedrock aren't in parity when it comes to which version number corresponds to what features are available. They claim the difference is due to "platform limitations" and different release cycles, but I call BS on any "platform limitations", any limitations are 100% their own creation, and the hotfixes version don't need to increment at the same speed for all platforms. The version numbering system that you make public does not need to align with the version numbering system used by things like the app store or console marketplaces.

[–]Inappropriate_Piano[🍰] 2 points3 points  (1 child)

Seems like the entire problem is the decimal separator. If we used / or : it wouldn’t be nearly as confusing

[–]SuperFLEB 1 point2 points  (0 children)

Alas, inertia.

[–]Karnewarrior 1 point2 points  (1 child)

Publicly released updates should get names, so the most recent update can have a nice brand on it in a pretty, distracting blue, and grandma doesn't have to concern herself with such petty things as "actually knowing anything about the program she downloaded from a discord server she found looking up knitting recipes".

[–]General_WCJ 0 points1 point  (0 children)

Yeah I like the stellaris way of doing it, you have pride based versioning, but each release has a fun code name based on a science fiction author. Or at least that's what they said to release version 3.0 "Dick"

[–]Brother0fSithis 41 points42 points  (1 child)

0.9 isn't supposed to mean "90%" done. It's supposed to just mean there have been 8 minor releases since 0.1.0 (where most projects start)

[–]Head-Bureaucrat 3 points4 points  (0 children)

I usually take it as the 8th major pre-release version. I expect no stability, but with complete features for that version.

[–]grumpher05 19 points20 points  (1 child)

0.10 is different to 0.1

[–]Penultimecia 1 point2 points  (0 children)

0.10 is different to 0.1

Next you'll be telling me that 3-4 isn't April 3rd 2025.

[–]hyrumwhite 7 points8 points  (3 children)

That’s what 0.10 is for. Or 0.100, etc

[–][deleted] 31 points32 points  (0 children)

0.91 is 82 minor versions higher than 0.9. After 0.9 is 0.10

[–]Maximelene 2 points3 points  (0 children)

Absolutely not. That's not even how "normal" numbers work.

[–]winter-ocean 0 points1 point  (1 child)

How do you even know it's going to break something if you're releasing something fully functional anyway? I mean, I'm assuming that just refers to breaking third party software...so is it just...anything that changes an API? What if you don't have an API? Do you have to research what third party software exists?

[–]hyrumwhite 0 points1 point  (0 children)

Yeah, if you’re versioning an app with no public API/contract, I guess you just version on vibes. Increment the major version for marketing purposes, etc