<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 17 Nov 2021, at 10:35, Stelian Ionescu wrote:</p>

<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px">
<blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999">
<p dir="auto">Mostly sounds good to me. Assuming you're still interested in more<br>
expressive version numbers and constraints for 3.4, I'll work on moving<br>
that off the back burner.</p>
</blockquote>

<p dir="auto">Adding fine-grained version constraints would be a big mistake. Where they've already been implemented (Ruby, Python, Haskell), they've invariably lead to authors selecting overly restrictive contraints because there's no automatic way to determing the minimum version required from dependencies.<br>
In turn, that makes even installing a package a nightmare because it often leads to unsatisfiable dependencies and having to (manually) backtrack until one can find a combination of compatible packages. The distribution model that Quicklisp has, by snapshotting the "world" once a month and ensuring that they all compile is much better so let's keep it that way.</p>

<p dir="auto">If you think I'm exagerating, ask people that are familiar with the process of having to update a Ruby webapp (or a Jekyll blog with many plugins), or even a Python virtualenv-based server. Especially the Ruby community went down this rabbit hole to far that it's no wonder they were the first to adopt Docker back in the days: instead of subjecting users to the dance of "let's see if I can even get this to install" they ended up shipping a whole container as a workaround.</p>
</blockquote>

<p dir="auto">I have mixed feelings about this:</p>

<ol>
<li value="1"><p dir="auto">I agree that the situation in Python is a hot mess. I'm not sure how much this is due to versioning messes as opposed to the excess specificity that one gets from <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">pip freeze</code>, and another confound is the multi-headed horror that is Python package construction and management.</p></li>
<li value="2"><p dir="auto">I <em>desperately</em> want to add version upper bounds. There is a real problem of having someone change a library under one's system, and <em>pace</em> Faré, sometimes one does not have the resources to handle updates to every library in one's build chain.  It's always better for the poor user to see an error message saying that something won't work because of a library update, instead of seeing some kind of horrible mess with no clue where to look.</p></li>
<li value="3"><p dir="auto">I am not that worried that we will end up in the kind of mess that concerns you: right now there are an enormous number of Lisp libraries that don't even have version metadata <em>at all</em> . So if people want to use expressive versioning in a sub-region of the lisp development ecosystem, that is unlikely to cause the problems you see, and might help <em>some</em> of us manage our dependencies.</p></li>
</ol>

<p dir="auto">Cheers,<br>
R</p>
</div>
</div>
</body>
</html>