~/talk

Releasing Calendar-Versioned Software

slides:none on file

Advocates of calendar-versioned releases argue for time-based, frequent rollouts instead of semver guarantees, and show how Twisted makes it work: automated testing, CI, news fragments to collect changelog items, version-compare utilities, coverage aggregation and micro/macro benchmarks. The project keeps trunk releasable, runs about 5 releases/year, enforces one-year deprecation (or two releases) and treats security fixes as exceptions. Result: large Python codebases (Twisted ported 40,000+ lines to Python 3) ship smaller, safer updates with fewer surprise breakages.

AI-written summary · about

  1. 0:00Intro
  2. 1:33Consistency in your software's characteristics
  3. 2:11Upgrading to Version Y is explicit, repeatable
  4. 2:26Feature releases Bugfix releases Repackagings
  5. 2:53SemVer "Semantic versioning"
  6. 3:18A new version of Java is available! Java 8 Update 101 build 13 is now available
  7. 4:45Fits well with planning, roadmaps, "top-down"
  8. 5:38Easy for developers to understand and use to communicate intent
  9. 5:57Why SemVer does not fit reality
  10. 6:18No such thing as a "safe release"
  11. 6:37Doesn't scale well to complex software (frameworks, languages, operating systems)
  12. 7:32"It's okay, we can update the major version number" hurts your users
  13. 8:06"Agile" developed software does not fit a "top down" model
  14. 10:43Reduce the friction for a user to upgrade constantly
  15. 12:59Realities of Software
  16. 13:32Regressions will happen
  17. 14:23Effective calver requires you adopt better processes
  18. 14:42Implementing Calver
  19. 15:21Operating systems, enterprise software
  20. 15:46Software that talks to external services, software with security implications, libraries/frameworks
  21. 17:19Constantly changing software needs to have different QA processes
  22. 18:11Issue release candidates and encourage users to run their tests against it
  23. 18:50Q: What is a regression? A: When user's software stops working through no fault of their own.
  24. 19:16Python import locations Argument names + types Return value types Behaviour
  25. 19:42Have A Clear Public API
  26. 19:58Abstract interfaces over concrete implementations
  27. 20:37Test ONLY using your public API
  28. 20:50Mock-based testing means you may hide bugs in the underlying layers!
  29. 21:12Re-Export Functionality
  30. 21:27Write private modules, re-export into a public one
  31. 21:51Can't accidentally export implementation details
  32. 22:18Track Your Performance
  33. 22:45Microbenchmarks (Black Box)
  34. 23:46Implement Code Review
  35. 24:20What Aren't Regressions
  36. 25:01Safely Making Breaking Changes
  37. 27:43tl;dr: Six Steps To Calver
  38. 28:15Don't break the user's software!
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.