<div dir="ltr">Hi guys, <div><br></div><div>Sorry for the late repose, Hope I haven&#39;t missed the review window.</div><div><br></div><div>I&#39;ve read through the proposal for the versioning, and I feel that there is an over complication there. I would suggest something like this for specifying the version:</div><div><br></div><div><br></div><div>If you want to have latest version of SwiftyJSON (you don&#39;t even care about when major version:</div><div><pre style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal;color:rgb(36,41,46)">.<span class="inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">package</span>(<span class="inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">url</span>: <span class="inbox-inbox-pl-s" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span><a href="http://github.com/SwiftyJSON" style="color:rgb(126,87,194)">http://github.com/SwiftyJSON</a><span class="inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span></span>)</pre></div><div><br></div><div>If you want to have latest of major 1</div><div><pre style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal;color:rgb(36,41,46)">.<span class="inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">package</span>(<span class="inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">url</span>: <span class="inbox-inbox-pl-s" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span><a href="http://github.com/SwiftyJSON" style="color:rgb(126,87,194)">http://github.com/SwiftyJSON</a><span class="inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span></span>, <span class="inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">from</span>: <span class="inbox-pl-s" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="inbox-pl-pds" style="box-sizing:border-box">&quot;</span>1<span class="inbox-pl-pds" style="box-sizing:border-box">&quot;</span></span>)</pre></div><div><br></div><div>if you want to have latest of minor 1.5</div><div><pre style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal;color:rgb(36,41,46)">.<span class="inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">package</span>(<span class="inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">url</span>: <span class="inbox-inbox-pl-s" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span><a href="http://github.com/SwiftyJSON" style="color:rgb(126,87,194)">http://github.com/SwiftyJSON</a><span class="inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span></span>, <span class="inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">from</span>: <span class="inbox-pl-s" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="inbox-pl-pds" style="box-sizing:border-box">&quot;</span>1.5</span>)</pre></div><div><br></div><div>if you want to specify exact 1.5.2 (but the author might choose to be maintaining 1.5.2-patch1, 1.5.2-patch2 and co..)</div><div><pre style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal;color:rgb(36,41,46)">.<span class="inbox-inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">package</span>(<span class="inbox-inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">url</span>: <span class="inbox-inbox-inbox-pl-s" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="inbox-inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span><a href="http://github.com/SwiftyJSON" style="color:rgb(126,87,194)">http://github.com/SwiftyJSON</a><span class="inbox-inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span></span>, <span class="inbox-inbox-pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">from</span>: <span class="inbox-inbox-pl-s" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span>1.5.2<span class="inbox-inbox-pl-pds" style="box-sizing:border-box">&quot;</span></span>)</pre></div><div><br></div><div><br></div><div>Adopting this structure I think removes the need to have a uptoNextMajor &amp; uptoNextMinor which behavior I find not intuitive.</div><div><br></div><div><br></div><div>-m.</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Mar 13, 2017 at 10:30 PM Rick Ballard via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg"> Proposal link:<br class="gmail_msg">&gt;  <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0158-package-manager-manifest-api-redesign.md" class="gmail_msg" target="_blank">https://github.com/apple/swift-evolution/blob/master/proposals/0158-package-manager-manifest-api-redesign.md</a><br class="gmail_msg"><br class="gmail_msg">Hi Xiaodi,<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thanks for your review comments! There are indeed a few mistakes here; we&#39;re going to revise the proposal appropriately, and assuming that nothing else comes up to cause us to reject this proposal, it will wind up &quot;accepted with revisions&quot; tomorrow.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Specifically:</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">– .uptoNextMajor() and .uptoNextMinor were miscapitalized; we will correct them to .upToNextMajor() and .upToNextMinor().</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">– Dave Sweeris&#39; point about this reading wrong in English as .upToNextMajor(&quot;x.y.z&quot;) (vs. of &quot;x.y.z&quot;.upToNextMajor) makes sense to us too. As a result, we&#39;re going to clarify this by changing it to .upToNextMajor(after:&quot;x.y.z&quot;) and .upToNextMinor(after:&quot;x.y.z&quot;).</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">– We will get rid of .only() in favor of .exact().</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">– We will remove the .package(url:,branch:) and .package(url:,revision:) initializers. They duplicate the functionality provided by the .branch() and .revision() cases without adding any additional value.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">– We are still planning to keep .package(url:,from:), however, even though it duplicates the functionality of the .upToNextMajor() case. The duplication is somewhat undesirable for the reason you mention, but we think it&#39;s worth it in this case for two reasons:</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">* We want to encourage this form of version specification to be used when possible, to establish good norms around semantic versioning in our ecosystem. Calling it out as a special initializer makes it more prominent.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">* Since we hope that this form of version specification will be used most of the time, we still think that it&#39;s worthwhile to make it really quick and easy to type. Other package managers also have special syntax (e.g. ~&gt;) to make the common version specifiers quick and easy. We want to stay swift-y and descriptive, but .upToNextMajor() is pretty annoying to type every time.</div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><span class="m_-2554546004642700846Apple-tab-span gmail_msg" style="white-space:pre-wrap">        </span>- Rick</div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On Mar 11, 2017, at 4:41 PM, Xiaodi Wu via swift-build-dev &lt;<a href="mailto:swift-build-dev@swift.org" class="gmail_msg" target="_blank">swift-build-dev@swift.org</a>&gt; wrote:</div><br class="m_-2554546004642700846Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class="gmail_msg">On Thu, Mar 9, 2017 at 12:34 AM, Ankit Aggarwal via swift-evolution<span class="m_-2554546004642700846Apple-converted-space gmail_msg"> </span><span dir="ltr" class="gmail_msg">&lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt;</span><span class="m_-2554546004642700846Apple-converted-space gmail_msg"> </span>wrote:<br class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><span class="m_-2554546004642700846gmail- gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"> <br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail- gmail_msg"></span><div class="gmail_msg">+1, although I don’t know why we&#39;re supporting this:</div><div class="gmail_msg"><pre style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal;color:rgb(36,41,46)" class="gmail_msg"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c gmail_msg" style="box-sizing:border-box;color:rgb(150,152,150)"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c gmail_msg" style="box-sizing:border-box">//</span> 1.5.8 ..&lt; 2.0.0</span>
<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c gmail_msg" style="box-sizing:border-box;color:rgb(150,152,150)"></span>.<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c1 gmail_msg" style="box-sizing:border-box;color:rgb(0,134,179)">package</span>(<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c1 gmail_msg" style="box-sizing:border-box;color:rgb(0,134,179)">url</span>: <span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-s gmail_msg" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-pds gmail_msg" style="box-sizing:border-box">&quot;</span>/SwiftyJSON<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-pds gmail_msg" style="box-sizing:border-box">&quot;</span></span>, <span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c1 gmail_msg" style="box-sizing:border-box;color:rgb(0,134,179)">from</span>: <span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-s gmail_msg" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-pds gmail_msg" style="box-sizing:border-box">&quot;</span>1.5.8<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-pds gmail_msg" style="box-sizing:border-box">&quot;</span></span>),</pre><div class="gmail_msg">when, at least as far as I can tell, this:</div><div class="gmail_msg"><pre style="box-sizing:border-box;font-family:sfmono-regular,consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal;color:rgb(36,41,46)" class="gmail_msg"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c gmail_msg" style="box-sizing:border-box;color:rgb(150,152,150)"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c gmail_msg" style="box-sizing:border-box">//</span> 1.5.8 ..&lt; 2.0.0</span>
<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c gmail_msg" style="box-sizing:border-box;color:rgb(150,152,150)"></span>.<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c1 gmail_msg" style="box-sizing:border-box;color:rgb(0,134,179)">package</span>(<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c1 gmail_msg" style="box-sizing:border-box;color:rgb(0,134,179)">url</span>: <span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-s gmail_msg" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-pds gmail_msg" style="box-sizing:border-box">&quot;</span>/SwiftyJSON<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-pds gmail_msg" style="box-sizing:border-box">&quot;</span></span>, .<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-c1 gmail_msg" style="box-sizing:border-box;color:rgb(0,134,179)">uptoNextMajor</span>(<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-s gmail_msg" style="box-sizing:border-box;color:rgb(24,54,145)"><span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-pds gmail_msg" style="box-sizing:border-box">&quot;</span>1.5.8<span class="m_-2554546004642700846gmail-m_-5407048787754644256m_3392127985484131722gmail-m_-6685159868071850230pl-pds gmail_msg" style="box-sizing:border-box">&quot;</span></span>)),</pre><div class="gmail_msg">does the same thing, and the spelling is, at least to me, clearer as well. Dunno, maybe the “from” version is a term of art that I’m just not familiar with.</div></div></div><div class="gmail_msg"><br class="gmail_msg"></div></div></div></blockquote><div class="gmail_msg"><br class="gmail_msg"></div></div></span><div class="gmail_msg">Hi David,</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thank you for the review. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">It is true that `from` and `.uptoNextMajor` are exactly same. We think that the most widely used requirement will be `.uptoNextMajor`, so we wanted to provide a shorthand for it.</div></div></div></blockquote></div><br class="gmail_msg"></div><div class="gmail_extra gmail_msg">Kind of a late reply, but overall I think the proposal looks good with the exception of some of these `Requirement` vs. shorthand dichotomies. It looks like the following will be synonyms:</div><div class="gmail_extra gmail_msg"><br class="gmail_msg"></div><div class="gmail_extra gmail_msg">```</div><div class="gmail_extra gmail_msg"><div class="gmail_extra gmail_msg">.package(url: &quot;/SwiftyJSON&quot;, branch: &quot;develop&quot;)</div><div class="gmail_extra gmail_msg">.package(url: &quot;/SwiftyJSON&quot;, .branch(&quot;develop&quot;))</div><div class="gmail_extra gmail_msg">```</div><div class="gmail_extra gmail_msg"><br class="gmail_msg"></div><div class="gmail_extra gmail_msg">...as well as...</div><div class="gmail_extra gmail_msg"><br class="gmail_msg"></div><div class="gmail_extra gmail_msg">```</div><div class="gmail_extra gmail_msg">.package(url: &quot;/SwiftyJSON&quot;, revision: &quot;e74b07278b926c9ec6f9643455ea00d1ce04a021&quot;)</div><div class="gmail_extra gmail_msg"><div class="gmail_extra gmail_msg">.package(url: &quot;/SwiftyJSON&quot;, .revision(&quot;e74b07278b926c9ec6f9643455ea00d1ce04a021&quot;))</div><div class="gmail_msg">```</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">It seems odd that there are two subtly different but equivalent ways to spell the same thing like that. But I get that there are possibilities for chaining made available with the latter notation and that the former was promised in a fairly new proposal that&#39;s been approved. Where it gets more unsatisfactory, IMO, is that</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">```</div><div class="gmail_msg">.package(url: &quot;/SwiftyJSON&quot;, .only(&quot;1.5.8&quot;))<br class="gmail_msg"></div><div class="gmail_msg">.package(url: &quot;/SwiftyJSON&quot;, .exact(&quot;1.5.8&quot;))<br class="gmail_msg"></div><div class="gmail_msg">```</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">also seem to mean the same thing. Here, this is actively confusing, because every user will inevitably scratch their head trying to parse out the difference. I also share Dave&#39;s concern about</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><div class="gmail_msg">```</div><div class="gmail_msg">.package(url: &quot;/SwiftyJSON&quot;, from: &quot;1.5.8&quot;)</div><div class="gmail_msg">.package(url: &quot;/SwiftyJSON&quot;, .uptoNextMajor(&quot;1.5.8&quot;))</div><div class="gmail_msg">```</div></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">There is no intuition that would tell a user that the two are the same; after all, `uptoNextMinor` also starts &quot;from&quot; its argument. I understand that the latter is wordier, but it is not such a grave burden that the argument label couldn&#39;t be rewritten also as `uptoNextMajor`.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">While we&#39;re on the topic, the standard library spelling is `upTo` rather than `upto`, and while it&#39;s nitpicky I think it&#39;s important to go with the former given that &quot;upto&quot; is not a single word in standard English. If we wanted this to read more grammatically, consider also `.upToNextMajor(from: &quot;1.5.8&quot;)`.</div></div></div></div></div></blockquote><br class="gmail_msg"></div><br class="gmail_msg"></div></div></div>_______________________________________________<br class="gmail_msg">
swift-evolution mailing list<br class="gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
</blockquote></div>