[Hyperledger Project TSC] Hyperledger Release Taxonomy v0.1


Brian Behlendorf
 

I'll get this into a proper place on the wiki or github later, but drafting this now while on the plane, for discussion at tomorrow's TSC.


Releases at the Hyperledger Project are done according to the following common taxonomy.  This is to help users who are familiar with one HLP effort understand the self-proclaimed state of maturity of another project.  Note that this is *not* about exiting from the incubator, though a beta or production release should not be made while still in incubation.


Developer Preview:

Not feature complete, but most functionality implemented, and any missing functionality that is committed for the production release is identified and there are specific people working on those features.  Not heavily performance tuned, but performance testing has started, and the first few hotspots identified, perhaps even addressed.  No "highest priority" issues in an unclosed state.  First-level developer documentation provided to help new developers up the learning curve.

Naming convention: 0.x  where x is < 8 (Developer Preview is not used after it hits 1.0)

Alpha:

Feature complete, for all features committed to the production release.  Ready for Proof of Concept-level deployments.  Performance can be characterized in a predictable way, so that basic PoC's can be done without risk of embarrassing performance.  APIs documented.  First attempts at end-user documentation, developer docs further advanced.  No "highest priority" issues in an unclosed state.

Naming convention: y.8.x, where y is 0, 1, 2 (basically the last production release) and x is the iteration of the alpha release.

Beta: 

Feature complete for all features committed to the production release, perhaps with optional features when safe to add.  Ready for Pilot-level engagements.  Performance is very well characterized and active optimizations are being done, with a target set for the Production release.  No "highest priority" or "high priority" bugs unclosed.  Dev docs complete; end-user docs mostly done.

Naming convention: y.9.x, where y is 0, 1, 2 (basically the last production release) and x is the iteration of the beta release.

Production:

An exact copy of the last iteration in the beta cycle, for a reasonable length of time (2 weeks?) during which no new highest or high priority bugs discovered, where end-user docs are considered complete, and performance/speed goals have been met.   Ready for Production-level engagements.

Naming convention: y.z.x, where y is the production release level (1, 2, 3, etc), z is the branch level (for minor improvements), and x is the iteration of the current branch.


Example:

Today's Fabric "Developer Preview" release is 0.5.  It could continue to 0.6, 0.7, 0.7.1....
but when it's ready for Alpha, we call it 0.8, iterating to 0.8.1, 0.8.2, etc. 
When it's ready for beta, 0.9, 0.9.1, 0.9.2, etc. 
And when we are ready for production, 1.0.0.
A bugfix patch release or other small fixups, 1.0.1, 1.0.2, etc. 
A branch would be called for when there is something small that changes behavior in some visible way: 1.1.0, 1.1.1, 1.2.0, 1.2.1, etc.
And when it's time for a significant refactoring or rewrite or major new functionality, we go back into the cycle, but missing the "Developer Preview":
1.8.0 is the alpha for 2.0
1.9.0 is the beta for 2.0
2.0.0 is the production release.

Thoughts?

Brian

-- 
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf


Baohua Yang
 

I love the design.

Just throw some possible options.

Maybe we could use pure number version just as is. So to keep development clean.

While use "x.y-[alpha, beta, rc]-z" for tracking special release tag.

examples:

1.0-alpha-1
1.0-beta-2
2.0-rc-1

And agree with minor version number as fix to the major one, like 2.1.0 is fix for 2.0.0.

Would this be easier to understand literally?

And I guess major+minor version number should enough for the release tracking, while also agree to align with linux style, as it's LF supported! 

Any thoughts? Thanks!

On Thu, Jun 23, 2016 at 2:00 PM, Brian Behlendorf via hyperledger-tsc <hyperledger-tsc@...> wrote:
I'll get this into a proper place on the wiki or github later, but drafting this now while on the plane, for discussion at tomorrow's TSC.


Releases at the Hyperledger Project are done according to the following common taxonomy.  This is to help users who are familiar with one HLP effort understand the self-proclaimed state of maturity of another project.  Note that this is *not* about exiting from the incubator, though a beta or production release should not be made while still in incubation.


Developer Preview:

