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

Releasing Calendar Versioned Software (PyCon AU 2016)

Releasing Calendar Versioned Software (PyCon AU 2016)

Amber Brown (HawkOwl)

August 14, 2016
Tweet

More Decks by Amber Brown (HawkOwl)

Other Decks in Technology

Transcript

  1. @hawkieowl "Releasing Calendar Versioned Software" Release Manager for: 13.2 14.0

    15.0, 15.1, 15.2, 15.3, 15.4, 15.5 16.0, 16.1, 16.2, 16.3, 16.4
  2. Given a version number MAJOR.MINOR.PATCH, increment the: 1. MAJOR version

    when you make incompatible API changes, 2. MINOR version when you add functionality in a backwards-compatible manner, and 3. PATCH version when you make backwards- compatible bug fixes. - semver.org
  3. @hawkieowl "Releasing Calendar Versioned Software" Doesn't scale well to complex

    software (frameworks, languages, operating systems)
  4. @hawkieowl "Releasing Calendar Versioned Software" Forces your whole codebase to

    operate in lockstep regarding deprecations, removals
  5. @hawkieowl "Releasing Calendar Versioned Software" Large userbases on old major

    versions means you have to backport security fixes
  6. @hawkieowl "Releasing Calendar Versioned Software" Promise no breaking changes without

    deprecations, ever* *(or at least without a very good reason)
  7. @hawkieowl "Releasing Calendar Versioned Software" Loose schedules mean that you

    can release as often as there's features or fixes you want in the user's hands
  8. @hawkieowl "Releasing Calendar Versioned Software" Software that talks to external

    services, software with security implications, libraries/frameworks
  9. @hawkieowl "Releasing Calendar Versioned Software" Twisted requires 1 year of

    deprecation (as long as two releases have happened in the meantime)
  10. @hawkieowl "Releasing Calendar Versioned Software" Django requires 8-16mo of deprecation

    (Django uses a semver/calver hybrid, with "LTS" releases)
  11. @hawkieowl "Releasing Calendar Versioned Software" Q: What is a regression?

    A: When user's software stops working through no fault of their own.
  12. @hawkieowl "Releasing Calendar Versioned Software" Public module.MyClass Private module._MyClass _module.MyClass

    (ish*) *If _module.MyClass is accessible through a public function, it is public
  13. @hawkieowl "Releasing Calendar Versioned Software" As long as the public

    API stays the same, everything else can change
  14. @hawkieowl "Releasing Calendar Versioned Software" Instead of mocks, use explicitly

    passed fakes that implement the same interface as the real thing
  15. @hawkieowl "Releasing Calendar Versioned Software" Have a process so that

    breaking changes are as unsurprising as possible