On Fri, Apr 29, 2016 at 3:26 PM, Ian Tegebo ian.tegebo@gmail.com wrote:
Elsewhere, it happens in large projects where two direct dependencies themselves depend on different versions of the same library. I haven't had this happen to me in CL, but I expect it to happen if exact version matching were to become prevalent.
In reading this list, and elsewhere, I understand that versioning becomes controversial. I've experienced both sides of the problem where you either under or over specify the versions of dependencies. Exact version matching is a useful tool to limit the impact of upstream changes. However, it does induce trivial domino-updates. At Amazon, I got used to some tooling and process that reduces the overhead, while also seeing the turmoil caused by teams having to support old versions (they'd pinned/used-exact and would never have "the resources" to update).
This is called "DLL Hell". Don't go there. If you go there, use tools like NixOS that can help you survive.
ASDF just isn't the right tool to attempt things like that, and is unlikely to ever grow into one.
If you're interested in cool language features, that's one thing, but I can't imagine as an engineering matter that you couldn't hack around the few times this would happen.
While I am interested in cool [features] for HOT languages [1], I recognize the pragmatic approach is sort out the upstream divergence and find some workaround - I'm not arguing one way or the other - just wondered whether and how one might sort it out at the system-builder layer.
I like Racket units. They were one of the inspirations for lisp-interface-library. https://github.com/fare/lisp-interface-library
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org If it's not worth doing right, it's not worth doing. — Scott McKay