> So to attempt to distill a set of heuristics from the discussion:
>
> Patch release: Goal: maintain and improve stability
> - Non-disruptive, non-API changing bugs are fine w/out consensus
> - Bugs that change defaults or interfaces require consensus
> - Improvements of any kind require consensus and must be small, in safe
> areas, non default changing
>
> Minor release: Goal: stable introduction of new features
> - New features, always with feature flag (added; happy to drop if
> controversial)
> - No API breaking changes; additive API changes w/sane defaults acceptable
>
> Major release: Goal: provide avenue to make breaking, non-backwards
> compatible evolutionary changes
> - API breaking changes
> - Deprecating functionality
> - Changing default behaviors
> - Destructive / removing changes (params, features, etc)
> - Major, well-tested and well documented component refactors (added; happy
> to drop if controversial)
>
> With the above structure, we may go from Major to patches to Major without
> a Minor, or go from Minor to patches for awhile to Minors if we don't have
> destructive changes.
>
> Is that consistent w/what you're saying above Mick? If so - what do others
> think?
>


Yes, thanks Josh.

I do think there's a lot of ambiguity and discussion to be had around what
constitutes a Major change. And, to stress it, I think it's easy for us to
look at it solely from a code and accuracy perspective, but that it would
be more valuable to take a user-centric (WIIFM) approach and to be as
pragmatic as possible. e.g. let's take the discussions whether certain
interfaces/APIs are user-facing enough to signal a major change to all
users (index, triggers, etc, come to mind), bearing in mind our mix-version
upgrade ability deals with a lot (and the planned work raised to deal more
easily with rolling back a started upgrade), us having a NEWS.txt, and that
small API stuff is often changing in minor versions anyway.

I would move "Deprecating functionality" to be under Minor version.
Something could be deprecated in 4.1, and then removed in 5.0.

Reply via email to