<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr">
<p style="color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">
<br>
</p>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">
<div id="divRplyFwdMsg" dir="ltr">
<div><span style="font-family: verdana, sans-serif; font-size: 12pt;">&gt;&nbsp;</span><span style="font-family: verdana, sans-serif; font-size: 12pt;">It&#8217;s normal to define your dependencies using a looser interpretation of a version, using things like &#8220;~&gt; 1.3&#8221; implying
 anything from 1.3.0 -&gt; 1.4.0 ( here&#8217;s a cute video from Google showing the</span><a href="https://www.youtube.com/watch?v=x4ARXyovvPc" style="font-family: verdana, sans-serif; font-size: 12pt;"> use-case in CocoaPods</a><span style="font-family: verdana, sans-serif; font-size: 12pt;">&nbsp;)
 so you would define your dependencies pretty loosely in the manifest ( e.g. package.swift ) but&nbsp;</span><br>
</div>
</div>
<div>
<div dir="ltr">
<div class="gmail_default" style="font-family:verdana,sans-serif"><br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif"><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">I understand that most often the manifest version is less specific; I am very specific because in my experience&nbsp;the
 swift community is not very stable at this point. I default to strict then loosen as necessary and acceptable. Anyway,&nbsp;</span><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;">I assume that&nbsp;by &quot;looser&quot; you don't mean loose
 enough to include versions that are incompatible with the project (intentionally or by negligence, I assume this is bad).</span><br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif">
<p style="font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif;"><span style="font-size: 12pt;"></p>
<div><br>
</div>
</span>
<p></p>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif">&gt;&nbsp;then let the lock/pin file keep track of the exact resolution of those dependencies.</div>
<div class="gmail_default" style="font-family:verdana,sans-serif"><br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif"><span style="font-family: Calibri, Arial, Helvetica, sans-serif;">But the pins file doesn't just &quot;keep track&quot;&nbsp;</span><span style="font-family: Calibri, Arial, Helvetica, sans-serif;">of the exact
 resolution, it actually forces&nbsp;it. Unless you&nbsp;disable automatic pinning the loose specification in the manifest is basically&nbsp;meaningless -&nbsp;you have an exact version defined&nbsp;by&nbsp;the pins file. Then you need to manage two files, the manifest with some meaningless
 loose&nbsp;range and the pins file with the actual version that is being used. Why? Why not just manage the package manifest directly? I still don't see the point.</span><br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif"><br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif"><span style="font-size: 12pt;">&gt;&nbsp;</span><span style="font-size: 12pt;">This tends to make more sense when you have more than a few dependencies.</span><br>
</div>
</div>
<div class="gmail_extra"><br clear="all">
<div>
<div class="gmail_signature">
<div dir="ltr">I would actually think it the opposite. If I have a project with many dependencies constantly updating and changing I would want to be as strict as possible with the versions that are allowable. I believe many other people would too, this is
 why the pins file exists to begin with. It allows very specific management&nbsp;of&nbsp;the versions of the dependencies in a way that the package manifest somehow (I do not yet understand this somehow)&nbsp;cannot.</div>
<div dir="ltr"></div>
<div dir="ltr"><br>
</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">Steven</div>
<div dir="ltr"><br>
</div>
<div dir="ltr"><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>