Slide 1

Slide 1 text

UNBREAKABLE STRONGER SOFTWARE WITH SEMVER

Slide 2

Slide 2 text

DUSTY BURWELL @dustyburwell I envy you I’ve never been able to meet me

Slide 3

Slide 3 text

VERSION NUMBERS OF THE PAST

Slide 4

Slide 4 text

1.0.0.0

Slide 5

Slide 5 text

1 .0 .0 .0

Slide 6

Slide 6 text

MAJOR BIG FEATURES WHEN MARKETING SAYS .REVISION .HOT FIXES .BUILD .EVERY BUILD .MINOR .SMALL FEATURES .LITERALLY ALWAYS ZERO .EVERY BUILD .WHEN THE LEAD DEVELOPER SAYS

Slide 7

Slide 7 text

MARKETING NUMBERS

Slide 8

Slide 8 text

OTHER SCHEMES

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

ENTER SEMVER

Slide 11

Slide 11 text

MAJOR.MINOR.PATCH

Slide 12

Slide 12 text

BREAK .FIX .PATCH .MINOR MAJOR .FEATURE

Slide 13

Slide 13 text

PATCH (FIX)

Slide 14

Slide 14 text

public class Calculator { // Subtracts b from a public int sub(int a, int b) { return b - a; } }

Slide 15

Slide 15 text

public class Calculator { // Subtracts b from a public int sub(int a, int b) { return a - b; } }

Slide 16

Slide 16 text

var sort = function () { // bubble sort }; module.exports = sort;

Slide 17

Slide 17 text

var sort = function () { // QUICK SORT }; module.exports = sort;

Slide 18

Slide 18 text

REFACTOR

Slide 19

Slide 19 text

MINOR (FEATURE)

Slide 20

Slide 20 text

public class Calculator { public int add(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } }

Slide 21

Slide 21 text

public class Calculator { public int add(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } public int div(int a, int b) // New Function! { return a / b; } }

Slide 22

Slide 22 text

public class Person { public FirstName { get; set; } public LastName { get; set; } }

Slide 23

Slide 23 text

public class Person { public FirstName { get; set; } public MiddleName { get; set; } // New Property! public LastName { get; set; } }

Slide 24

Slide 24 text

var add = function(a, b) { return a + b; } var sub = function(a, b) { return a - b; } module.exports = { add: add, sub: sub }

Slide 25

Slide 25 text

var add = function(a, b, c) { if (!c) { c = 0; } return a + b + c; } var sub = function(a, b) { return a - b; } module.exports = { add: add, sub: sub }

Slide 26

Slide 26 text

DEPRECATIONS

Slide 27

Slide 27 text

public class Calculator { public int add(int a, int b) { return a + b; } [System.Obsolete("Just use `-`")] public int sub(int a, int b) { return a - b; } }

Slide 28

Slide 28 text

public class Person { public FirstName { get; set; } [System.Obsolete("I hate my middle name")] public MiddleName { get; set; } public LastName { get; set; } }

Slide 29

Slide 29 text

var add = function(a, b) { return a + b; } var sub = function(a, b) { return a - b; } module.exports = { add: add, sub: util.deprecate(sub, "Just use `-`") }

Slide 30

Slide 30 text

var add = function(a, b, c) { if (!c) { Console.warn("Two addend `add` is deprecated"); c = 0; } return a + b + c; } var sub = function(a, b) { return a - b; } module.exports = { add: add, sub: sub }

Slide 31

Slide 31 text

MAJOR (BREAK)

Slide 32

Slide 32 text

REMOVE DEPRECATIONS

Slide 33

Slide 33 text

VERSION 0.X.Y

Slide 34

Slide 34 text

PRE-RELEASE TAGS 1.2.1-alpha.0 2.4.8-beta.1 5.4.71-yolo

Slide 35

Slide 35 text

DEPENDENCY RESOLUTIon >=1.0 >=1.0 <2.0 ~1.0

Slide 36

Slide 36 text

NESTED VERSION LOCKING NPM SHRINKWRAP BUNDLER LOCK FILE

Slide 37

Slide 37 text

APP VERSIONING

Slide 38

Slide 38 text

LOGS

Slide 39

Slide 39 text

CONFIGURATION

Slide 40

Slide 40 text

SERVICE API VERSIONING

Slide 41

Slide 41 text

SINGLE DEPLOY

Slide 42

Slide 42 text

EMBER.JS

Slide 43

Slide 43 text

NODE.JS

Slide 44

Slide 44 text

var b1 = Buffer.new(“test”); var b2 = Buffer.new([1,2,3]); var b3 = Buffer.new(16);

Slide 45

Slide 45 text

var b1 = Buffer.from(“test”); var b2 = Buffer.from([1,2,3]); var b3 = Buffer.alloc(16); var b4 = Buffer.allocUnsafe(16);

Slide 46

Slide 46 text

ELM-LANG

Slide 47

Slide 47 text

TEST FOR BREAKS $ git checkout v1.0.0 -- specs/version_tests $ ./run_tests specs/version_tests

Slide 48

Slide 48 text

DOCUMENT DOCUMENT DOCUMENT Being an adult is terrible

Slide 49

Slide 49 text

SEMVER.ORG

Slide 50

Slide 50 text

THE END