24 ms·
> The default should be to update constantly. Expecting developers to remember to manually trigger updates just results in perpetually-stale dependencies. If a
by KallDrexx 9y ago
> The default should be to update constantly. Expecting developers to remember to manually trigger updates just results in perpetually-stale dependencies. If a specific issue is found with a newer version, then having the ability to explicitly pin to an old version is reasonable.
I'd argue dependencies should be manually updated constantly.
While version pinning does allow you to accrue technical debt if your team has discipline it does allow you to manage the upgrade process and understand the impacts of a dependency upgrade.
Even without obvious API changes it's possible that the implementation details of a library's method can cause your code to function differently, which can be caused by the introduction of a bug, the fixing of a bug your code didn't realize was a bug, or any minor quirks that may change between versions. When you manually upgrade you know exactly what to test and what to look for because (presumably) the person doing the dependency upgrade is someone who knows how the dependency is used. If you do not do manual upgrades but automatically update everything all the time bugs can sneak in and it won't always be easy to track down what caused it.
- dionian 9y agoin my experience traceability of the versions of the dependencies used is as important as tracing that you use them... having that all in source control and being to replicate an immutable build from that tag at any time in the future is useful especially for large and complicated projects.