James C. McPherson wrote:
> James Carlson wrote:
>> James C. McPherson writes:
>>> Frank Che wrote:
>>>> Requested release binding is patch/micro for OpenSolaris

> True, and I consider the "patch/micro" request to be incorrect

The final binding is a synthesis of the team's desires and the
type of change actually being proposed.  The actual changes set
the "low bar", the team's desires can only raise it.

Patch/Micro seems appropriate based on the actual change;
Minor might be more desirable as a way of preventing feature
creep in the Update releases.  The former is an ARC call,
the other is a project team one.

    -John

<
       ARC Tutorial Warning
  It is safe to stop reading now :-)
 >

What is a "Release Binding"?

In simplistic terms, a project can be thought of as consuming
an existing system, applying some changes to it, and producing
a new version of the system.

The ARC review focuses on those changes; one of the outcomes
of the review is a pronouncement about the magnitude and
impact of those changes.  That pronouncement is called the
Release Binding.

At any given time, there are several different releases under
construction:
     Solaris10updateX (a patch gate that allows a restricted
                       set of new features),
     OpenSolaris/Nevada (a Minor release) and
     (maybe?) OpenSolaris/Indiana (a Major release).

The case's release binding is used to steer a project to
the appropriate integration gate for a Major release, a
Minor one, or a Micro or Patch.

An example:

Assume the baseline existing system was the "zpool" command.
Grunging thru the ARC case archives, we find several cases
that describe zpool's Exported Interfaces; in particular,
they set expectations as to their future evolutionary stability.

Example1:
Another zpool project comes in and says they wish to change
the meaning of an existing command line option such that it
does a completely different thing.  Looking at the previous
ZFS ARC cases, we find that the interface stability level
for that option was Committed.  Looking at the Interface
Taxonomy, we find, under the heading "Committed":

> Incompatible Change    major release (X.0)

Thus, the release binding would need to be Major.
(Committed Interface + Incompatible change = Major binding)
This poses a problem today, since we don't *have* any gates
chartered for a Major Release.

If the project team was expecting Minor or Patch binding,
this would be a good time for an ARC discussion about
living up to expectations - and setting them correctly in
the first place :-)


Example 2:
A project comes in and proposes to add a new flag to zpool.
The change being proposed is a "compatible" change - existing
users of the zpool command won't be impacted by this change.
What is the release binding?  From the Interface Taxonomy,
we find:

> A compatible addition is normally permitted in a minor 
> (X.Y) release; adding features in a micro (X.Y.Z) release, 
> or in patches makes it hard for ISVs to determine when 
> they can start depending on the existance of a new feature.

Thus, the release binding is at most Minor, but *could* be
Micro or Patch if sufficient justification were given.
(Compatible feature addition = Minor +/- wiggle room)

This "justification" or "wiggle room" is where the project
team's desires come in, and is why we usually ask them for
their binding suggestion.

Assume the final binding is "Patch", with the justification
that this change is needed in Solaris10UpdateX.  This
project would be expected to integrate into S10Ux AND
OpenSolaris so that there would not be any feature
regressions between the two versions.  If there also
was a Major gate out there, it would go there as well.

   -John









Reply via email to