Not feature complete, but most functionality implemented, and any missing functionality that is committed for the production release is identified and there are specific people working on those features.  Not heavily performance tuned, but performance testing has started, and the first few hotspots identified, perhaps even addressed.  No "highest priority" issues in an unclosed state.  First-level developer documentation provided to help new developers up the learning curve.

Naming convention: 0.x  where x is < 8 (Developer Preview is not used after it hits 1.0)

Alpha:

Feature complete, for all features committed to the production release.  Ready for Proof of Concept-level deployments.  Performance can be characterized in a predictable way, so that basic PoC's can be done without risk of embarrassing performance.  APIs documented.  First attempts at end-user documentation, developer docs further advanced.  No "highest priority" issues in an unclosed state.

Naming convention: y.8.x, where y is 0, 1, 2 (basically the last production release) and x is the iteration of the alpha release.

Beta: 

Feature complete for all features committed to the production release, perhaps with optional features when safe to add.  Ready for Pilot-level engagements.  Performance is very well characterized and active optimizations are being done, with a target set for the Production release.  No "highest priority" or "high priority" bugs unclosed.  Dev docs complete; end-user docs mostly done.

Naming convention: y.9.x, where y is 0, 1, 2 (basically the last production release) and x is the iteration of the beta release.

Production:

An exact copy of the last iteration in the beta cycle, for a reasonable length of time (2 weeks?) during which no new highest or high priority bugs discovered, where end-user docs are considered complete, and performance/speed goals have been met.   Ready for Production-level engagements.

Naming convention: y.z.x, where y is the production release level (1, 2, 3, etc), z is the branch level (for minor improvements), and x is the iteration of the current branch.


Example:

Today's Fabric "Developer Preview" release is 0.5.  It could continue to 0.6, 0.7, 0.7.1....
but when it's ready for Alpha, we call it 0.8, iterating to 0.8.1, 0.8.2, etc. 
When it's ready for beta, 0.9, 0.9.1, 0.9.2, etc. 
And when we are ready for production, 1.0.0.
A bugfix patch release or other small fixups, 1.0.1, 1.0.2, etc. 
A branch would be called for when there is something small that changes behavior in some visible way: 1.1.0, 1.1.1, 1.2.0, 1.2.1, etc.
And when it's time for a significant refactoring or rewrite or major new functionality, we go back into the cycle, but missing the "Developer Preview":
1.8.0 is the alpha for 2.0
1.9.0 is the beta for 2.0
2.0.0 is the production release.

Thoughts?

Brian

-- 
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf

_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc




--
Best wishes!
Baohua


Elisha Kendagor <kendagor@...>
 

It looks good. When a branch occurs does the branched off build continue to iterate forward?

Such that 1.0.1, 1.1.1,1.0.2, 1.1.2 continue running in parallel? I would like to propose a more converged versioning so that once 1.1.x which appears newer than 1.0.x branches out, then 1.0.x and other lower branched versions have only critical fixes which get merged into the higher branched versions and if necessary have an overall even higher conversion branch where the lower branches converge into, so that 1.0.x, 1.1.x, 1.2.x converge into perhaps 2.0.x. I hope that makes sense 😊. Opinions?

 

Thanks

 

Elisha

 

 

From: Brian Behlendorf via hyperledger-tsc
Sent: Thursday, June 23, 2016 02:01
To: hyperledger-tsc@...
Subject: [Hyperledger Project TSC] Hyperledger Release Taxonomy v0.1

 

I'll get this into a proper place on the wiki or github later, but drafting this now while on the plane, for discussion at tomorrow's TSC.


Releases at the Hyperledger Project are done according to the following common taxonomy.  This is to help users who are familiar with one HLP effort understand the self-proclaimed state of maturity of another project.  Note that this is *not* about exiting from the incubator, though a beta or production release should not be made while still in incubation.


Developer Preview:

Not feature complete, but most functionality implemented, and any missing functionality that is committed for the production release is identified and there are specific people working on those features.  Not heavily performance tuned, but performance testing has started, and the first few hotspots identified, perhaps even addressed.  No "highest priority" issues in an unclosed state.  First-level developer documentation provided to help new developers up the learning curve.

Naming convention: 0.x  where x is < 8 (Developer Preview is not used after it hits 1.0)

Alpha:

