Semantic Versioning Lightning Talk

26
Semantic Versioning Aaron Blythe

description

Semantic Versioning Lightning talk from the http://www.meetup.com/DevOps-Kansas-City/ September meetup.

Transcript of Semantic Versioning Lightning Talk

Page 1: Semantic Versioning Lightning Talk

Semantic Versioning

Aaron Blythe

Page 2: Semantic Versioning Lightning Talk
Page 3: Semantic Versioning Lightning Talk
Page 4: Semantic Versioning Lightning Talk
Page 5: Semantic Versioning Lightning Talk

Fundamentals – The Shot

Page 6: Semantic Versioning Lightning Talk

Fundamentals – The Shot

Page 7: Semantic Versioning Lightning Talk

Fundamentals – The Shot

Page 8: Semantic Versioning Lightning Talk

Fundamentals – The Shot

Page 9: Semantic Versioning Lightning Talk

Fundamentals – The Shot

Page 10: Semantic Versioning Lightning Talk

http://semver.org/

Page 11: Semantic Versioning Lightning Talk

Public API

• MUST declare a public API– declared in the code itself or exist strictly in

documentation– should be precise and comprehensive

• Once released, the contents MUST NOT be modified

• Any modifications must be released as a new version

Page 12: Semantic Versioning Lightning Talk

Version 1.2.3

Page 13: Semantic Versioning Lightning Talk

Version 1.2.3

Major Minor Fix (Patch)

Page 14: Semantic Versioning Lightning Talk

Fix

Version 1.2.3

Version 1.2.4

Page 15: Semantic Versioning Lightning Talk

Passive Addition of Functionality

Version 1.2.3

Version 1.3.0

Page 16: Semantic Versioning Lightning Talk

Non-Passive Change

Version 1.2.3

Version 2.0.0

Page 17: Semantic Versioning Lightning Talk

What about Continuous Integration?

• I build code everyday that is changing…

• Pre-release MAY be denoted by arbitrary string following the patch version and a dash

• Only alphanumerics plus dash [0-9A-Za-z-] • Precedence SHOULD be determined by

lexicographic ASCII sort order.

Page 18: Semantic Versioning Lightning Talk

What about Continuous Integration?

1.0.0-alpha1 < 1.0.0-beta1 < 1.0.0-beta2 < 1.0.0-rc1 < 1.0.0

Page 19: Semantic Versioning Lightning Talk

But every system is different

• Java Maven– 2.4-SNAPSHOT Builds: – server-2.4-20130917.071310-55.jar

• RubyGems– Rails• 2.3.8.pre1• 3.0.0.beta2 • 3.2.14.rc2

Page 20: Semantic Versioning Lightning Talk

What about early on when I change the API everyday

• Major version zero (0.y.z) is for initial development.

• Anything may change at any time.• The public API should not be considered

stable.

Page 21: Semantic Versioning Lightning Talk

When do I ship 1.0.0?

• If your code is in a production system, then it is a 1.0.0

Page 22: Semantic Versioning Lightning Talk

What if I mess up?

Page 23: Semantic Versioning Lightning Talk
Page 24: Semantic Versioning Lightning Talk

Why is this important?

This is communication Mechanism

Page 25: Semantic Versioning Lightning Talk

Why is this important?

Page 26: Semantic Versioning Lightning Talk

Why is this important?