HackerTube

Spec-ulation Keynote - Rich Hickey

ClojureTV10 HN recommenders · recommended in 9 months, 2016–2024
YouTube
talk · intermediate · evergreen · 2016–2024 on HN

Rich Hickey's keynote on software versioning, arguing that breaking changes are the real problem and that libraries should only grow by providing more and requiring less. It critiques semantic versioning and ties into Clojure spec.

HN returns to it in every versioning and API stability debate as a challenging, contrarian talk worth watching.

12 comments from Hacker News

@finalfantasia2019-10 · in “Thank You, Guido”

To anyone who's interested in this topic, I strongly recommend this talk from Rich Hickey about "giving something to somebody that they can use and making a commitment ": Spec-ulation ( ▶ this video )

Strongly recommends View on HN
@smackay2017-08 · in “APIs as infrastructure: future-proofing Stripe with versioning”

Whenever an idea about API versioning springs into mind it is always worthwhile to watch Rich Hickey's Spec-ulation talk, ▶ this video for an alternative view of the world.

Strongly recommends View on HN
@sooheon2016-12 · in “Ok, let me explain: it’s going to be Angular 4.0”

This talk [1] by Rich Hickey seems more pertinent than ever. It's a contrarian stance on semver (which, almost as much as vc itself, is lauded as "the Right way" among developers). He definitely challenged my beliefs, it's likely to be worth your time too. ▶ this video

Strongly recommends View on HN
@svieira2024-09 · in “Ask HN: How to roll out an internal UI component library”

This is all excellent, and I'll add one more sub point to "Avoid becoming a bottleneck at all costs": - Be backwards compatible. If you need to break backwards compatibility, advertise it widely and put your people towards the migration. Otherwise, only expand the abilities of components, never remove them and only require less, never require more. If you want to remove from what you give or ask for more than you currently require then make a new version of the component (e. g. `components/Button/v2`). Plan for this (e. g. don't ship `components/Button`, ship `components/Button/v1`). Rich Hickey's Spec-ulation talk goes into the principles in some more detail: ▶ this video The reason for this is because your goal is to empower other teams to move faster. The minute that "keeping up to date with the UI library" requires any significant amount of attention you are draining any velocity you added. People will stop (either by not updating or by moving off the library).

Recommends View on HN
@lvh2021-08 · in “Six Years of Professional Clojure”

The two are not mutually exclusive. Clojure has namespaced keywords and specs[0] to cover that. (There is also the third-party malli, which takes a slightly different appproach.) The advantage is that maps are extensible. So, you can have middleware that e.g. checks authentication and authorization, adds keys to the map, that later code can check it directly. Namespacing guarantees nobody stomps on anyone else's feet. Spec/malli and friends tell you what to expect at those keys. You can sort of do the same thing in some other programming languages, but generally you're missing one of 1) typechecking 2) namespacing 3) convenience. [0]: spec-ulation keynote from a few years ago does a good job explaining the tradeoffs; ▶ this video

Recommends View on HN