Feature complete, for all features committed to the production release.  Ready for Proof of Concept-level deployments.  Performance can be characterized in a predictable way, so that basic PoC's can be done without risk of embarrassing performance.  APIs documented.  First attempts at end-user documentation, developer docs further advanced.  No "highest priority" issues in an unclosed state.

Naming convention: y.8.x, where y is 0, 1, 2 (basically the last production release) and x is the iteration of the alpha release.

Beta: 

Feature complete for all features committed to the production release, perhaps with optional features when safe to add.  Ready for Pilot-level engagements.  Performance is very well characterized and active optimizations are being done, with a target set for the Production release.  No "highest priority" or "high priority" bugs unclosed.  Dev docs complete; end-user docs mostly done.

Naming convention: y.9.x, where y is 0, 1, 2 (basically the last production release) and x is the iteration of the beta release.

Production:

An exact copy of the last iteration in the beta cycle, for a reasonable length of time (2 weeks?) during which no new highest or high priority bugs discovered, where end-user docs are considered complete, and performance/speed goals have been met.   Ready for Production-level engagements.

Naming convention: y.z.x, where y is the production release level (1, 2, 3, etc), z is the branch level (for minor improvements), and x is the iteration of the current branch.


Example:

Today's Fabric "Developer Preview" release is 0.5.  It could continue to 0.6, 0.7, 0.7.1....
but when it's ready for Alpha, we call it 0.8, iterating to 0.8.1, 0.8.2, etc. 
When it's ready for beta, 0.9, 0.9.1, 0.9.2, etc. 
And when we are ready for production, 1.0.0.
A bugfix patch release or other small fixups, 1.0.1, 1.0.2, etc. 
A branch would be called for when there is something small that changes behavior in some visible way: 1.1.0, 1.1.1, 1.2.0, 1.2.1, etc.
And when it's time for a significant refactoring or rewrite or major new functionality, we go back into the cycle, but missing the "Developer Preview":
1.8.0 is the alpha for 2.0
1.9.0 is the beta for 2.0
2.0.0 is the production release.

Thoughts?

Brian


-- 
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf

 


Brian Behlendorf
 

On 06/23/2016 01:58 AM, Baohua Yang wrote:
use "x.y-[alpha, beta, rc]-z" for tracking special release tag.
I've modified my proposal to include this numbering scheme as an alternative; on the call today we should pick one.


On 06/23/2016 08:17 AM, Elisha Kendagor via hyperledger-tsc wrote:
It looks good. When a branch occurs does the branched off build
continue to iterate forward?

Such that 1.0.1, 1.1.1,1.0.2, 1.1.2 continue running in parallel? I
would like to propose a more converged versioning so that once 1.1.x which appears newer than 1.0.x branches out, then 1.0.x and other lower branched versions have only critical fixes which get merged into the higher branched versions and if necessary have an overall even higher conversion branch where the lower branches converge into, so that 1.0.x, 1.1.x, 1.2.x converge into perhaps 2.0.x. I hope that makes sense 😊. Opinions?

Yes, they'd run in parallel until such time as the developers decide to EOL a particular branch. So for example a critical security issue that affects 1.1.22 (older) and 1.2.3 (newer) would necessitate a 1.1.23 and a 1.2.4. Generally you don't converge the tail end of those branches, you just gradually give them fewer and fewer fixes, though any branch not yet explicitly EOL'd should have any security-related fix applied unless it requires major refactoring and risk. I suspect our customers will tend to demand LTS (long-term support) branches like Ubuntu has.

Brian

--
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf


Christopher B Ferris <chrisfer@...>
 

Sorry for not chiming in earlier... vacation will do that to ya (lose track of emails you intended to reply to).

Why not use semver [1]. I like the approach that Brian suggested, but I worry that we'd have to explain to the world.

So, this would be aligned with Brian's suggestion but we would use the terms in the release identifier.

Rather than focus on release numbering to signify the alpha or beta, just append the -alpha -beta -rcN qualifier.
This gives us better flexibility over what we consider to be a release. Seems to me that we should be able to have a number of
releases that are backwardly compatible. Using semver allows us to ascertain backwards compatibility in an automated manner.

[1] http://semver.org/

Cheers,

Christopher Ferris

IBM Distinguished Engineer, CTO Open Technology

IBM Cloud, Open Technologies

email: chrisfer@...

