2024-03-01
Lecture Friday: Spec-ulation Keynote
A Rich Hickey talk is always a good time.
Here I think he's right on in understanding the real problems of versioning and communicating what we've done to our code that someone else depends on. I also love the attention to the real semantics through set operations. I also think he's right. Every time someone breaks something I depend on, I'm forced to do a bunch of work because of someone else. Not work I wanted to do, work they made me do. And that makes me want to instead do the work to delete that dependency. It's costing me extra work to maintain it. Work that's usually not improving my work in any meaningful way to me and my users.
Telling developers building dependencies, building platforms, that it's fine to break things as long as you change the left most number invites them to break things. It says it's fine as long as you let me know. It's not fine. Stop breaking things! If you want people to depend on you, be dependable. "The spec says I'm allowed to. I changed the number."
No. Just because you can doesn't mean you should. My favourite dependencies don't break things. They continue to work, they know when to stop. My favourites haven't been updated in years. When did we get this insane idea that everything needs updating to add new things I don't care about all the time? I blame Microsoft but we all need to stop it. Build new things when you want to add something. It's fine to create a new package that depends on the first if you're adding new things. The vast majority of people using the first thing, by definition, don't need the new thing.