top | item 19693994

(no title)

msangi | 6 years ago

Package managers solve it quite well. Just depend on the latest version of your dependencies and tag a new version whenever they change.

discuss

order

ricardobeat|6 years ago

This doesn’t work when an underlying system changes, and upgrading is mandatory for all clients or package dependants (happens often at scale for a multitude of reasons).

erik_seaberg|6 years ago

That's not good stewardship. You have a better API? Great, convince us it's worth investing in soon, you can even deprecate the known-good version.

There's always a window where both will be in use, because we can't synchronously replace every running process everywhere (not that it's even a good idea without a canary). The shorter you try to make that window, the more needless pain is created and plans disrupted. While we could use prod to beta test every single version of everything, that shouldn't be our priority.

ljm|6 years ago

This is essentially the problem go has had, precisely because you could only ever pull the latest from master.

Introduce a breaking change into a common library and now you have to update every other dependency to support it.

Not so bad in a monorepo. But when your codebases are distributed?

bluGill|6 years ago

Or realize that it is an advantage to control your dependencies.

UncleMeat|6 years ago

Now you have to desperately try to get people to upgrade every time an important change goes through. And you quickly live in a world where you need to maintain tons of versions of all your services.