twitter: @christo4ferris

blog: https://developer.ibm.com/opentech/author/chrisfer/

phone: +1 508 667 0402




-----hyperledger-tsc-bounces@... wrote: -----To: hyperledger-tsc@...
From: Brian Behlendorf via hyperledger-tsc
Sent by: hyperledger-tsc-bounces@...
Date: 07/14/2016 08:15AM
Subject: Re: [Hyperledger Project TSC] Hyperledger Release Taxonomy v0.1

On 06/23/2016 01:58 AM, Baohua Yang wrote:
use "x.y-[alpha, beta, rc]-z" for tracking special release tag.
I've modified my proposal to include this numbering scheme as an
alternative; on the call today we should pick one.


On 06/23/2016 08:17 AM, Elisha Kendagor via hyperledger-tsc wrote:
> It looks good. When a branch occurs does the branched off build
continue to iterate forward?
>
> Such that 1.0.1, 1.1.1,1.0.2, 1.1.2 continue running in parallel? I
would like to propose a more converged versioning so that once 1.1.x
which appears newer than 1.0.x branches out, then 1.0.x and other lower
branched versions have only critical fixes which get merged into the
higher branched versions and if necessary have an overall even higher
conversion branch where the lower branches converge into, so that 1.0.x,
1.1.x, 1.2.x converge into perhaps 2.0.x. I hope that makes sense 😊.
Opinions?

Yes, they'd run in parallel until such time as the developers decide to
EOL a particular branch. So for example a critical security issue that
affects 1.1.22 (older) and 1.2.3 (newer) would necessitate a 1.1.23 and
a 1.2.4. Generally you don't converge the tail end of those branches,
you just gradually give them fewer and fewer fixes, though any branch
not yet explicitly EOL'd should have any security-related fix applied
unless it requires major refactoring and risk. I suspect our customers
will tend to demand LTS (long-term support) branches like Ubuntu has.

Brian

--
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf

_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc


Shawn Amundson
 

Won't make the TSC meeting, but some thoughts.

For our python modules, we are doing something similar to the openstack project where we have X.Y.Z-devN where N is the number of commits since X.Y.Z-1.  This makes sure that we don't produce artifacts with the same version as the tagged version.  This uses get describe and all the setup.py files in sawtooth repos implement this.  If you are on a tagged version, then it properly uses X.Y.Z.  This has worked well for Jenkins builds.

It would be nice to use 0.99.x instead of 0.9.x, in case we want to have 0.8.x, 0.9.x, 0.10.x, 0.11.x, etc. within our individual projects.  Unlikely to use 0.99.x in that sequence.

We are considering abandoning our current use of 1.1.x for Sawtooth Lake components and bump back down to the 0.x range to conform to this spec.  (As we only have very few tags anyway.)

-Shawn

On Thu, Jul 14, 2016 at 7:15 AM, Brian Behlendorf via hyperledger-tsc <hyperledger-tsc@...> wrote:
On 06/23/2016 01:58 AM, Baohua Yang wrote:
use "x.y-[alpha, beta, rc]-z" for tracking special release tag.

I've modified my proposal to include this numbering scheme as an alternative; on the call today we should pick one.


On 06/23/2016 08:17 AM, Elisha Kendagor via hyperledger-tsc wrote:
> It looks good. When a branch occurs does the branched off build continue to iterate forward?
>
> Such that 1.0.1, 1.1.1,1.0.2, 1.1.2 continue running in parallel? I would like to propose a more converged versioning so that once 1.1.x which appears newer than 1.0.x branches out, then 1.0.x and other lower branched versions have only critical fixes which get merged into the higher branched versions and if necessary have an overall even higher conversion branch where the lower branches converge into, so that 1.0.x, 1.1.x, 1.2.x converge into perhaps 2.0.x. I hope that makes sense 😊. Opinions?

Yes, they'd run in parallel until such time as the developers decide to EOL a particular branch.  So for example a critical security issue that affects 1.1.22 (older) and 1.2.3 (newer) would necessitate a 1.1.23 and a 1.2.4.  Generally you don't converge the tail end of those branches, you just gradually give them fewer and fewer fixes, though any branch not yet explicitly EOL'd should have any security-related fix applied unless it requires major refactoring and risk.  I suspect our customers will tend to demand LTS (long-term support) branches like Ubuntu has.


Brian

--
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf

_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc


Shawn Amundson
 

+1 on using semver to the extent practically possible.

Also, +1 to appending -devN, -alpha, -beeta, -rcN. as appropriate after the X.Y.Z.  These get sorted properly by several packaging system "1.0.0-alpha1" is before "1.0.0" for example (for RPMs, etc.).

-Shawn

On Thu, Jul 14, 2016 at 8:54 AM, Christopher B Ferris via hyperledger-tsc <hyperledger-tsc@...> wrote:
Sorry for not chiming in earlier... vacation will do that to ya (lose track of emails you intended to reply to).

Why not use semver [1]. I like the approach that Brian suggested, but I worry that we'd have to explain to the world.

So, this would be aligned with Brian's suggestion but we would use the terms in the release identifier.

Rather than focus on release numbering to signify the alpha or beta, just append the -alpha -beta -rcN qualifier.
This gives us better flexibility over what we consider to be a release. Seems to me that we should be able to have a number of
releases that are backwardly compatible. Using semver allows us to ascertain backwards compatibility in an automated manner.

[1] http://semver.org/

Cheers,

Christopher Ferris

IBM Distinguished Engineer, CTO Open Technology

IBM Cloud, Open Technologies

email: chrisfer@...

twitter: @christo4ferris

blog: https://developer.ibm.com/opentech/author/chrisfer/

phone: +1 508 667 0402




-----hyperledger-tsc-bounces@... wrote: -----To: hyperledger-tsc@...
From: Brian Behlendorf via hyperledger-tsc
Sent by: hyperledger-tsc-bounces@...
Date: 07/14/2016 08:15AM
Subject: Re: [Hyperledger Project TSC] Hyperledger Release Taxonomy v0.1

On 06/23/2016 01:58 AM, Baohua Yang wrote:
> use "x.y-[alpha, beta, rc]-z" for tracking special release tag.

I've modified my proposal to include this numbering scheme as an
alternative; on the call today we should pick one.


On 06/23/2016 08:17 AM, Elisha Kendagor via hyperledger-tsc wrote:
 > It looks good. When a branch occurs does the branched off build
continue to iterate forward?
 >
 > Such that 1.0.1, 1.1.1,1.0.2, 1.1.2 continue running in parallel? I
would like to propose a more converged versioning so that once 1.1.x
which appears newer than 1.0.x branches out, then 1.0.x and other lower
branched versions have only critical fixes which get merged into the
higher branched versions and if necessary have an overall even higher
conversion branch where the lower branches converge into, so that 1.0.x,
1.1.x, 1.2.x converge into perhaps 2.0.x. I hope that makes sense 😊.
Opinions?

Yes, they'd run in parallel until such time as the developers decide to
EOL a particular branch.  So for example a critical security issue that
affects 1.1.22 (older) and 1.2.3 (newer) would necessitate a 1.1.23 and
a 1.2.4.  Generally you don't converge the tail end of those branches,
you just gradually give them fewer and fewer fixes, though any branch
not yet explicitly EOL'd should have any security-related fix applied
unless it requires major refactoring and risk.  I suspect our customers
will tend to demand LTS (long-term support) branches like Ubuntu has.

Brian

--
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf

_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc

_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc


Brian Behlendorf
 

+1 to Semver, I didn't realize it existed and was trying to replicate it, poorly.  So all we'd need to agree to is that all Hyperledger projects must (should?) use the semver.org spec.

Brian

On 07/14/2016 07:00 AM, Shawn Amundson wrote:
+1 on using semver to the extent practically possible.

Also, +1 to appending -devN, -alpha, -beeta, -rcN. as appropriate after the X.Y.Z.  These get sorted properly by several packaging system "1.0.0-alpha1" is before "1.0.0" for example (for RPMs, etc.).

-Shawn

On Thu, Jul 14, 2016 at 8:54 AM, Christopher B Ferris via hyperledger-tsc <hyperledger-tsc@...> wrote:
Sorry for not chiming in earlier... vacation will do that to ya (lose track of emails you intended to reply to).

Why not use semver [1]. I like the approach that Brian suggested, but I worry that we'd have to explain to the world.

