-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define and document our "release" process #18
Comments
🤔 My inclination (for R packages, at least) would be to do a version bump on any merge into
On the other hand, that's probably not super compatible with our current merge flow. Bumping versions here could get very busy, since we normally develop with features merging directly into main (rather than to a |
This is another huge diversion from our existing development practices, and not something I imagine neither @cjyetman nor myself am likely to agree with without justification. This also begs the question: does the individual maintainer have autonomy to decide how each repository manages their own git strategy and release process individually? I would be inclined to say "no" here as I think that unnecessarily introduces complexity into our team, but something we should absolutely discuss and document here: #12 However, directly to your point, I think the following options exist (not necessarily comprehensive, and focused to R packages):
My strong preference here is for option 1, as it limits any unnecessary changes in existing paradigm, while offering on-par features (maybe not with what you mention around This will be discussed collectively in a DevHangout. |
Afraid to begin this debate again, but... on the P4I side, where we have not yet released anything on CRAN, I believe the Git hash is the safest identifier of "version" we can use. See https://github.com/RMI-PACTA/pacta.data.preparation/issues/99#issuecomment-1239647545 |
I don't think we should be afraid of this debate, I think it's crucially important that we get to the bottom of it in fact and come to some sort of agreement. No more kicking the can down the road. |
Directly to your point, I think git hashes are adequate while these packages remain internal only (sorry, I know I didn't think this in the past, my thinking on this has evolved since then). However, I imagine versioned releases (SemVer or otherwise) may be useful if we ever intend to communicate the status and changes of packages to anyone external who may be using the code not under our supervision. In particular, strongly sticking to SemVer can help users know and understand when an update may introduce API changes that may break their downstream workflows. If we rely only on git-hashes, and the latest version on I know this isn't currently the case, but it maybe worth considering in our discussion, as it could be a state we may want to aim for. |
Worth noting that most GH-based workflows (including GH-flow, and If we want to batch multiple PRs into a single "release" (however we want to specify that), then we need somewhere (another branch?) to do that, and fthen once we're happy with that, we can merge them into the |
Yup totally understood. The real question is do we want that place to be I have my reservations only because of the current workflows of the team, and trying not to shake too much up at once but as always happy to be convinced otherwise! |
And just to be very clear, I definitely don't think everything needs to/ should live on CRAN, I see the immense pain in the ass that could be. There's a specific reason that the banks packages do/ should, but I don't think we need to force everything to. |
definitely agree, for communicating "version" to external users we should use semver, but I think that needs to be coupled with a CRAN release, or something that forces the semver to be immutable... I don't think the semver living in the DESCRIPTION file alone is adequate, at least not in our typical git flow I also agree that a git flow that had experimental dev branches for PRs and such, a (stable-ish) dev branch for the bleeding edge, and a stable main/release branch for expected external use would be ideal, but... that's substantially different than our typical git flows, and I'm not sure it's worth rocking that boat. Additionally, I'm not aware of any strong examples of R packages that follow a flow like that, so we'd be deviating from some expected norms. |
A question for @cjyetman does R-Universe have any mechanism for enforcing SemVer? |
Not that I'm aware of. As I understand, it is pointed to a branch/tag/hash, and whenever a change is made there it automatically rebuilds. I suspect if a fancy git flow was used, one could enable two parallel r-universes, one for stable/main and one for dev/bleeding-edge. I believe that in any case, the reported "version" on r-universe will be whatever is stated in the DESCRIPTION file (in the associated target). |
Got it. |
a bit nit-picky, but just to be precise, |
also importantly in this case, I would expect a strict rule (if not a GH Action that also enforces it) that any push to |
yes, I believe so |
hmm NIT: but just to be precise, I would expect a version bump on push to |
EDITED to include @cjyetman and @AlexAxthelm 's points: Ah woops, I confused myself. We would still have to have the version bump on On
Then on
That seems pretty doable in an action. |
@jdhoffa , on The general git-flow paradigm would be something like
|
exactly, what I was thinking... though there could be an additional check to enforce that |
Got it. |
As per a comment from @AlexAxthelm
## Versioning and Release
Maintainers are responsible for communicating overall application version through some informative version identifier, as well as determining the suitibility of any release candidate and any release schedule |
FYI: ADO ticket to gather user feedback from Banks to assess if we can explore alternatives to CRAN: |
Good comment from @AlexAxthelm
|
We had a Versioning and Release StrategyWe discussed the purpose of releases and versioning, and the differences of semantic versioning and calendar versioning or simply using Git hashes for identifying specific states of the code. @AlexAxthelm and @cjyetman both noted that "hashes communicate about state, version communicates about function". Internal Communication and ConsistencyThe importance of clear communication within the team about versioning and repository states is stressed, with the idea that consistent practices across the team are crucial for efficiency and understanding. SemVer for R PackagesFor our "vanilla R packages", e.g. those with the Other types of codeFor other software bases (e.g. Transition Monitor Dockerfile, other workflows, data) it was less clear how versioning should be done, or if it was even necessary to define it. For the Transition Monitor Dockerfile, it was stated that some consistent tagging system would be useful (e.g. tag relevant images with Potential Use of CRANThe use of CRAN (Comprehensive R Archive Network) for package release is mentioned, with a consideration of whether it is necessary for their workflows or if there could be alternative ways to distribute packages to banks or other users. Note: this discussion seemed to stray a bit from the "release" discussion. |
Of this, the only thing I think that deserves to go into |
As I noted int he meeting, I think that this should be "we will use SemVer mostly consistently". Some packages, such as using a version such as |
I didn't totally understand that point in the meeting, but sounds cool and understood! |
r2dii.*
version numbers once they were accepted to CRANpacta.*
packages when they were used to build a "release candidate" for Transition Monitor. This was more or less just to facilitate "easily" re-building the image based on the same package versions, to be able to simulate, e.g. re-running a COP portfolio.As far as I can tell, this is now serving neither of the above, but instead the
WebApp
circumstance, so I guess this perhaps is a call to align on our definitions of a "release", otherwise I fear it ends up being a meaningless term.NIT: I will extract this into an issue in the
practices
repo.Originally posted by @jdhoffa in RMI-PACTA/workflow.portfolio.parsing#17 (comment)
The text was updated successfully, but these errors were encountered: