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

JavaScript Release Management for Open Source Projects and Companies

JavaScript Release Management for Open Source Projects and Companies

Releasing npm packages is simple, but how do you answer these questions once a new version is due?

what version number to pick?
did I break any downstream packages?
are my own package’s dependencies up to date and working?

In this talk we’ll discuss the challenges of responsibly publishing solid and dependable packages and how to follow a deterministic and tool-backed process to automate the dull work involved.

---

I gave this talk together with @christophwitzko

Stephan Bönnemann

November 19, 2015
Tweet

More Decks by Stephan Bönnemann

Other Decks in Programming

Transcript

  1. JAVASCRIPT
    RELEASE
    MANAGEMENT
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  2. MODULES
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  3. MODULES
    THE ATOMS OF
    PROGRAMMING
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  4. BUT MODULES
    CAN CHANGE
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  5. 118 ELEMENTS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  6. 200.000
    MODULES
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  7. WATER 2.0
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  8. WATER 2.0
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  9. HUMANS ARE
    IMPERFECT
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  10. MODULES ARE
    IMPERFECT
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  11. WE CAN'T DESIGN
    PERFECT ABSTRACTIONS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  12. WE CAN
    COMMUNICATE
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  13. WE CAN SET
    EXPECTATIONS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  14. WRITING CODE
    FOR OTHERS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  15. X.Y.Z
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  16. 1.0.0
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  17. 1.0.1
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  18. 1.1.0
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  19. 2.0.0
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  20. ~2.0.0
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  21. RELEASE
    CHANNELS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  22. CHANGELOGS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  23. GIT.IO/SEMANTIC-RELEASE
    FULLY AUTOMATED PACKAGE PUBLISHING
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  24. ONE MORE THING…
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  25. BREAKING
    CHANGE
    DETECTION
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  26. USING CODE
    FROM OTHERS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  27. REGULAR
    UPDATES
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  28. WRITE TESTS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  29. CHOSE WISELY
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  30. GREENKEEPER
    http://greenkeeper.io/
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  31. ALWAYS UP-TO-DATE
    NPM DEPENDENCIES,
    ZERO HASSLE
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  32. REAL TIME
    PULL REQUESTS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  33. REAL TIME
    BREAK DETECTION
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  34. GETTING STARTED WITH
    GREENKEEPER
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  35. $ npm i -g greenkeeper
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  36. $ greenkeeper login
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  37. $ greenkeeper enable
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  38. PULL REQUESTS ARE NOT
    INITIATED BY THE USERS
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  39. PULL REQUESTS ARE
    NOT TIME CRITICAL
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  40. Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  41. FREE FOR OPEN
    SOURCE?
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  42. FREE FOR OPEN
    SOURCE
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  43. ONE FREE
    PRIVATE REPO
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide

  44. GREENKEEPER
    http://greenkeeper.io/
    Berlin.JS November 2015 – @boennemann & @christophwitzko

    View full-size slide