So, this would be aligned with Brian's suggestion but we would use the terms in the release identifier.

Rather than focus on release numbering to signify the alpha or beta, just append the -alpha -beta -rcN qualifier.
This gives us better flexibility over what we consider to be a release. Seems to me that we should be able to have a number of
releases that are backwardly compatible. Using semver allows us to ascertain backwards compatibility in an automated manner.

[1] http://semver.org/

Cheers,

Christopher Ferris

IBM Distinguished Engineer, CTO Open Technology

IBM Cloud, Open Technologies

email: chrisfer@...

twitter: @christo4ferris

blog: https://developer.ibm.com/opentech/author/chrisfer/

phone: +1 508 667 0402




-----hyperledger-tsc-bounces@... wrote: -----To: hyperledger-tsc@...
From: Brian Behlendorf via hyperledger-tsc
Sent by: hyperledger-tsc-bounces@...
Date: 07/14/2016 08:15AM
Subject: Re: [Hyperledger Project TSC] Hyperledger Release Taxonomy v0.1

On 06/23/2016 01:58 AM, Baohua Yang wrote:
> use "x.y-[alpha, beta, rc]-z" for tracking special release tag.

I've modified my proposal to include this numbering scheme as an
alternative; on the call today we should pick one.


On 06/23/2016 08:17 AM, Elisha Kendagor via hyperledger-tsc wrote:
 > It looks good. When a branch occurs does the branched off build
continue to iterate forward?
 >
 > Such that 1.0.1, 1.1.1,1.0.2, 1.1.2 continue running in parallel? I
would like to propose a more converged versioning so that once 1.1.x
which appears newer than 1.0.x branches out, then 1.0.x and other lower
branched versions have only critical fixes which get merged into the
higher branched versions and if necessary have an overall even higher
conversion branch where the lower branches converge into, so that 1.0.x,
1.1.x, 1.2.x converge into perhaps 2.0.x. I hope that makes sense 😊.
Opinions?

Yes, they'd run in parallel until such time as the developers decide to
EOL a particular branch.  So for example a critical security issue that
affects 1.1.22 (older) and 1.2.3 (newer) would necessitate a 1.1.23 and
a 1.2.4.  Generally you don't converge the tail end of those branches,
you just gradually give them fewer and fewer fixes, though any branch
not yet explicitly EOL'd should have any security-related fix applied
unless it requires major refactoring and risk.  I suspect our customers
will tend to demand LTS (long-term support) branches like Ubuntu has.

Brian

--
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf

_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc

_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc



-- 
Brian Behlendorf
Executive Director at the Hyperledger Project
bbehlendorf@...
Twitter: @brianbehlendorf


Christopher B Ferris <chrisfer@...>
 

Shawn,

Thanks for sharing this. I also agree that the -devN (number of commits since the tag) is very appropriate for publishing artefacts to the likes of npm, dockerhub, pypi, etc. The one point I'd make is that semver suggests that build metadata be appended with a '+' [1] whereas git describe would append the number of commits and sha with a '-' e.g. 0.5-developer-preview-298-g98f3b6f. I would note that that claus is a 'MAY' so I think that we're still conformant with the standard.

Given that this is what STL is doing presently, I think it makes a world of sense to continue this course for all Hyperledger projects unless there is disagreement and an alternative proposal.

I'd like to see the other project maintainers chime in on this discussion.

[1] http://semver.org/#spec-item-10

Cheers,

Christopher Ferris

IBM Distinguished Engineer, CTO Open Technology

IBM Cloud, Open Technologies

email: chrisfer@...

twitter: @christo4ferris

blog: https://developer.ibm.com/opentech/author/chrisfer/

phone: +1 508 667 0402




-----hyperledger-tsc-bounces@... wrote: -----To: Brian Behlendorf <bbehlendorf@...>
From: Shawn Amundson via hyperledger-tsc
Sent by: hyperledger-tsc-bounces@...
Date: 07/14/2016 10:20AM
Cc: hyperledger-tsc@...
Subject: Re: [Hyperledger Project TSC] Hyperledger Release Taxonomy v0.1

