Hi, All.

I was thinking about this very thing yesterday.  For the near future, I
think Antranig's suggestion is fine.

As our community continues to grow, I would argue that we need to adopt a
strategy that better supports minor and/or patch releases between major
releases.  Although we cannot know whether our next release is major,
minor, or a patch, we do know that there will be another release, and it
would be good for us to discipline ourselves and learn to at least estimate
how big each change we make is.

My initial thought is that we would create a branch for the next presumed
patch and minor release and leave master for the next major release.  When
submitting new work, we would start with whichever branch most closely
matches the scope of the change we are making. In choosing a starting
branch, each of us implicitly has to think about and discuss the scope of a
change with others.

So, for example, we have just release 2.0.0 and have not released any later
versions.  We could create a 2.0.1 branch, and a 2.1.0 branch, each of
which has that version in their package.json.  The version in master would
be updated to 3.0.0.   Bug fixes that are backward compatible would be
submitted against the 2.0.1 branch.  New features that do not break
previous functionality would be submitted against the 2.1.0 branch.
Breaking changes would be submitted against master.

This requires a bit of extra work when cutting a release.  When we release
2.0.1, we create a 2.0.2 branch.  When we release 2.1.0, we create a 2.2.0
branch and a 2.1.1 branch.  When we release 3.0.0, we create a 3.0.1
branch, and a 3.1.0 branch, and update the master version to 4.0.0.  There
are existing tools that manage this for you, we could also modify the
fluid-publish script to take care of much of this.

The branch structure would require some extra work in preparing for a minor
or major release, i. e. we would have to make sure to merge upward, merging
changes made to the 2.0.1 branch that we want to preserve in 2.1, for
example.  This in theory could be largely automatic for patch and minor
releases, but would need to be more of a manual process for major releases.

As a simpler alternative, I could see us adopting this incrementally, by
having a 2.1 branch and master, and at least dividing work according to
whether it's appropriate for a minor or major release.  That would
represent less additional work in managing branches, but would at least get
us started in the important practice of drawing a clear line between
breaking and non-breaking changes in future releases.

Cheers,


Tony

On Thu, Jan 5, 2017 at 8:13 PM, Antranig Basman <
antranig.bas...@colorado.edu> wrote:

> One outcome from our community meeting on 21st Dec 2016 looking forward to
> Infusion beyond the 2.0 release was a proposal that we change our system
> for numbering dev releases of Infusion. Until now we have operated a policy
> that the version number of Infusion in trunk is derived from the *next*
> version of Infusion to be released - for example, our package.json has
> shown a version of 2.0.0 for many months, and our "in-code" namespace
> version has been fluid_2_0_0.
>
> This also implies that all dev releases made to date via the fluid-publish
> module have been of the form 2.0.0-dev.xxxxxxxxx
>
> The proposal (currently enjoying the status of "silent acceptance" by
> virtue of this still being the condition of trunk after the release) is
> that we leave all these versions just as they are, and flip our policy so
> that the versions shown in trunk will from henceforth always represent the
> *previous* release rather than the upcoming release.
>
> The reasons for this are primarily driven by semver semantics
> http://semver.org/ - it would seem impossible to anticipate before the
> fact whether the upcoming release will be a major, minor, or patch version
> - this status could change on the basis of a single commit, and it seems
> too much of a burden, as well as highly noisy, to expect that anyone
> merging a pull request which in effect changes the status of the upcoming
> release to do the work of renumbering all the versions in trunk.
>
> There had been a further driver in the form of a bug in fluid-publish
> which has since been fixed in the branch currently in review -
> https://github.com/fluid-project/fluid-publish/pull/5 - that the "most
> recently published dev release" would supersede all previous proper
> releases. This is no longer relevant since the bug has been fixed. However,
> adopting this policy will create the oddity that pre-2.0 release and
> post-2.0 (but pre next official) release dev releases of Infusion will be
> somewhat indistinguishable in that they will all have versions of the form
> 2.0.0-dev.xxxxxxxxx - however, this is where our dev release numbering
> policy comes in handy in that we can still refer to the date field to note
> that any of these dated after Dec 6th 2016 (e.g.
> 2.0.0-dev.20161219T170555Z.5778f7e) must be post-2.0 release dev releases.
>
> Any comments/suggestions?
>
> Cheers,
>
> Antranig
> _______________________________________________________
> fluid-work mailing list - fluid-work@lists.idrc.ocad.ca
> To unsubscribe, change settings or access archives,
> see http://lists.idrc.ocad.ca/mailman/listinfo/fluid-work
>
_______________________________________________________
fluid-work mailing list - fluid-work@lists.idrc.ocad.ca
To unsubscribe, change settings or access archives,
see http://lists.idrc.ocad.ca/mailman/listinfo/fluid-work

Reply via email to