Fabulously-Optimized / fabulously-optimized

A simple Minecraft modpack focusing on performance and graphics enhancements.
https://download.fo
BSD 3-Clause "New" or "Revised" License
877 stars 84 forks source link

Versioning, Sodium LTS and minor version breakage #816

Open Madis0 opened 3 months ago

Madis0 commented 3 months ago

First, let's start with some facts:

Therefore, more than ever it could make sense to:

However, there are obviously caveats:

I'm open to suggestions on what to change about FO's schedules and versioning. And as mentioned, any major versioning/backporting changes are planned for 1.21/6.0.0 at the earliest, no 1.20.1 backports are planned at this time.

TheBossMagnus commented 3 months ago

Some IMO points:

In both 1.20.1 and 1.20.2, the breaking changes of Sodium would definitely break other mods that users like to add.

One thing that (could) be done is to update only non-breaking changes (only fixes or minor features), as LTS works in Linux. This would reduce the effort needed but it's a compromise and goes against the latest is the greatest

What if 1.21.0 will never become stable but instead will be superseded by a later version?

I don't se the issue here

I've considered releasing FO 5.8.0 without CIT Resewn, because it has not updated yet.

I think the issue is not in the versioning itself, but in the criteria used to define the stability (alpha/beta/release). In Modding sometimes happens that it's not clear if a mod will get updated and when. Another case of this is been colormatic, and it has been skipped. I propose to define the status by thinking about the stability itself. If a not crucial (like sodium, iris -a list might need to be done-) mod is missing, it shouldn't be blocking the switch from beta to release. Obv the absence of features shall be mentioned in the changelog, always. Surely a more subjective solution, but also more truthful.

Any backports require my time and energy

That's completely on your own, but i believe a significant amount of players (roughly 58% rn aren't using 1.20.4 nor 1.20.2

In conclusion/TLDR:
Madis0 commented 3 months ago

Good points, thank you.

One thing that (could) be done is to update only non-breaking changes (only fixes or minor features), as LTS works in Linux. This would reduce the effort needed but it's a compromise and goes against the latest is the greatest

True, but if the changes are too minor (like 3 mods with minor changes), then the effort doesn't necessarily justify the update for me or the players.

What if 1.21.0 will never become stable but instead will be superseded by a later version? I don't se the issue here

The issue I meant is that like when FO "skips" (or actually skips) over a major version for seemingly no reason. Not really a user-facing issue I guess, just weird to look at.

I think the issue is not in the versioning itself, but in the criteria used to define the stability (alpha/beta/release). In Modding sometimes happens that it's not clear if a mod will get updated and when. Another case of this is been colormatic, and it has been skipped. I propose to define the status by thinking about the stability itself. If a not crucial (like sodium, iris -a list might need to be done-) mod is missing, it shouldn't be blocking the switch from beta to release. Obv the absence of features shall be mentioned in the changelog, always. Surely a more subjective solution, but also more truthful.

The thing is that Colormatic:

That said, if the update won't happen soon, then I'll likely do it anyway.

That's completely on your own, but i believe a significant amount of players (roughly 58% rn aren't using 1.20.4 nor 1.20.1

I see 46.8% of users using 1.20.4 in the "Minecraft Version" graph, so I'm not sure what you were referring to.

Edit: lol, I completely missed your point and the number is actually 34.6% that do not use either. 77.5% of users do use 1.20.x, with 1.20.4 being the most popular by now.

Maybe involving the community has been done with the vote for the removal of some mod. Maybe do not relay too much on numerical votes and more on the discussion itself.

Yeah, I usually prefer discussion over votes. Although for some mods a complete removal is not even necessary, I could just remove it now and readd later (like how it has happened with EBE many times) - it's more of a matter of meeting expectations and keeping the UX similar across stable versions.

osfanbuff63 commented 3 months ago

What if 1.21.0 will never become stable but instead will be superseded by a later version?

I don't se the issue here

The issue I meant is that like when FO "skips" (or actually skips) over a major version for seemingly no reason. Not really a user-facing issue I guess, just weird to look at.

IMO, skipping versions when it's a change in the first few alpha versions for a quick path (like with 1.20, 1.20.3, etc) shouldn't be needed.

Madis0 commented 2 months ago

I've been thinking about this and I could perhaps maintain 2 stable versions, e.g. 1.20.5 and 1.21.1. In the current versioning system that would be something like 5.10.0 and 6.1.0.

If I'd use major versions, things start to look weirder though - 5.10.0 and 7.0.0. Or, perhaps consider a situation similar to current status quo - 7.0.0 (1.21.1) and 10.0.0 (1.21.4). At some point the versions would be so far apart that it is very hard to grasp what is what - for example 5.10.5, 7.5.2, 10.2.3, 14.4.2.

Maybe I should map it to Minecraft versions to some extent?

Some mods use something like a prefix, a la 1.20.5-5.10.0 or 5.10.0-1.20.5. But then is there really a benefit of continuing the number? Aka, what about 1.21.0-1.0.4, 1.21.1-1.2.4, 1.20.4-2.3.5?

Which all comes down to readability and comparability again...

NebelNidas commented 1 week ago

I'd bump FO's major version component only for compatibility-breaking MC updates:

See ModMenu's or ClothConfig's versioning schemes. To avoid confusion as to which MC version is targeted, I suggest appending this information as build metadata (e.g. +1.21), just like Fabric API.

Madis0 commented 1 week ago

I'd bump FO's major version component only for compatibility-breaking MC updates:

  • 1.16
  • 1.16.2
  • 1.17
  • 1.18
  • 1.18.2
  • 1.19
  • 1.19.3
  • 1.19.4
  • 1.20
  • 1.20.2
  • 1.20.3
  • 1.20.5
  • 1.21

See ModMenu's or ClothConfig's versioning schemes.

That system cannot really work for modpacks, every version can break some compatibility...

To avoid confusion as to which MC version is targeted, I suggest appending this information as build metadata (e.g. +1.21), just like Fabric API.

Not sure if that is needed, since the names already have them, but maybe.