Won't make the TSC meeting, but some thoughts.
For our python modules, we are doing something similar to the openstack project where we have X.Y.Z-devN where N is the number of commits since X.Y.Z-1. This makes sure that we don't produce artifacts with the same version as the tagged version. This uses get describe and all the setup.py files in sawtooth repos implement this. If you are on a tagged version, then it properly uses X.Y.Z. This has worked well for Jenkins builds.
It would be nice to use 0.99.x instead of 0.9.x, in case we want to have 0.8.x, 0.9.x, 0.10.x, 0.11.x, etc. within our individual projects. Unlikely to use 0.99.x in that sequence.
We are considering abandoning our current use of 1.1.x for Sawtooth Lake components and bump back down to the 0.x range to conform to this spec. (As we only have very few tags anyway.)
-Shawn

On Thu, Jul 14, 2016 at 7:15 AM, Brian Behlendorf via hyperledger-tsc <hyperledger-tsc@...> wrote:
On 06/23/2016 01:58 AM, Baohua Yang wrote:


use "x.y-[alpha, beta, rc]-z" for tracking special release tag.




I've modified my proposal to include this numbering scheme as an alternative; on the call today we should pick one.





On 06/23/2016 08:17 AM, Elisha Kendagor via hyperledger-tsc wrote:

It looks good. When a branch occurs does the branched off build continue to iterate forward?
Such that 1.0.1, 1.1.1,1.0.2, 1.1.2 continue running in parallel? I would like to propose a more converged versioning so that once 1.1.x which appears newer than 1.0.x branches out, then 1.0.x and other lower branched versions have only critical fixes which get merged into the higher branched versions and if necessary have an overall even higher conversion branch where the lower branches converge into, so that 1.0.x, 1.1.x, 1.2.x converge into perhaps 2.0.x. I hope that makes sense 😊. Opinions?


Yes, they'd run in parallel until such time as the developers decide to EOL a particular branch. So for example a critical security issue that affects 1.1.22 (older) and 1.2.3 (newer) would necessitate a 1.1.23 and a 1.2.4. Generally you don't converge the tail end of those branches, you just gradually give them fewer and fewer fixes, though any branch not yet explicitly EOL'd should have any security-related fix applied unless it requires major refactoring and risk. I suspect our customers will tend to demand LTS (long-term support) branches like Ubuntu has.



Brian



--

Brian Behlendorf

Executive Director at the Hyperledger Project

bbehlendorf@...

Twitter: @brianbehlendorf



_______________________________________________

hyperledger-tsc mailing list

hyperledger-tsc@...

https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc



_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc


Shawn Amundson
 

We do add the git information as well to the version number.  (And apparently use -git, not -dev for Jenkins - forgot about that.)  So our full deb filename for example ends up looking like this:

python-sawtooth-core_1.1.1-git178.gcdd74e5.dirty-1_amd64.deb

