Upgrade to Pro — share decks privately, control downloads, hide ads and more …

We fail to follow SemVer – and why it needn't matter

We fail to follow SemVer – and why it needn't matter

Stephan Bönnemann

October 27, 2015
Tweet

More Decks by Stephan Bönnemann

Other Decks in Programming

Transcript

  1. 125,000
    @boennemann
    packages on npm

    View full-size slide

  2. @boennemann
    200,00
    packages on npm

    View full-size slide

  3. Each package is
    a problem solved
    @boennemann

    View full-size slide

  4. 1. npmsearch.com
    @boennemann

    View full-size slide

  5. 1. npmsearch.com
    2. npm install
    @boennemann

    View full-size slide

  6. 1. npmsearch.com
    2. npm install
    3. ?
    @boennemann

    View full-size slide

  7. 1. npmsearch.com
    2. npm install
    3. ?
    4. profit
    @boennemann

    View full-size slide

  8. X.Y.Z
    @boennemann

    View full-size slide

  9. X.Y.Z
    @boennemann
    Major Minor Patch
    http://semver.org

    View full-size slide

  10. @boennemann
    Major Minor Patch
    http://semver.org
    1.0.0

    View full-size slide

  11. @boennemann
    Major Minor Patch
    http://semver.org
    1.0.1

    View full-size slide

  12. @boennemann
    Major Minor Patch
    http://semver.org
    1.1.0

    View full-size slide

  13. @boennemann
    Major Minor Patch
    http://semver.org
    2.0.0

    View full-size slide

  14. 2.0.0
    @boennemann
    Major Minor Patch

    View full-size slide

  15. 2.0.0
    @boennemann
    Major Minor Patch

    View full-size slide

  16. 2.0.0
    @boennemann
    Patch
    Breaking Feature

    View full-size slide

  17. 2.0.0
    @boennemann
    Breaking Feature Patch
    http://semver.npmjs.com/

    View full-size slide

  18. 2.0.0
    @boennemann
    Breaking Feature Patch
    http://semver.npmjs.com/
    ~

    View full-size slide

  19. 2.0.0
    @boennemann
    Breaking Feature Patch
    http://semver.npmjs.com/
    ^

    View full-size slide

  20. not really
    @boennemann

    View full-size slide

  21. We fail to
    follow SemVer
    @boennemann

    View full-size slide

  22. @boennemann
    http://npmbynumbers.bocoup.com/

    View full-size slide

  23. @boennemann
    http://npmbynumbers.bocoup.com/
    0.y.z >0.y.z

    View full-size slide

  24. Anything may change
    at any time
    @boennemann

    View full-size slide

  25. No changelogs
    @boennemann

    View full-size slide

  26. Hauptversionsnummern-
    erhöhungsangst¹
    @boennemann
    ¹ Fear of increasing the major version

    View full-size slide

  27. If we strictly followed “semantic”
    versioning, it would probably be
    Backbone.js 43.0.0 by now — which
    doesn't help anyone evaluate the actual
    progress of the project.
    – Jeremy Ashkenas, http://backbonejs.org/
    @boennemann

    View full-size slide

  28. evaluate the actual
    progress of the project
    @boennemann

    View full-size slide

  29. Versions are
    not for humans
    @boennemann

    View full-size slide

  30. @boennemann
    1.x
    2.x

    View full-size slide

  31. @boennemann
    1.x
    1.x

    View full-size slide

  32. Versions are
    not for humans –
    names are
    @boennemann

    View full-size slide

  33. @boennemann
    – Stephan Seidt, http://fucking.engineering/

    View full-size slide

  34. Our tools are so bad,
    we value human readability in
    computer protocols when it really
    doesn’t. fucking. matter.
    @boennemann
    – Stephan Seidt, http://fucking.engineering/

    View full-size slide

  35. We fail to follow
    SemVer and why it
    needn’t matter
    @boennemann

    View full-size slide

  36. we need
    better tools
    @boennemann

    View full-size slide

  37. semantic-release
    fully automated package publishing
    @boennemann

    View full-size slide

  38. @boennemann
    – http://egghead.io/

    View full-size slide

  39. Trust us, this will
    change your workflow
    for the better
    @boennemann
    – http://egghead.io/

    View full-size slide

  40. ⭐⭐⭐
    git.io/semantic-release
    @boennemann

    View full-size slide

  41. automated dependency
    updates and testing
    @boennemann

    View full-size slide

  42. npm install -g greenkeeper
    http://greenkeeper.io
    @boennemann

    View full-size slide

  43. Thank you
    @boennemann

    View full-size slide