vocdoni / vocdoni-node

A set of libraries and tools for the Vocdoni decentralized backend infrastructure, the main ground of our universally verifiable, privacy-centric and scalable digital voting protocol
GNU Affero General Public License v3.0
86 stars 16 forks source link

implement frequent releases with semver #862

Open altergui opened 1 year ago

altergui commented 1 year ago

we want to adopt semver for releases, to minimize interop issues. my understanding would be:

some references: https://www.notion.so/aragonorg/QA-first-iteration-99f6a78eb44649a4955cdd9e49e6516d#4c815bb475444fb09e33248ec4c4a5db https://gitlab.com/vocdoni/go-dvote/-/wikis/Git-branching-and-guideline

a somehow related issue: "Define and implement BuildInfo page or endpoint for Vocdoni and Aragon applications" https://aragonassociation.atlassian.net/browse/DOPS-462

altergui commented 1 year ago

until now, we had infrequent releases with codenames (azeno, next bizono) and no semantic versioning azeno had a tagged release https://github.com/vocdoni/vocdoni-node/releases/tag/v1.3.0 and there's also a branch named release-azeno which after that v1.3.0 tag grew with 4 commits back in december, but not tagged into any release yet (for example v1.4.0) https://github.com/vocdoni/vocdoni-node/compare/master...release-azeno

altergui commented 1 year ago

until now, how we dealt with branches:

master

(i'm so glad i'm writing this proposal, that includes ditching the master branch, especially after seeing that master-race tag :facepalm: )

dev

altergui commented 1 year ago

Proposal 1

all in all, the way we handle branches until now is aligned with "Trunk Based Development" https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development so i'd propose to simply rename master to main but tagging more frequent releases, possibly on a weekly basis, following semantic versioning.

so for example dcf2e8ef304aba27c79207c48d471a2fe0a8deab would have been tagged as v1.4.0 at the end of the day 6a3f36619dd0bad665e505eb669a95c214b03819 v1.5.0 74174190df2a10da73f461b8e88102ec637eb5a1 v1.5.1 7d2869629afbf07ac1d71675f267ecfd99ccc869 v1.5.2 c70a8408330185b46151ca2ede204359b92de1e8 and 7700b9a34a12afccd04dc2f5f00905b95c8b9095 would not trigger a release since it's internal refactoring, no fix or feature. 6095f229cd59952ad9a7e0f1d444ed712a429893 v1.6.0

Proposal 2

change our branching model to follow gitflow https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow not necessarily a good idea: "Gitflow is a legacy Git workflow that was originally a disruptive and novel strategy for managing Git branches. Gitflow has fallen in popularity in favor of trunk-based workflows, which are now considered best practices for modern continuous software development and DevOps practices"

nvie also commented on the original post: Web apps are typically continuously delivered, not rolled back, and you don't have to support multiple versions of the software running in the wild. This is not the class of software that I had in mind when I wrote the blog post 10 years ago. If your team is doing continuous delivery of software, I would suggest to adopt a much simpler workflow (like GitHub flow) instead of trying to shoehorn git-flow into your team.

altergui commented 1 year ago

explorer follows an equivalent branching model:

caveats: right now, the code at main and stage needs more development and still hits the old RPC endpoints for some things. in a month or two it should be complete and hit only the new APIv2

altergui commented 1 year ago

https://github.com/vocdoni/vocdoni-sdk follows a different branching model:

altergui commented 1 year ago

(following up in interop issue)