This reads as "the 178th commit after v1.1.0, commit id gcdd74e5 with a dirty working directory".  (.dirty doesn't ever appear in Jenkins builds.)  If the release is properly tagged, a build on that commit id will result in the expected X.Y.Z build only, without the pre-release items added.

This makes our pre-release version component "git178.gcdd74e5.dirty" in this case, which (I believe) conforms to semvar.  We don't include any build metadata (which, presumably would be the Jenkins build id, which we aren't concerned about).  I did play around a bit with attempting to add build metadata with "+" but it seemed to cause issues (don't recall the specifics).

The pragmatic part is that we do have some constrains in what works well for the different packaging formats (deb, rpm, etc.) and so we might have slightly different variants to make sure we conform for those target systems.  We note, for example, that on Windows we get an warning out of setup.py which hints that we might not be doing quite the right thing in that context.

The primary goals of the above:

  - Make sure we have are X.Y.Z version there (1.1.1 in the example above, the *next* release)
  - Make sure we avoid confusion between real release packages and packages build between tags
  - Make sure we can upgrade properly between versions (with apt-get for example)
  - Make sure we can always have a reasonable chance to correlate a build artifact to the commit id
  - Ideally, all the things semver attempts to cover (which requires significant project discipline on APIs)

Note that semver and the above detail is really heavily related to packaging/tagging specifics.  When we talk to the rest of the community, in release notes and such, or informally, we mostly care about new X.Y branches and X.Y.Z point releases.

-Shawn

On Thu, Jul 14, 2016 at 10:52 AM, Christopher B Ferris via hyperledger-tsc <hyperledger-tsc@...> wrote:
Shawn,

Thanks for sharing this. I also agree that the -devN (number of commits since the tag) is very appropriate for publishing artefacts to the likes of npm, dockerhub, pypi, etc. The one point I'd make is that semver suggests that build metadata be appended with a '+' [1] whereas git describe would append the number of commits and sha with a '-' e.g. 0.5-developer-preview-298-g98f3b6f. I would note that that claus is a 'MAY' so I think that we're still conformant with the standard.

Given that this is what STL is doing presently, I think it makes a world of sense to continue this course for all Hyperledger projects unless there is disagreement and an alternative proposal.

I'd like to see the other project maintainers chime in on this discussion.

[1] http://semver.org/#spec-item-10

Cheers,

Christopher Ferris

IBM Distinguished Engineer, CTO Open Technology

IBM Cloud, Open Technologies

email: chrisfer@...

twitter: @christo4ferris

blog: https://developer.ibm.com/opentech/author/chrisfer/

phone: +1 508 667 0402




-----hyperledger-tsc-bounces@... wrote: -----To: Brian Behlendorf <bbehlendorf@...>
From: Shawn Amundson via hyperledger-tsc
Sent by: hyperledger-tsc-bounces@...
Date: 07/14/2016 10:20AM
Cc: hyperledger-tsc@...
Subject: Re: [Hyperledger Project TSC] Hyperledger Release Taxonomy v0.1

Won't make the TSC meeting, but some thoughts.
For our python modules, we are doing something similar to the openstack project where we have X.Y.Z-devN where N is the number of commits since X.Y.Z-1.  This makes sure that we don't produce artifacts with the same version as the tagged version.  This uses get describe and all the setup.py files in sawtooth repos implement this.  If you are on a tagged version, then it properly uses X.Y.Z.  This has worked well for Jenkins builds.
It would be nice to use 0.99.x instead of 0.9.x, in case we want to have 0.8.x, 0.9.x, 0.10.x, 0.11.x, etc. within our individual projects.  Unlikely to use 0.99.x in that sequence.
We are considering abandoning our current use of 1.1.x for Sawtooth Lake components and bump back down to the 0.x range to conform to this spec.  (As we only have very few tags anyway.)
-Shawn
On Thu, Jul 14, 2016 at 7:15 AM, Brian Behlendorf via hyperledger-tsc <hyperledger-tsc@...> wrote:
On 06/23/2016 01:58 AM, Baohua Yang wrote:


use "x.y-[alpha, beta, rc]-z" for tracking special release tag.




I've modified my proposal to include this numbering scheme as an alternative; on the call today we should pick one.





On 06/23/2016 08:17 AM, Elisha Kendagor via hyperledger-tsc wrote:

> It looks good. When a branch occurs does the branched off build continue to iterate forward?

>

> Such that 1.0.1, 1.1.1,1.0.2, 1.1.2 continue running in parallel? I would like to propose a more converged versioning so that once 1.1.x which appears newer than 1.0.x branches out, then 1.0.x and other lower branched versions have only critical fixes which get merged into the higher branched versions and if necessary have an overall even higher conversion branch where the lower branches converge into, so that 1.0.x, 1.1.x, 1.2.x converge into perhaps 2.0.x. I hope that makes sense 😊. Opinions?



Yes, they'd run in parallel until such time as the developers decide to EOL a particular branch.  So for example a critical security issue that affects 1.1.22 (older) and 1.2.3 (newer) would necessitate a 1.1.23 and a 1.2.4.  Generally you don't converge the tail end of those branches, you just gradually give them fewer and fewer fixes, though any branch not yet explicitly EOL'd should have any security-related fix applied unless it requires major refactoring and risk.  I suspect our customers will tend to demand LTS (long-term support) branches like Ubuntu has.



Brian



--

Brian Behlendorf

Executive Director at the Hyperledger Project

bbehlendorf@...

Twitter: @brianbehlendorf



_______________________________________________

hyperledger-tsc mailing list

hyperledger-tsc@...

https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc



_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc

_______________________________________________
hyperledger-tsc mailing list
hyperledger-tsc@...
https://lists.hyperledger.org/mailman/listinfo/hyperledger-tsc