#Versioning
3760 messages · Page 4 of 4 (latest)
Well, no, because it's not legacy forge. It would provide a forge mod with those version numbers, but it would need its own versioning too
and if it does, it can be called neo-legacy and use its own versioning scheme
I'd say just go with MC version based stuff to call it a day
That way you get to not step on forge versioning, and this also isn't an issue
Or that, yeah
how exactly would it do this?
you seem to think that tech somehow magically exists
Howdy
Honestly, I don't really think that we really NEED to backport, so I'd be fine with keeping the current forge versioning scheme but restarting numbering at 1 (or honestly, even continuing where we are is fine)
@Mod("forge") class BackwardCompat {}
[[mods]]
modId="forge"
version="newest compatible"
NF-0.0.0-EXP/STABLE/RC
but eh
...have it JiJ an empty mod with the forge mod ID and the given version?
discussing old version maybes is bikeshedding
this entire channel is bikeshedding
Like, the current forge versioning scheme, for all the issues it has, works and is well-known
And if somebody wants to build neo for 1.12 for example, they'd probably need to basically maintain a whole fork of neo which would probably justify an even more differenter mod id
okay, giga, let's try an easier vote maybe? just to try to arrive at some sort of conclusion here:
Restart at v1 or continue from v48?
And since old minecraft versions are unchanging, they could easily use whatever versioning scheme they want without having to worry about minecraft changing
gimme a minute
👀
even trying to construct a vote is just farcical
😦
there's a four dimensional matrix, plus extra
we have fallen for the trap of being so open minded our brains have fallen out
when you need quaternions to figure out who won it gets a bit chunky
i'm okay with limiting the vote to forgever or forgever + restart, since i've already accepted that there are good reasons why my ideal versioning scheme would not work, especially at scale
cpw remember the subproject leader stuff? maybe name someone as 1.20.2 release manager and let them decide 😛
well, orion is. but this is a project wide long term effect thing
what is forgever?
forgever being the current scheme used by forge
I know the version scheme I would pick
why do you believe we need a "perfect" version scheme
Cool
okay, good, problem solved
what does that mean orion?
48.0.0
Restart at 1 major or keep going?
Would be the next
no commoble?
And once the snapshots for 1.20.3 / 1.21 start, it would be 49.0.0-alpha.<buildnumber>
It covers all bases
The format is easy to understand compatible with all existing versioning schemes, maven and gradle
what if we use a different modid for snapshots 
I'd personally suggest different artifact for snapshots but apart from that I'd agree with Orion
It is not needed cat
Gradle takes care of preventing you from using the version
right. here's the plan
we need to decide
voice chat, at the top of the hour
so in 45 minutes from now
And removing the custom artifact, takes care of so many other side effects
Okey
I will be on the move
But I can make that work from the car
feel like it should be separated out but honestly, it doesn't actually matter to me
So long as it works well enough for what we need, it's all thats necessary
If it's easier (toolchain wise) to stick to single artifact then go for that
maybe push it one more hour? just so we can get more maintainers to possibly join?
Much easier!
Much Much easier
the amount of work to do froge was insane. we still have code smell from trying to implement it
I see, then yes just add a suffix, we might need to make a post about how your should do maven ranges (because of the fact -alpha is a pita using the current ranges we suggested) but thats not a huge issue
it is actually really simple
If you just want the current MC version you pin it to the specific one
So 48.0.+ works
And 48.+ also does
If you need a guarantee that snapshots are excluded
Something like
something like [47.0.0,48.0.0-alpha) iirc?
so ugly
that is exactly the correct version
maven is ugly
The plus should also work cpw
At least on gradle
Does not work in maven
But that is wht we have in the FML system
no one is using maven to build mods
FMl uses Maven formatting
yes
We use it for dep info in the toml
I know
Just wanted to point out, that unless you want to specialy create code for dealing with calver, ordering and sorting of snapshots, then sticking to maven formats, regardless of how ugly they are, is the simplest, given that they are basically compatible with all the shit that is rolling up our hill
But we can talk about this in an hour
Or two
I first need to deploy an update to GDI
To make my Buildscript cleaner
hopefully you'll be home by then
I will be on the road / on my way home probably
k
But that does not matter
hmmm
NeoSnapForge-48.0.0?
Won’t know till we try
at this point we should rename #1105595318197825557 to #bikeshedding 
24 hour votes for maintainers and sc. majority wins. If tie, default versioning ends up used
nah
i feel that, at the very least, keeping the status-quo with versions doesn't harm us
24 hours is far too long
2 hours then
Yep yep yep
I can't be part of that, don't have audio, but I'd vote whatever way we need to gets this ship moving
also <@&1128776937410670663> voice meeting in 1h30mins fyi 😛
@delicate panther can you deny the permission "mention everyone when stage starts" for everyone (moderators included) in #1129163369874735204
i just set it on everything
that went by fast damn
Give me notes at work
not really notes illy. it's time to decide something.
<@&1128776937410670663> booop
you have 30 seconds /s
if you have ANY interest in versioning, get in the meeting channel now
have fun storming the castle debating versioning
@boreal blade you had an opinion, now is the time
I'm currently in a meeting at work
so long as the versioning works I don't care 
but yeah my opinion at this point is forgever (i.e. the current scheme) while restarting numbering at 1 because it's a known quantity
yeah, I have also said my piece. if the versioning works, great. I will probably find something to complain about with it regardless
So ultimately I agree, just make a decision
I cannot join voice - if there is one piece that I have a strong opinion on, it's that you shouldn't use the middle digit like in the current system to show BC-window-ness
Can’t join voice but I’m fine with any versioning scheme. But breaking changes should be allowed in 1.20.2. A lot of people assumed or was told that 1.20.2 is when Neo does breaking changes from forge so registry rework PRs and caps pr and other improvements should be allowed. Modpack makers already settled on 1.20.1 as established so 1.20.2 makes a good transition period for breaking changes to lead to 1.21
i'd echo that sentiment
my assumption was that the plan all along was to pull those big changes -- at least, the registry rework -- for 1.20.2
We don’t need to rush a stable build out anyway. A stable 1.20.2 won’t change or benefit anyone. Launchers don’t care if it is “stable” or not. They will still add support
also, in the main menu: I think the bottom-right text should only notify if a new stable version is out imo
mcminor.mcpatch.build
unstable builds are published into a snapshot repo with mcminor.mcpatch.number-snapshot
two maven repositories:
stable or release repository: mcminor.mcpatch.N
unstable: mcminor.mcpatch.N.M-SNAPSHOT snapshot builds
designated compatible unstable builds will be promoted either by copying or rebuilding, into the stable repository where they'll get their new number
an implicit break everything window exists whenever a MC version release.
there may be explicit additional breaking windows where stable will not be further compatible backwards. there are no plans for this at present.
20.2.1 - future stable MC 20.2 release build.
additional, compatible builds will be numbers 20.2.2 and such.
N starts at zero in unstable
20.2.0.1-SNAPSHOT -> 20.2.0.2-SNAPSHOT
promotion will promote 20.2.0.2-SNAPSHOT to 20.2.1
snapshot resets to 20.2.1.1-SNAPSHOT
Is there any particular reason why it has to be two repos? That seems really annoying to support for launchers
suggestion: the snapshot repo should also include the release builds, that way it can be the one you recommend modders use (so they can target snapshot builds for porting to new mc versions) and then the stable repo can be the one you recommend users use
mcminor.mcpatch.B - stable artifact
they may be in the same or separate repos
that's a research item
that way launcher support is basically a checkbox "include unstable versions" which swaps the repo to search for versions through
yes
Wait, does this mean that once a new snapshot is published other older "unstable" snapshots will be overwritten?
Or am I misinterpreting this?
B is a build index. so it's continuously incrementing
Ah, okay
I'll point out that you shouldn't use -SNAPSHOT then
That gets special treatment by maven
the B for a snapshot will become the stable B. so we could easily have 20.2.100 and then 20.2.500 in the "stable" world
Including constant update checks and whatnot
If you're not overwriting old builds why do you want that?
^
SNAPSHOT is meant exclusively for when you are overwriting
Not everyone is in voice. I’m technically in a conference at work lol
And by overwriting I mean incrementing that hidden number, sure
But if you're not doing that SNAPSHOT brings a lot of cost with no benefits
And so I'd use beta, or unstable, or whatever else instead. Basically anything really
-unstable
Snapshots will overwrite if their prefix is identical
-mcsnapshot would work too if it's for a minecraft snapshot
Also, what constitutes an unstable version? Does any PR land in an unstable build first and gets promoted to stable at some random point (basically status quo with recommended builds) or only within the breaking phase? If the former, then that's basically the death of quick innovation for mods since modpacks will nope out on stuff marked unstable
Using snapshots in any way makes mods unable to target a specific version of an unstable build. Which is just headache for no benefit, i don't want Forge randomly updating between working locally and jenkins building.
everything is unstable
always
promotion is a manual process for an existing unstable build, that strips the suffix
and republishes
I assume this will happen fairly often outside of an BC window?
-bleeding /s
Personally, a system like this that prevents PRs from reaching the "main" version lineage quickly just disincentivizes me to make any contributions to the upstream project. There should be less friction in the PR process, IMO, not more
I miss status quo versioning already lol
Yeah, that's basically what my comment above boils down to
we've backed down from snapshots
looking for one that has the special sort behaviour
I think the proposed system could work fine if there were a time - outside of the BC window - where promotion is automatic
so 20.1.20230920 could be a valid version, where 20.1.20230920-alpha would be the indev version?
This has been discissed
And our aim is to get your PRs quickly into the main branch and published as unstable
(i'm using 20230920 as a build number here, it can be whatever increasing number you want)
Right, but if the community is using stable, that means my PR isn't usable widely till it hits stable
if what you want is maintainer controlled versioning, this is perhaps the most convoluted way to make it happen
whereas if I mixin the same fix, it's usable immediately
i vote for -milestone
Yeah, that's my big worry here. I'm going to target what users will be using, and if I PR something it's so that I can use it
re: -rc, i would suggest reserving that for doing some sort of big integration test (like pushing to forgecraft for example)
The problem is that this behaviour has not changed
Like this gets to the general public immediatly on build
I think the easiest solution is to automatically promote builds made outside of a BC window
That's only true if the general public is using unstable
Yes and currently we have to constantly tell people to use latest not recommended. Calling latest "unstable" makes that even worse...
True, but the general public is not using none-recommended builds currently anyway
the unstable moniker will imply that it's not to be used
it is?!
The general public is using latest currently
modpacks are updating to latest forge after an RB because it's.. stable?
The problem is the wording. Latest vs. recommended is one thing but stable vs. unstable is substantially worse
I'd know, because I consistently depend on latest
Latest is greatest and should be the gold standard tbh
we could just call it a recommend build instead of stable
Obviously some PRs should be held back, but simple stuff should not
PRs sometimes have to sit. it's all situational and generalizing it is not a good idea
I second that (alternative: beta)
if unstable can have breaking changes until the next stable version no one is going to use unstable
Basically - given that that rolling release is what we should be encouraging use of, we should name it accordingly
how are we supposed to resolve this conflict
don't require every PR to go through unstable first
not every PR is a breaking change
which will just amplify the previous feeling lots of the community had of PRs sitting forever
how do we know?
take my chunk future fix as an example
if you want to test PRs then publish PRs separately
We do not know if your PR is a breaking change or not.......
do you always know?
You just... Don't break stable? And merge breaking changes at the next MC version. "Which things break" is resolved by a best-effort system, publishing PRs, and reverting if absolutely necessary
what happens if you're wrong?
The past has shown that more often then not, if it is not a bugfix, it was breaking in some way or another
then fix them?
if it was more complex than a bugfix, there was a facet that caused potential breaks, probably
it's software dev. we create bugs 😛
then what's the point of stable?
how much testing is gonna be going on if nobody is using it 
That it's post the window of intentionally merging BCs
do we just abandon any notion of stability?
That's the important bit here
If PRs can go just go straight in then you have to figure out what qualifies as going into unstable and what doesn't, and in that case you start a whole bikeshedding scenario about whether a pr should go in immediately or not
there's pros to PRs going in but cons to the management
unstable is a nice spot to land things like rewriting half of the caps system
so, if i'm understanding the current consensus:
20.1.20230920is the stable version that users will download from the main repo20.1.20230920-(alpha|milestone|whatever)is the next in-development version from the development repo- when the next in-development version is deemed stable, you strip the
-alphaand push it to the main repo
"stable" means "if we break shit we'll fix it"
it's not a nice spot to land trivial changes like a new event, or a bugfix
agreed
stability is important, preventing new features from reaching stability because things merged before it were breaking is important to avoid
What if the bug fix causes a bug? Throw out your system and treat every version as a breaking change?
It’s not a slippery slope basically. Reasonable assumptions can be made about PRs if properly triaged and tested
what was wrong with latest and recommended?
This doesn't work for the reason XFactHD and embeddedt described
End users should be using what you're calling "unstable"/whatever there
yes lets start using windows versioning terms
End users should be using latest
Recommended promoted people to it instead of latest. Recommended should’ve been called “non-breaking” and latest promoted
IIRC SP stands for "Stable Production" and it follows after RC, basically the version that's ready to go into stable as-is
Why not just make everything after the first recommended build also a recommended build? So, a "non recommended build" just means "we're in a BC window" and that's all it tells you
Seems like that would fix this issue
Given that users need to download latest anyways
Question, do we even need a stable/recommended build if everyone should and does use latest always?
Because, well, modders are using latest
i found some useful docs on the -suffixes
Yes, because players/modpack makers want it
my honest opinion is that there should be a stable cycle - after a certain version, ALL builds are stable, until we cycle back around to breaking. Otherwise we're going to end up in a situation where we started pushing reworks and breaking changes to an -unstable artifact, and we're unable to push non-breaking fixes and features to the last stable, because there's a breaking change in the middle
that means that all dev on neo stops as soon as an RB happens
Good point. I think we should be expressing the end of the BC window somehow but that's about it
...why? Wut?
that's not true.. wut?
modpacks want a latest version that has no breaking changes. a latest version that all mods would work for
until next MC release?
only breaking dev
so just bug fixes
?
You can add new events without breaking stuff
they don't need nor want a chain of versions that change stuff every time and can break at any time
No...? It just means that if BCs happen by accident, you revert them...?
do they though? Or is it just because they don't understand the terms they ask a lot what they should use? Because modpacks have to use the latest version or at least not RB because mods often times need features from past the RB as the modder PRd said change into the loader and wants to make use of it
That has never been the case. People have always found ways to introduce tons of features and fixes without breaking anything
my understanding is that the way recommended and latest worked on forge was that recommended was updated every once in a while to a newer version after it hardened
"not a BC window" just means no intentional BCs and you revert them if they happen
And do your best not to merge them to begin with
Modpacks already tend to use latest, not recommended. So do users
ALSO maven accepts semver 1.0.0 and sorts them according to those rules
and yet, look at brainstorming. that's technical debt accrued by forge NOT being able to change shit for YEARS
So frankly, that argument is useless
it was able to change shit for years, what are you arguing cpw?
we could still change those things immediately after a new version, we just weren't allowed to
just means on MC version change have a larger BC window
if that was true, why is there so much that needs changing?
the problem wasn't our versioning, it was leadership
Remove the tech debt next Mc version?
So, it's no different than your staging system? You can't merge intentional breaking changes outside of a BC window there either
I'm just saying get rid of the idea of a "stable" version
Given that everyone uses latest to begin with
A lot of those things were not reworked properly or at all because people with veto power blocked them and NOT because of non-breaking phases
And given that everyone should use latest
there have been continuous PRs reworking systems during different BC windows that were more or less ready if it weren't for someone blanket banning specific changes or people
so according to this, 20.1.20230920-dev SHOULD BE A VALID VERISON that maven treats as a prerelease version
the problem with abandoning stable - modpacks really need a stable version to target.
which makes sense (responding to Orion's comment in voice)
Anyways, I have to head out - I'll just say that If you start calling latest something that implies to users that they shouldn't use it... Nobody is going to want to PR stuff, myself included. Currently, users use latest. They should use latest. In fact, to use many mods they have to
@long ingot define versions A and B i want to make sure i dont misunderstand what ur saying
Modpacks can't use a RB for that anyways because mods very often need stuff newer than it
doesn't -latest also work as a suffix @boreal blade
Neo page could state when a Mc version is “ready for users” when we get a build up we feel is solid for widespread consumption
they don't get one?
according to https://maven.apache.org/pom.html#version-order-specification
If version strings are syntactically correct Semantic Versioning 1.0.0 version numbers, then in almost all cases version comparison follows the precedence rules outlined in that specification.
because modpacks want to use latest version of mods to have bugfixes
and mods require newer versions than last "stable" for feature reasons
modpacks want to use something that doesn't change randomly
Yeah, that. Newer versions have features that mods need, and have bug fixes for forge itself
they don't want new features to not happen
they just want them to not break the entire pack
As long as neo isn't intentionally introducing breaking changes, you're fine
Marking the entire Mc version as ready for users and provide latest download front and center gets people to latest always and let them know to use it
oh? i figured that the maven POM was how the versioning worked, mb
they happen accidentally, sure. that's when we make an announcement, apologise, and fix it, then move on
Revert the breaking change. Easy revert for a pr
Yes, they do. Cpw, my point is that people use latest already
that's literally the point of what we were doing
Because they have to
@stoic sedge
Yes but which version are you recommending for general users?
whatever build has been blessed as "stable"
what are you defaulting to?
Maven versioning: 1.0.0-blah > 1.0.0
It better be that "latest" one otherwise it's mod devs that have to deal with telling people "it's stable enough"
Yeah, that's where I take issue
That build is out of date
Often by a long time
Mod devs, users, and modpack makers should, and currently almost always do, target latest
Maven versioning: 1.0-m1 < 1.0
but most of the time when that does happen the only reason it gets caught is from the mass number of users who do different things in the game and then have at least a few happen to run into it. So like even just keeping it on a separate branch for a bit won't necessarily have them get caught either
according to the link I found earlier a, b and m also works
yeah
the "alpha", "beta" and "milestone" qualifiers can respectively be shortened to "a", "b" and "m" when directly followed by a number.
Maven versioning: 1.0.0-rctest > 1.0.0
Maven versioning: 1.0-ms > 1.0
Maven versioning: 1.0.0-sp > 1.0.0
Maven versioning: 1.0.0-alpha < 1.0-latest
at that point just have mcminor.mcpatch-SNAPSHOT?
@long ingot please no.. no docker latest tag..
Can't target specific versions with that
See my comments above about targeting a specific version
Maven versioning: 1.0-release == 1.0
orion's suggesting a x-latest for people who want the latest
ok apparently maven just doesn't support sp at all
Maven versioning: 1.0-rc < 1.0
alpha = a <<<beta>> = b <<<milestone>> = m <<<rc>> = cr <<<snapshot>> '<<<>>' = final = ga = release < sp
Maven versioning: 1.0-cr < 1.0
"alpha" < "beta" < "milestone" < "rc" = "cr" < "snapshot" < "" = "final" = "ga" < "sp"
candidate release?
omg... cr is Candidate Release and rc is Release Candidate. they literally flipped it
The usage of 'CR' qualifier is discouraged. Use 'RC' instead.
The usage of 'final', 'ga', and 'release' qualifiers is discouraged. Use no qualifier instead.
The usage of 'SP' qualifier is discouraged. Increment the patch version instead.
Prefer 'alpha', 'beta', and 'milestone' qualifiers over 'ea' and 'preview'.
Prefer '1.0.0-RC1'' over '1.0.0.RC1'.
okay, strange then, because from what i know sp comes right after rc but before release

anyway
sp is service pack, think like windows xp service pack 2
mcminor.mcpatch.N-cr - continuous releases and mcminor.mcpatch.N - promoted releases
I'm still not convinced unstable (replace with any alternative word) is needed
service pack or stable production? i've heard both now
bleeding edge instead of unstable?
although service pack does make sense in this case if it's after release
Agreed. Since the only ones updating to unstable NF builds are modders who prepare their implementation of the newly introduced thing, the amount of people testing such a version is very low since modders don't change their target version for fun, they only do so when they have an actual reason.
One accidental breaking change I want to mention as an example and one I myself introduced was making the experimental light pipeline default to enabled. Absolutely nobody would have caught that in an unstable build since modders wouldn't update to such a version since they would just expect the change to be transparent to them. In other words, the change would have lingered around until promotion to stable instead of for merely 5 hours or so because only players would have caught the issue when updating packs to that version
okay, so:
20.1.20230920is the stable version that users will download from the main repo20.1.20230920-cris the next in-development version from the development repo- when the next in-development version is deemed stable, you strip the
-crand push it to the main repo
(20230920 is just any increasing number per build, i chose date to make it obvious)
the -cr suffix sorts before it's "no suffix" equivalent, so we can publish "promoted" releases without the suffix and they'll be preferred.
right but I'm really not convinced manual promotion is the way to go
because it's not#
and arguing over how to call it is not fixing anything
it's ignorant
calver for the patch is just a convenient monotonic number for the build number, most CI systems use that 😅
manual promotion is entirely optional with this scheme
we may decide we need to do it for modpacks or whatever.
and that will be done by removing the -cr suffix
well also often times the breaking changes are from random side effects that the modder probably isn't testing for as well they didn't think to test that scenario in the PR for whatever the use case is.
Not to mention while modders do update to latest most only update their in dev when they actually need/want new features/a specific bugfix so then that is an even smaller subset for who may run into a breaking change
so you can still have breaking changes while the -cr suffix is there?
having a copy of every release seems very inefficient if we're not going to use it (and indeed, if using it is counterproductive in the first place..)
the CR just means it's Continuously Released
i think curle's reading what i'm posting which might suggest that
we won't be copying every release. only potentially nominated ones we feel deserve promotion
Yeah, the example I mentioned was a side-effect nobody tested for. Your second point is exactly what I wanted to get across
which, after the first stable release, should be every build, lest we make a breaking change in development and then never be able to push a stable again
once we copy every build, the unstable branch may as well not exist
if we 20.2.1 stable, then 20.1.2-cr has a breaking change (say, caps rework), we can't push a bugfix to stable, because now dev has a breaking change
we're locked to no further development because of this system
no?
it would have to be cherrypicked into stable
which means diverging history
yes
branch the diverge point
to be fair that's basically how all LTS projects work
this is literally standard practice
just ask modmuss about his experience doing that
for every fabric release
exactly
cherrypicking is NOT what we're advocating, if we NEED to push a stable fix
how else do you do it though
you generally don't cherrypick into the branch from unstable for a bugfix, unless the bugfix also exists there
typically it doesn't tho
on a most basic level, once we've published a stable release for a version, we can't push a new stable with breaking changes - so it makes more sense to branch off a development branch from stable to make those reworks, ready for the next breaking change period at the start of the next MC version
... wait, that's the current system.
ugh, at my last job we had to cherry pick all the time to get fixes into different branches because they insisted on having branches for each release
it was pain
myself and orion are using the system we have discussed
i think we have to make a choice, and make it now
and so we have agreed on this as the decision. sorry @mossy flume
i think you've made a huge mistake.
this versioning scheme doesn't work with the concept of what we do.
but the system you have discussed is basically unusable from a moddev perspective
I'm personally fine with using mcminor.mcpatch.N-cr for CI builds and mcminor.mcpatch.N for stable builds
i don't think we've made any significant changes.
Using it for what? Unlikely to be a modloader or similar thing that requires quick innovation while staying a stable target for API consumers
that's simply not true
i have no idea what you're talking about xfact.
You can't have both!
we can, and we have for many years
No we did not
?
That is a complete illusion
We had many many many reversion, bugfixes with behavioural changes and even breaking changes after RBs
the version number will be mcminor.mcpatch.N-cr and potentially mcminor.mcpatch.N for "promoted" releases
That doesn't make the product unstable
ah yes, my hard work for the last 4 years has just been an illusion. screw my contributions and team management making sure THIS EXACT THING doesn't need to happen
because the final version was still binary compatible with the original
thanks for that Orion
Someone should executive decision to keep the current system and halt this fiesta™️
The amount of reversions I can remember over the last few years can be counted on one fucking hand
the executive decision that was made was to change to what everyone else disagrees with
that seems like a contradiction for an open-source project ngl
shadows, no idea if you are in the meeting, the 2 making the executive decision, don't agree with us
Sure. Were all of those fixed?
@long ingot didnt all those features land during breaking windows?
and the other cases tended to be pretty quick merges in ways that just fixed whatever corresponding bug/break ocurred
Exactly
"bugfix with behavioral changes" apply to nearly all categories of bug fixes, because the premise of a bugfix is fixing (ergo changing) buggy behavior into acceptable behavior
^
Anyway, if this is the scheme this is going out, well, we will see what happens. I feel a lot of people will back out of making PRs and stuff
that is literally not what we're deciding about
Probably me too
Yup. Will be way faster to keep fixing things the way I always have
i have no idea what you think we've decided
you've decided on a stable/unstable branch (naming can change), right?
for reversions, the only one that I can recall at the moment was the reversion for the DFU set of PRs iirc
Yeah, the DFU ones and the light pipeline default setting
...so, which version do you recommend end users use?
can PRs be merged to stable directly?
the latest mcminor.mcpatch.N
If whichever version you recommend end users use isn't the cr version... That's an issue
that is important
the two decisions are: we've added -cr to identify "continuously released" builds. and we've embedded the mc minor (20) and mcpatch (2) as the first two numbers. The third is an incrementing number.
not really, if you merge them to unstable first, there is a delay
if you merge to stable, that is the same as the status quo
that is objectively incorrect
mcminor.mcpatch.N-cr is basically a "hot off the press CI build"
there's always a delay between "released" and "promoted"
When do continuously released builds get promoted to normal builds? (Outside of a BC window I mean)
yup monica
people use non latest forge ever?
What the fuck orion?
all the time unix
the takeaway from this whole conversation is that versioning ruins lives
Laughs in Magma 40.2.10 vs 40.2.0
if I check my bug reports on modernfix I highly doubt I will find this to be the case
Not everyone does, I remember I always used latest.
the moment a PR is merged, a -cr release is allocated for it
Modpacks ABSOLUTELY DO use non recommended versions
yep
yeah.
Given that I depend on later than recommended builds almost exclusively and don't have people suddenly not use my mods...
orion, I think you've hit the confirmation bias circle. after an RB, a lot of people use latest
ZERO FUCKS ARE GIVEN IF PEOPLE USE CR
No my point is which one do you encourage them to use? Which is in the top spot on the website? That matters
The rb
And if the answer isn't "cr" then this scheme is going to have issues
it always has RB
That has not changed
And we did not make any decision in that direction
So the current broken system then
it was ALWAYS FUCKING BROKEN
Where everyone uses latest but forge keeps trying to push RB... Lovely
Which is bad because mods need non-RB versions extremely often
this is what files.minecraftforge.net shows, I assume that most people would read left-to-right and pick latest first
On forge site, it lists RB with Latest next to it but us modders and sane pack makers keep telling people to use latest with all the bug fixes. And I believe most launchers points to latest. Not RB
That's how most languages work, yes.
(rtl languages would like to have a word with you, but still)
most people would pick recommended because it's highlighted and shit. also, it swapped recently. it used to be the other way around.
interesting
If a new version exists after RB, RB should be hidden
Up to down languages 
Latest should win
most people would pick recommended because it's highlighted and shit
in practice this isn't what modpacks use
last time people were stuck with the RB is 47.1.3 which was caused by forge BREAKING after 47.1.3
they use latest
And that resulted in us mod devs continuously having to tell them "yes, latest is perfectly stable, use that"
Modpacks tend to use latest. Mods definitely do.
because latest is maximum compatibility with mods
I'll point out that because neo merged bug fixes latest is generally less buggy than the RB
because mods use features that were added between recommended and latest
So, the proposed change does absolutely nothing other than using the mc version as the base, and appending -cr for non-recommended builds. The stance is still 'use the rb's'. Prs still go to -cr.
That's my takeaway, yeah
Yes, nothing has changed!
the stance was never "use the RB", the stance was to use latest after an RB
there's no concept of "still use the rbs"
no
As long as the stance is "use latest" this system sounds fine to me. But the website needs to reflect that and whatnot
Users and modpack makers should use latest. Neo needs to be the first one to tell them that
why are we arguing about a system that we've left behind?
nothing has changed!
The system to leave behind is recommending RBs always
because it wasn't left behind, apparently
Because we haven't. You've done nothing but rename "latest" to "cr"
Which... Changes nothing
we seem to be unable to change
The platform is called "Discord", not "benevolent agreement"
when making modpacks more often than not authors do in fact want recommended builds, but the problem is that you will always have mods in your list requesting latest, and bumping the modpack version to latest is nicer than removing those mods entirely, and everyone snowballs into using latest
so officially, forge recommends RB, but when it comes to actually using forge, users will say "no, use latest"
¯_(ツ)_/¯
It doesn’t matter what Neo “recommends” over latest. If mods keep restricting their versioning to a version after RB, players and pack makers have to move off of RB anyway, defeating its entire point of its name
there are certain kinds of change that are objectively bad, and lead to a worse future for everyone involved
okay, question: are we going to intentionally merge breaking changes to cr? outside of hypothetical breaking change windows after an mc release
Most people seem to be in agreement that this is one of those cases
"cr" implies to the end user "use this!" even less than "latest" did
not numbers, the philosophy behind the numbers
okay as someone late to this, wth does CR mean
the process that dictates how the numbers are to be used
what philosophy?
continuous release
^ problem.
this is an important question
what is the difference between 20.1.0 and 20.1.0-cr for you?
I would hope not, and everything I've seen from the previous discussion seems to be "no", or at least that was my discussion
officially according to maven, candidate release
officially according to neoforge, continuous release
Continuous Release, AFAIK
No, that was decided, just purely discussed as an option, and then discarded
okay, I don't have any issues then
no plans to.
there's an argument about a damn acronym
so then why not just have CR as the thing we all use
and move on
and forget the non-CR variant
I think this system is fine as long as CR is promoted as the "end users download this" thing
so, modpacks can keep using the latest/cr branch without worrying about mod compat with norge
it's still unclear to me what benefit non-CR has
Basically, we only really need to change “recommended build” to “User Ready” so pack makers and players know from that version on out, no more breaking changes
Because it turns out, there are people and modpacks which run on RBs - only! We even had a modpack maker in the meeting that asked that question and wanted it!
They just need to know that initial version to know to switch to that Mc version and keep using latest
the only change i'd make here to satisfy (i think) everyone, is to ONLY use -cr during the breaking changes period, and every release thereafter is normal non-cr
bam - solved for everyone
The latest build, whatever you want to call it, has been and still is what users should be encouraged to use. As long as neo is promoting that, the system in question seems fine to me
the solution I suggested months ago
Sounds great to me
yes. thank you!
in my understanding, the main thing communicated by the Recommended Build was essentially "a mod built and compiled against this version will run on versions after this Recommended Build (up to the next major version)"
that exists such that a modder can feel confident compiling aginst the RB, knowing that their mod will work on later Forge versions (barring things like dependence on bugged behavior)
using the latest builds have always been practice for end users (modpack devs or players), because they contain the latest bug fixes -- fixes which don't exist in the latest RB because of the infrequency of an RB being made (usually, the second RB is made just before switching to a newer MC version)
I note the old Discord rules for Forgecord, where it specifically notes that support is given for
[...] the latest recommended build and very recent beta builds. [...]
(where "beta build" here means the versions marked as Latest on the files site)
can we please use -beta or whatever, since all builds are technically CR (automated, right?)
Sure, call it whatever. But the general gist of "these are bleeding edge BC window releases" is the core bit
I'm 100% on board with an identifier showing we're in breaking phase, also on board with calver because obvious and there's semantic meaning
And so stuff merged after that goes straight to the build you're recommending
I'd suggest a small tweak where there's a CI build that gets delayed or whatever before being pushed directly as the latest build recommended to users
just in case somebody merges a PR that's so catastrophically breaking that it needs to be pulled
(i don't expect this to happen of course, but it's nice to have a safety net)
generally those catastrophic breaks aren't really discovered until someone uses it in production, heh
tends to be a mod interaction - hard to test in forgedev
fair
and difficult to test in prod testing
See my earlier example 
because you need to happen to have the mod in your environment
and the situation to replicate it
Those sort of breaks will either be discovered before it's merged or when end users start to use it, so yeah, I'd say it's not necessary
the ONLY viable solution to that is just to apologise, fix it and move on :P
and historically what we've done when that does happen is to just make another bugfix release, yeah
which is fine enough
in my opinion there is no good reason to have more than one branch
Yeah, either fix or revert and be done with it
my thought along those lines is that all -cr builds automatically get marked as non-cr builds after like a week or something unless manually halted
I'm still not in favor of this - it delays everything by at minimum a week
A week is far too long though. I'd assumed you mean something like a day or so
from my understanding, they will have another discussion with the counsel about this, and vote then, or find a better solution.
oh definitely
you stop breaking changes with better triage, not with indefinite freezing
and you handle accidents by releasing a hotfix quickly
And reverting stuff isn't that big of a deal. Just, like, go on a best effort basis to not need to
moar maintainers, moar reviews
a week was just the first thing that came to mind for a server like forgecraft (because let's admit, they do a lot of beta testing) to at least have players testing new forge versions before they get pushed and recommended to everyone
Theoretically a day could work but in practice I doubt any freeze time would work because, again, users will not download builds that are marked unstable if they can use a stable one instead, so the number of "testers" goes down significantly
meet in the middle and 3 day promotion window?
That doesn't change anything about what I said though
more about giving a little bit of time for people to catch stuff before stable
My point is that there will only be very few people to catch stuff if the build is openly marked unstable, so the delay has little to no value
I personally think that doing preliminary testing on a server like forgecraft with a small number of people is a good thing, because it keeps the number of people involved small; you don't have to deal with a lot of users reporting the same thing
1 day and most will miss it, 1 week and it's taking too long to get into people's hands as "stable"
Basically: any small promotion window won't have enough users to actually catch any issues that couldn't be caught before it was merged
IMO a lot of the stability issue can also be solved by community/triage feedback on the versions page, too
Because you'll be telling people "don't use this" so they... Won't
A simple download count can also be an indicator
"oh, version X.1 has 100 downloads, but X.5 has 10 million.. mkay"
ultimately, yes, that's the idea
And easier testing in local. Gametests maybe acting like unit tests?
i've sampled the oldest page for the Forge downloads page I could see on the Wayback Machine, which is from 2015, and even then the Latest version was on the left, and the Recommended was on the right
sampling a few pages over the years shows the same
Freezes just delay the issue from being found
Gametests can't catch client-side (read: rendering) changes
what i'm proposing is basically a small safety net for small-scale testing to make sure there are no immediately obvious major issues
If it can't be caught pre-merge, you're not going to catch it in a promotion period
That's called "build PRs automatically"
i disagree
Test before you merge
not everything can be tested pre-merge
train an AI to watch minecraft for you
(like rendering changes for example)
If you want to shove it on forgecraft - easy enough. Just build the PR and use it there
are you advocating for some sort of smoke testing? 
yes, exactly
...wut? If you're building PRs those can totally be tested
Just use the built PR
Have the testers use that
I'm basically saying that your "testing period" should be before the merge, and should be accomplished by building and publishing PRs somewhere
i'm proposing a few-day window to do smoke testing with current mods in a user environment before a build gets pushed out to literally everyone as the best build to use since sliced bread
(https://en.wikipedia.org/wiki/Smoke_testing_(software) for reference)
Yes. Why can't that happen before the merge, by publishing PRs?
? Who’s the tester? Where the mods from?
as an example, forgecraft
How’s that different than building the pr and using that?
Like I make the change, build it locally, why can’t I just use that to test a modpack?
Heck, if the PR is built and published automatically I can have all my friends test it too
one major reason is code integrity signing
one could argue that it's more efficient to test a bunch of PRs in a batch rather than each individual PR
also that
recommended/stable builds are useless when mods tend to overwhelmingly build to latest, imho
And there should be documentation for this too so large pr makers can test large modpacks for breaking changes easier. People should be testing their PRs before asking for merging
But yeah, you want to have a period like this? Alright. I get the point. But it shouldn't be longer than, like, a day maximum in my mind
in any case, only CI can verify the code used to build a jarfile was legitimate
Because any longer and you're just holding up important bug fixes
Who’s reading the signing?
Like what’s the benefit there
the mod loader
For like local testing
Excuse you, I have a life. I'm not watching the versions screen like a hawk
this isn't "local testing", that's the thing
peruse the wall of text i sent to cpw.
I assume others have stuff to do too; you can be more generous than a day
the idea for this x-day window is that the build is available for people who want it RIGHT NOW, and it's also available for people who want to do larger-scale testing
we shouldn't be pushing literally everyone to do our testing for us because we can't be arsed to do proper testing
I agree with this 100%. I'm going to try not to say anything more here because at this point I don't think it's really productive, since ultimately this is a maintainer/SC decision and I am neither, but this sums up very well what I think about the whole issue
(because no matter how many tests we do before merging, there are things that we will miss)
many points agreed, especially that the version could be "pineapple" for all we care. It's the intent.
(can we make unstable builds fruits? that'd be neat actually)
unfortunately no because of maven versioning
fucking maven. quit ruining the fun!
Debian doesn't use maven 😔
I think perhaps it's a good time to let the topic of versioning breathe for a day or two; let people digest their thoughts and the views expressed here
@boreal blade can you post the ordering again? Of the suffixes?
if the prefix is the same, then compare the token:
Numeric tokens have the natural order.
Non-numeric tokens ("qualifiers") have the alphabetical order, except for the following tokens which come first in this order:
"alpha" < "beta" < "milestone" < "rc" = "cr" < "snapshot" < "" = "final" = "ga" < "sp"
the "alpha", "beta" and "milestone" qualifiers can respectively be shortened to "a", "b" and "m" when directly followed by a number.
else ".qualifier" = "-qualifier" < "-number" < ".number"
alpha = a <<<beta>> = b <<<milestone>> = m <<<rc>> = cr <<<snapshot>> '<<<>>' = final = ga = release < sp
I think there is the issue of 1.20.2 being so close that there’s a push to get a versioning picked soon
you do have a point
yeah we're expecting tomorrow i think
Quick, someone crash Mojang computers to delay the update!
We have a couple more days
There likely won’t be a day one release
But day two or three is the aim for sure
For posterity, here's what was proposed in #1129163369874735204:
mcminor.mcpatch.N-rcis the CI build of the main branch PRs are targeted against- e.g.
20.2.12345-rcfor CI build 12345 for Minecraft 1.20.2
- e.g.
mcminor.mcpatch.Nis a "stable" build (determined by some process, to my understanding yet to be decided)- when a
-rcbuild is made "stable", it loses its-rcprefix and is otherwise identical
am I correct with this understanding @long ingot?
There was actually nothing decided afteralll
right
Cause we in the end did not feel comfortable with any of it
i'm only really noting it down since previous suggestions had been pinned for reference
But yes
That was the whole Idea
To be able to comply with the concept of RBs, Maven, and latest sorting
gotcha
I did get confused earlier with the whole delaying of PRs to prod and two branches stuff as that I was against. But what’s described above for just versioning, I’m cool with it. Neo website can then just show lastest and state when it is user ready (not in bc window)
Yeah, my suggestion was that the process to determine a "stable" build should be a simple N-day smoke test window, where if no show-stopping issues are reported the build automatically gets marked as stable
gotcha
glad to hear it, hope everyone's doing better now that we've had a moment to calm down 😅
I hope this is mostly sorted out now?
The following has been decided and will be rolled out: https://gist.github.com/marchermans/8583c6166a771affa025c0f4938747f3
I left the discussion very frustrated, but from the messages above it seems that the new updated should be ok (haven't read it yet)
👌 not my favorite but functional. works for me
Not a fan of the unanimous vote, rest is good
The unanimous vote is only for shortening
Only for expediting the windows.
The idea is that it can not be shortened if one subteam is not ready, regardless of the size of the team
Only took 3750 comments lol
Oh lord is that what this channel is at?
And a couple hours in voice lol
Bike shed go burrrrr
Ok yeah I see - that's good I think
I don't agree with this being bikeshedding but definitely going in circles lol
With the decision made