Version Management for release 0.5 and Beyond#2098
Version Management for release 0.5 and Beyond#2098DeathFishAtEase wants to merge 5 commits intoPhobos-developers:developfrom
Conversation
|
Nightly build for this pull request:
This comment is automatic and is meant to allow guests to get latest nightly builds for this pull request without registering. It is updated on every successful build. |
|
No. We can't guarantee that ALL bugs will be fixed before release, and it is unreasonable to try so, simply because pre-release is not a wide release. |
If we want the release to also track the bug fixes in dev, then what is the significance of pre-release? |
To provide a bug-free patched version, of course. Dev gets new features and changes that introduce new bugs, it is almost never bug-free because of that. Pre-release doesn't get new features, only fixes, so it's naturally less bugged. |
Is there any difference between this and release? There are no new features in the release, only fixes. |
Level of stability. Pre-release is "we're doing final testing to weed out bugs, polish things and prepare for the release", release is "we're confident in some level of stability". |
|
I think it's not necessary. Their functions overlap. If you want to debug on the pre-release version, then there's no need to debug on the release version. |
|
I don't understand what's the problem, we've been doing pre-release all this time with RC versions, that's the same, but just more frequent (each devbuild instead of what, 5-10 devbuilds?). You can't immediately release a stable version from a develop version without it containing a good amount of bugs, hence why pre-releases. That's common tactic in software development. |
In my understanding, when v0.5 releases the release version, v0.6 begins pre-release, which is a preparation phase. Therefore, before v0.6 completes its release, v0.5 still needs maintenance, just as the release version of v0.4 exposed issues like the construction yard not being sellable properly and the harvester failing to create voxel debris for the flying wheels when destroyed, and then v0.4.0.1 addressed these issues. It is inappropriate to solve problems by having users switch to the pre-release version of v0.5 (in the current scenario, temporarily served by the
|
This comment was marked as outdated.
This comment was marked as outdated.
How about CMake :hypercarville: |
begone demon |
@copilot Split this task and provide a specific implementation path. |
|
How can I help you with this PR? |
|
Adopt a Git Flow–based model: develop for new features, release/X.Y for stabilization (only fixes and polish), and hotfix branches for critical patches to already released versions. (a proposal from a non-human mind) |
Implement the works listed by Kerbiter. |
Since it's not easy to send money between China and the rest of the world, I'll help out by covering the expense (seems to be equivalent to $15 USD?) for PayPal or intra-Ukraine transfers, so that non-Chinese contributors have some incentive too / you won't be burdened with international transfers. |
- Remove DevBuild configuration - Release configuration no longer sets IS_RELEASE_VER preprocessor directive, references across codebase changed to use RELEASE definition - Metadata is determined based on preprocessor definitions set based on compiler option BuildType (NIGHTLY, PRERELEASE & RELEASE) - Workflows updated to use the new compiler options and accomodate configuration changes
|
I updated the build configuration, metadata and workflow files.
The thing missing from the to-do list still is the automatic release / changelog generation. |
| #elif !defined(RELEASE) | ||
| const wchar_t* Phobos::VersionDescription = L"Phobos development build #" _STR(BUILD_NUMBER) L". Please test the build before shipping."; |
There was a problem hiding this comment.
probably requires wording change
| if (_stricmp(pArg, "-b=" _STR(BUILD_NUMBER)) == 0) | ||
| { | ||
| HideWarning = true; |
There was a problem hiding this comment.
opinion on instead asking the user to write a full version?
There was a problem hiding this comment.
- Setting aside the writing of the value, does
-bitself need to be changed? - Can we use a value that can be directly copied without requiring the user to manually fill it in? As long as it can be easily found on the GitHub page. Currently, the Release page contains a jump link to the commit corresponding to this version (from which the commit SHA can be obtained), as well as the SHAs of the DLL and PDB files, so something can be done: for example, having the developer who makes the Increment devbuild number commit pre-fill the value of the previous commit (since the value of the current commit cannot be obtained at this time). Of course, this example is not ideal because it is not automated enough, and there is still room for improvement in user-friendliness.
There was a problem hiding this comment.
I think full precise version name should be used, and yeah I agree arg name should probably be changed
There was a problem hiding this comment.
-IKnowWhatImDoing
That sounds like a Boolean value needs to be filled in instead of a version number string :P
| // Pre-release build number. Incremented on each pre-release build. | ||
| #define PRERELEASE_NUM 1 |
There was a problem hiding this comment.
do you think this would be better than, say, a string -rc1 or rc1? or pre1, beta1 etc, so semver suffix
There was a problem hiding this comment.
Why bother with such naming issues?
There was a problem hiding this comment.
the issue is not in the naming but in limiting ourselves if we decide that we need a different name
There was a problem hiding this comment.
Why bother with such naming issues?
Kerbiter hopes to subdivide the pre-release phase into more smaller stages, so he designed things like -alpha, -beta, -rc which are equivalent to PRERELEASE_TYPE/PRERELEASE_STAGE, although I am not sure whether we have enough energy to carry out such detailed version management.
There was a problem hiding this comment.
limiting ourselves
I think this is a somewhat unclear expression. Do you mean the value type of PRERELEASE_NUM or something else? Perhaps elaborating would be more helpful for understanding.
There was a problem hiding this comment.
yeah. in this case it's just "maybe let's have more flexibility in case we need it in future"
There was a problem hiding this comment.
limiting ourselves
I think this is a somewhat unclear expression. Do you mean the value type of
PRERELEASE_NUMor something else? Perhaps elaborating would be more helpful for understanding.
I mean with the current PR approach we can only have betas. what if we think we need something more in future? or if we decide we need another pre-release instead of beta?
| #define SAVEGAME_ID ((VERSION_MAJOR << 24) | (VERSION_MINOR << 16) | (VERSION_REVISION << 8) | VERSION_PATCH) | ||
| #define FILE_DESCRIPTION "Unstable nightly build of Phobos engine extension" | ||
| #define FILE_VERSION_STR "Commit " STR_GIT_COMMIT | ||
| #define FILE_VERSION 0 | ||
| #define PRODUCT_VERSION "Nightly Build " STR_GIT_COMMIT " @ " STR_GIT_BRANCH | ||
| #else // Regular devbuild metadata | ||
| #define SAVEGAME_ID ((BUILD_NUMBER << 24) | (BUILD_NUMBER << 12) | (BUILD_NUMBER)) | ||
| #define FILE_DESCRIPTION "Development build of Phobos engine extension" | ||
| #define FILE_VERSION_STR "Build #" _STR(BUILD_NUMBER) | ||
| #define FILE_VERSION 0,0,0,BUILD_NUMBER | ||
| #define PRODUCT_VERSION "Development Build #" _STR(BUILD_NUMBER) | ||
| #elif defined(PRERELEASE) | ||
| #define SAVEGAME_ID ((VERSION_MAJOR << 24) | (VERSION_MINOR << 16) | (PRERELEASE_NUM << 8)) | ||
| #define FILE_DESCRIPTION "Pre-release build of Phobos, Ares-compatible YR engine extension" | ||
| #define FILE_VERSION_STR _STR(VERSION_MAJOR) "." _STR(VERSION_MINOR) "-beta" _STR(PRERELEASE_NUM) | ||
| #define FILE_VERSION VERSION_MAJOR, VERSION_MINOR, 0, 0 | ||
| #define PRODUCT_VERSION "v." _STR(VERSION_MAJOR) "." _STR(VERSION_MINOR) "-beta" _STR(PRERELEASE_NUM) | ||
| #else | ||
| #define SAVEGAME_ID ((VERSION_MAJOR << 24) | (VERSION_MINOR << 16) | (VERSION_REVISION << 8) | VERSION_PATCH) | ||
| #define FILE_DESCRIPTION "Phobos, Ares-compatible YR engine extension" | ||
| #define FILE_VERSION_STR _STR(VERSION_MAJOR) "." _STR(VERSION_MINOR) "." _STR(VERSION_REVISION) "." _STR(VERSION_PATCH) | ||
| #define FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_PATCH | ||
| #define PRODUCT_VERSION "v." FILE_VERSION_STR |
There was a problem hiding this comment.
TODO for myself: look bit more carefully into this


During several hours of communication, many details were confirmed. To avoid loss, Kerbiter suggested that I first update the document and create a PR draft.
The early blueprint of the new version management system was also mentioned in the phobos-chat channel of the C&C Mod Haven server:
@Metadorius's TODO:
Volunteers needed! this is long overdue, as is "devbuild" release, as is 0.5.