X.Y.Z Three numbers, not one. Each increments sequentially. Each increments indefinitely.
Slide 23
1.9.0 Can but does not have to increment to 2.0.0
Slide 24
1.9.0 can increment to 2.0.0 1.10.0 1.9.1
Slide 25
What do the terms mean? Major = breaking changes Minor = new features Patch = bug fixes
Slide 26
Breaking changes Code changes which are not backwards-compatible are called breaking changes.
Slide 27
Imagine this API: // returns a small black coffee COFFEE.gimme(‘large’)
Wait, large returns small ?
Slide 28
Next release // returns a large black coffee COFFEE.gimme(‘large’)
Fixed! That’s a patch: 1.0.1
Slide 29
Next release // adds types of coffee COFFEE.gimme(‘large’, ‘latte’)
New feature! That’s a minor: 1.1.0
Slide 30
Next release // has a more extensible format COFFEE.gimme({ ‘size’:’large’, ‘type’:’latte’ }) // but old calls no longer work COFFEE.gimme(‘large’, ‘latte’)
That’s a breaking change: 2.0.0
Slide 31
Shorthand SemVer compresses information.
Slide 32
We judge risk every day Update available 1.7.7 → 1.7.9 Run npm i g bower to update
Slide 33
How risky is this upgrade? 1.0.0 to 2.0.0 = dangerous 1.0.0 to 1.1.0 = safe 1.0.0 to 1.0.1 = safe
Slide 34
What will happen when I upgrade? 1.0.0 to 2.0.0 = things will break 1.0.0 to 1.1.0 = you can use something new 1.0.0 to 1.0.1 = something was fixed
Slide 35
What do I need to read? 1.0.0 to 2.0.0 = upgrade guide, definitely 1.0.0 to 1.1.0 = release notes, maybe 1.0.0 to 1.0.1 = nothing
Slide 36
Non-code SemVer Versions can help with design, copy…
Slide 37
Does this look familiar? website-new.psd website-new_new.psd website-new_new-blue.psd website-new_new-with-bigger-logo.psd website-new-final.psd website-new-final-fixed.psd