-
Notifications
You must be signed in to change notification settings - Fork 8
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
add git branch guidelines, update build instructions in README #99
Conversation
Adds written policy/guidelines for branch usage and updates the README to provide instructions for building the latest release branch or the tip.
9f3d793
to
ed9a6f1
Compare
Fleshes out the guidelines with: * recommmendation to use conventional commit * a sample .gitmessage template for conv commits * recommendations for naming of topic branches
ed9a6f1
to
53999e4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the writeup.
One thing I feel rather strongly about is to minimize the friction for users who just want to participate in whatever network is currently live. To this end, I would suggest dedicating branch "release" so that it always points to something that will synchronize with the currently running network. Right now "release" agrees with "v0.0.5" whereas in the future it might agree with "v0.0.6" instead.
Some changes are backwards compatible, and some changes are not. The ones that are not backwards-compatible require a new version of testnet, and we can absorb them into "master". But it would be nice if the changes that are backwards compatible were absorbed into "release" in the mean time.
Co-authored-by: aszepieniec <[email protected]>
Co-authored-by: aszepieniec <[email protected]>
I agree that minimizing user friction/difficulty should be a top priority. So then, we are just discussing how to achieve that. I don't see any friction in clear installation instructions that tell the user how to build/install the present stable release. User follows instructions and is then participating in whatever network is currently live. And the only maintenance on our end is to update 2 lines in the README when publishing a new release, running git tag + git branch, and perhaps an occasional hotfix. So, I would first ask: what is the problem with doing it that way? edit: Thinking about this more, the only opportunity I see for reduction of user friction is that a power user can stay on the same That said, I will address your points in more detail. iiuc, you are suggesting a long-lived branch That is possible of course, but it may require significant work. Recall that we are talking about multiple repos, each potentially with such a release branch: neptune-core, tasm-lib, triton-vm, twenty-first. So 4 repos in total at present that must build against eachother. Someone may wish to take on the work of maintaining a release branch in each repo, but I will not be volunteering.
"nice", sure. but again that is extra work for somebody (or everybody) to do. And it requires splitting out non-consensus changes from consensus, which then means more testing to do as well. Probably CI should be setup for such a branch, in addition to master. bottom line: I appreciate the feedback and will add this release branch concept into the document if you continue to push for it, or (better) you can add it with your preferred wording. However my experiences with many teams and projects recommend against that; I see more cost than benefit, given that simple instructions in the README can get users up and running on the current release/testnet, without maintaining said release branch in each repo. |
Is there a bullet point list documenting the procedure for publishing new releases? Should we have one?
Right now the relevant instructions are:
and
These instructions presuppose contextual knowledge that I don't think everyone has, even if they are capable of using git and capable of contributing code. For instance:
I would suggest
My suggestion stops at the point where the workload increases. I'm observing that a lot of changes to
I'd say the suggestion pertains only to |
edit: @aszepieniec Can you please make edits with your preferred wording?
|
oh yeah, no problem. When I make a PR from a forked repo, github provides an option to allow edits by maintainers. It defaults to yes, and I always leave it on. So, it's a feature. ;-) |
For consideration:
Let's consider this a first draft/proposal, and iterate from there. The goal is to reach a written policy every team member can agree with and be happy with.
Adds written policy/guidelines for branch usage and updates the README to provide instructions for building the latest release branch or the tip.
The branch guidelines are an attempt to balance/integrate/codify several things:
github flow
branching and PRs that most github devs are familiar with.I also threw in some recommendations for using conventional commit style and for naming topic branches. As with everything, this is a proposal, so let me know if anyone is not happy with it.
Read the file git_branches.md for details.
I tried to take all the feedback I received into account, but please let me know of any concerns or omissions.