Skip to content

Do we need beta AND alpha channels? #378

@dankessler

Description

@dankessler

When we originally laid out the MethodsCore workflow in the wiki, each toolbox had three channels

  1. stable (representing production-quality code)
  2. beta (representing tested, but not yet ready-to-go code)
  3. alpha (representing rapidly iterated code)

The idea was that new features would branch off of stable. The upstream flow would sort of be like hands on a clock: alpha would very frequently advance through inclusion of feature branches, beta would occasionally advance by incorporating alpha, and stable would more rarely advance by incorporating beta.

In practice, changes usually only moved from alpha -> beta when we had something we wanted to ship in a release, so we simplified the scheme to drop the stable channel so that we didn't do silly alpha -> beta -> stable merges in the space of a few minutes.

Now, I wonder if we even need the alpha/beta distinction. We have a fairly punctuated equilibrium, where tools tend to remain static for periods of time and occasionally undergo rapid changes.

I still think it's useful for us to keep the toolboxes separate from public (although one could make an argument that as our codebase matures we could adopt a more linear development strategy), but what do others on the @UMPsychMethodsCore/developers team think?

This was inspired by my code review of #375, in which I realized that ConnTool_alpha was probably merged directly into public, although also had public seemingly merged into it, then branched off of as a hotfix, and now #375 is trying to re-integrate these changes into public. As a result, ConnTool_beta is now 1884 commits behind ConnTool_alpha, which isn't such a great state of affairs. It's easy enough to fast forward ConnTool_beta -> ConnTool_alpha since there's a direct ancestry chain (i.e. no merges required), but if we have arcane policy that is causing weird messes like these, I'd rather fix the policy than keep cleaning them up :)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions