$30 off During Our Annual Pro Sale. View Details »

On the Meaning of Version Numbers

Hynek Schlawack
April 25, 2020
250

On the Meaning of Version Numbers

Hynek Schlawack

April 25, 2020
Tweet

Transcript

  1. Hynek Schlawack
    On the Meaning of
    Version Numbers
    @hynek

    View Slide

  2. Semantic
    Versioning
    @hynek

    View Slide

  3. 1.2.3
    micro
    @hynek

    View Slide

  4. 1.2.3
    minor
    micro
    @hynek

    View Slide

  5. 1.2.3
    major
    minor
    micro
    @hynek

    View Slide

  6. SemVer is a
    poor choice for
    most projects.
    @hynek

    View Slide

  7. SemVer doesn’t
    deliver on its
    promises.
    @hynek

    View Slide

  8. “I can choose to only get bugfixes.”
    https://xkcd.com/1172/
    @hynek
    Hyrum’s Law

    View Slide

  9. Very few open source projects
    have the resources to
    maintain more than one
    release branch (properly).
    “I can choose to only get bugfixes.”
    @hynek

    View Slide

  10. If You Pin Major Version In Your Applications
    @hyne

    View Slide

  11. -No security updates.
    If You Pin Major Version In Your Applications
    @hyne

    View Slide

  12. -No security updates.
    -The longer you wait, the harder it gets.
    If You Pin Major Version In Your Applications
    @hyne

    View Slide

  13. @hynek
    If You Pin Major Version In Your Public Package
    your-pkg
    urllib3
    1.25.9

    View Slide

  14. @hynek
    If You Pin Major Version In Your Public Package
    your-pkg
    urllib3
    1.25.9
    User’s
    App

    View Slide

  15. @hynek
    If You Pin Major Version In Your Public Package
    your-pkg
    urllib3
    1.25.9
    User’s
    App
    <2.0

    View Slide

  16. @hynek
    If You Pin Major Version In Your Public Package
    your-pkg
    urllib3
    1.25.9
    User’s
    App
    <2.0
    2.0.0

    View Slide

  17. @hynek
    If You Pin Major Version In Your Public Package
    your-pkg
    urllib3
    1.25.9
    User’s
    App
    <2.0
    other-
    pkg
    >2.0
    2.0.0

    View Slide

  18. @hynek
    If You Pin Major Version In Your Public Package
    your-pkg
    urllib3
    1.25.9
    User’s
    App
    <2.0
    other-
    pkg
    >2.0
    Conflict!
    2.0.0

    View Slide

  19. @hynek

    View Slide

  20. 1. Have tests.
    @hynek

    View Slide

  21. 1. Have tests.
    2. Pin your dependencies.
    @hynek

    View Slide

  22. 1. Have tests.
    2. Pin your dependencies.
    3. Try to update dependencies.
    @hynek

    View Slide

  23. 1. Have tests.
    2. Pin your dependencies.
    3. Try to update dependencies.
    4. See if tests still pass.
    @hynek

    View Slide

  24. 1. Have tests.
    2. Pin your dependencies.
    3. Try to update dependencies.
    4. See if tests still pass.
    5. GOTO 3
    @hynek

    View Slide

  25. Almost nobody
    does SemVer
    correctly.
    @hynek

    View Slide

  26. https://0ver.org
    @hynek

    View Slide

  27. A concept that most
    people get wrong
    is not
    a useful concept for
    most people.
    @hynek

    View Slide

  28. SemVer is a
    poor choice for
    most projects.
    @hynek

    View Slide

  29. Acceptance
    @hynek

    View Slide

  30. @hynek

    View Slide

  31. Calendar
    Versioning
    @hynek

    View Slide

  32. • Toyota 2020 Yaris

    • pip 20.0.2

    • Ubuntu 20.04

    • certifi 2020.4.5.1
    @hynek

    View Slide

  33. Takeaways
    @hynek

    View Slide

  34. Takeaways
    •Don’t believe the promises of SemVer.
    @hynek

    View Slide

  35. Takeaways
    •Don’t believe the promises of SemVer.
    •Don’t do SemVer if you’re afraid to increment major.
    @hynek

    View Slide

  36. Takeaways
    •Don’t believe the promises of SemVer.
    •Don’t do SemVer if you’re afraid to increment major.
    •Try CalVer!
    @hynek

    View Slide

  37. @hynek
    CalVer.org
    vrmd.de

    View Slide