~/talk

Zen and the Art of Package Management

Talkat RubyConf Portugal 2016 · 2016-10-27..10-28· [developer-experience]
slides:none on file

Built three package managers — Bundler, Cargo, Yarn — and compares concrete behaviors: Cargo enforces semver (it refuses to publish "" ranges), NPM install is explicitly non‑deterministic, Yarn lacks conservative updates, and Servo’s encoding crate already shows ~30 reverse dependents. Presents cargo features* as a solved optional‑dependency pattern, argues for automatic local isolation, reproducible lockfiles, cached cross‑project builds, resolver backtracking (NP‑complete in practice) and the Highlander rule to avoid harmful duplicate public types.

AI-written summary · about

  1. 0:00Start
  2. 0:05Zen and the Art of Package Management
  3. 3:48First, Some Terms
  4. 4:13Global Package Manager
  5. 14:11By breaking up your code, you massively increase the total number of people who can work on the entirety of your project's code
  6. 16:07A good local package manager...
  7. 19:27Developers still think in terms of the core workflows
  8. 22:09A stable ecosystem with rich dependency graphs
  9. 23:06isolates projects on the same machine from each other automatically
  10. 25:07One Option "Weak Linking"
  11. 30:31establishes conventions for units of code at the package level even when the underlying language only understands code at the module level
  12. 32:52reliably includes the same source code for each build across machines and environments
  13. 33:26Consider all potential dependencies from other profiles and platforms
  14. 34:30minimizes changes to unrelated packages when updating a single package
  15. 35:22caches as much work as possible between projects without sacrificing isolation
  16. 37:37supports temporary override of an application's dependencies for emergency fixes, upgrades or co-development
  17. 38:06escape valves are critical for maintaining faith in the overall system and especially its reliance on server compliance
  18. 39:18apps need to ship emergency fixes
  19. 39:42upgrades sometimes require tricky coordination across an entire dependency graph and use of not-yet-released code
  20. 40:21many developers co-develop secondary packages locally while working on dependent packages
  21. 40:37all of these scenarios call for an override feature that can apply to indirect dependencies
  22. 43:21attempts to unify dependency ranges into single packages when possible
~/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.