Thanks all for the rest of your comments. Interesting notes about Clojure, Hans.<div><br></div><div>I agree that this problem is not unique to Lisp, but what is relatively unique is that it's a quiet problem. (Mismatching of transitive dependencies can go unnoticed until something eventually breaks.)</div><div><br></div><div>The only question in response to many of your relatively-in-agreement-with-each-other comments is: do you think the relevant portions of Lisp, the relevant portions of the Lisp tool chain (ASDF, QL), and the way in which Lisp seems to be popularly used in open source are as a whole close to optimal in what we can do in 2016 to even detect, let alone address, these kinds of issues? Or is manual per-project vetting and curation of libraries the best possible?</div><div><br></div><div>Robert</div><div><br>On Thursday, May 19, 2016, Stelian Ionescu <<a href="mailto:sionescu@cddr.org">sionescu@cddr.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>
<div><div> </div>
<blockquote type="cite"><div dir="ltr"><div><div><div><div>I don't know much about Bazel, and I know a little about NixOS. Regardless, this seems to be moving the problem into how we globally synchronize our systems. <br></div>
<div> </div>
<div>I am absolutely boggled by this attitude. This is an issue that one runs into when writing Common Lisp code, and not an issue that one runs into writing in another language and associated ecosystem. To me, that's a Lisp problem. We can do some creative academic definitions, I think, but it's a problem when choosing Lisp as a tool.<br></div>
</div>
</div>
</div>
</div>
</blockquote><div><div> </div>
<div style="font-family:"Courier New"">It's not a Lisp-only problem, it's a general boolean satisfiability problem that all languages have. The only way to deal with this is to ensure that your entire ecosystem works with the same set of dependencies, to check-in those dependencies in your repository and not rely on "semantic versioning" or other such illusions, run the tests(do actual QA) and be very conservative with upgrades.<br></div>
<div style="font-family:"Courier New"">Having a source control system that can keep everything in one repository, with partial checkouts, is very useful in achieving that. I've started to really appreciate Perforce in the last year or so.<br></div>
<div style="font-family:"Courier New""> </div>
<div style="font-family:"Courier New"">At my previous company, we had so many problems with Node.js(good for prototyping) because of the fact that npm(the package manager) downloaded private copies of the libraries, that in the end I think they rewrote the server to something more sensible, Java.<br></div>
<div style="font-family:"Courier New""> </div>
<div>--<br></div>
<div>Stelian Ionescu a.k.a. fe[nl]ix<br></div>
<div>Quidquid latine dictum sit, altum videtur.<br></div>
</div>
<div style="font-family:"Courier New""> </div>
</div>
</blockquote></div>