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

Releasing Calendar Versioned Software (PyCon AU...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Releasing Calendar Versioned Software (PyCon AU 2016)

Avatar for Amber Brown (HawkOwl)

Amber Brown (HawkOwl)

August 14, 2016

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