Create a gist now

Instantly share code, notes, and snippets.

@sorah /gist:7803201 forked from hsbt/gist:7719305
Last active Dec 30, 2015

Embed
What would you like to do?

Translation from https://gist.github.com/hsbt/7719305

Proposal versioning after Ruby 2.1.0

Base Policy: follow Semantic Versioning basically

ruby-{MAJOR}.{MINOR}.{TEENY}

  • MAJOR: Increase when incompatible change (or some changes can't be releaed as MINOR) happened
  • MINOR: Increase at each December 25th; may be API incompatible
  • TEENY: Increase if doesn't match above 2 conditions; try to keep API compatibility
  • PATCHLEVEL: number of commits since last MINOR release (will be reset at 0 when releasing MINOR)

Difference from knu's idea is: PATCHLEVEL keeps value across TEENY releases. Same with n0kada-san's idea in bugs.r-l.o.

In the expected user needs written in http://d.hatena.ne.jp/nurse/20131111#1384136384,

  1. Give me only security fixes (such as debian and heroku)
  2. Give me only bug and security fixes (normal Ruby users)
  3. Give me bug and security fixes, and some tiny new features and improvements (advanced users)
  4. Give me almost compatible (super advanced users)
  5. Don't care any compatibilities. (Ruby committers?)

TEENY releases satisfy (1) and (2). MINOR satisfies (3) and (4), and MAJOR satisfy (5).

We increase TEENY even if it'll be over 10. Assuming a {MAJOR}_{MINOR} version's maintaining term is about 2 years, we'll controll release cycle to be each 2 or 3 months. (note that this doesn't mean we don't release periodically)

branches

  • trunk
  • {MAJOR}_{MINOR}

We keep the above 2 branches. Keep using same {MAJOR}_{MINOR} branch across TEENY releases.

We add tags for each all releases.

ABI

{MAJOR}.{MINOR}.0

We try to keep ABI compatibility among same {MAJOR}_{MINOR} release, so TEENY is fixed at 0.

Pros.

TEENY を上げることで、アップデートのロビーイング効果を高めることができます。特にホスティング業界や保守的な業界の場合、2.0.0 というバージョンを採用することに消極なことがあり、2.0.1 と出すことで Ruby のパッチレベル運用について改めて説明する必要なく採用を進めることができます。

@brblck

This comment has been minimized.

Show comment
Hide comment
@brblck

brblck Dec 12, 2013

Hugely in favor of this move. Would love to see it happen. 👍

brblck commented Dec 12, 2013

Hugely in favor of this move. Would love to see it happen. 👍

@risen

This comment has been minimized.

Show comment
Hide comment
@risen

risen Dec 13, 2013

MINOR: Increase at each December 25th; may be API incompatible

That's not exactly semantic versioning, is it?

From semver.org:

MINOR version when you add functionality in a backwards-compatible manner

risen commented Dec 13, 2013

MINOR: Increase at each December 25th; may be API incompatible

That's not exactly semantic versioning, is it?

From semver.org:

MINOR version when you add functionality in a backwards-compatible manner

@presidentelect

This comment has been minimized.

Show comment
Hide comment
@presidentelect

presidentelect Dec 15, 2013

I have to agree with risen, MINOR should be guaranteed backward compatible.

presidentelect commented Dec 15, 2013

I have to agree with risen, MINOR should be guaranteed backward compatible.

@fredngo

This comment has been minimized.

Show comment
Hide comment
@fredngo

fredngo Dec 25, 2013

MINOR: Increase at each December 25th; may be API incompatible

Can't tell if serious or a joke

fredngo commented Dec 25, 2013

MINOR: Increase at each December 25th; may be API incompatible

Can't tell if serious or a joke

@dogweather

This comment has been minimized.

Show comment
Hide comment
@dogweather

dogweather Jan 1, 2014

Agreed: seems like arbitrary, not semantic versioning.

dogweather commented Jan 1, 2014

Agreed: seems like arbitrary, not semantic versioning.

@olistik

This comment has been minimized.

Show comment
Hide comment
@olistik

olistik Jan 4, 2014

Agreed with @risen.

olistik commented Jan 4, 2014

Agreed with @risen.

@ghost

This comment has been minimized.

Show comment
Hide comment
@ghost

ghost Jan 28, 2014

API incompatible should be change of MAJOR number, not MINOR number. API additions can be in MINOR or TEENY increments.

ghost commented Jan 28, 2014

API incompatible should be change of MAJOR number, not MINOR number. API additions can be in MINOR or TEENY increments.

@maxamillion

This comment has been minimized.

Show comment
Hide comment
@maxamillion

maxamillion commented Mar 20, 2014

Agreed wtith @risen.

@cmtonkinson

This comment has been minimized.

Show comment
Hide comment
@cmtonkinson

cmtonkinson Feb 25, 2015

Agreed. This reads like pure lunacy.

cmtonkinson commented Feb 25, 2015

Agreed. This reads like pure lunacy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment