<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hello,<div class=""><br class=""></div><div class="">Many of the listed package managers are for interpreted languages.</div><div class="">So after fetching all dependencies, your package is completely usable. It is „installed locally“.</div><div class="">But Swift packages have to be compiled. You have to build them to be able to use them.</div><div class="">For me, ‚install' comes after compilation, not before.</div><div class=""><br class=""></div><div class="">Using ‚resolve‘ is thus a much better name for the proposed command.</div><div class="">The verb ‚install‘ should only be used when it really installs the package in some way.</div><div class=""><br class=""></div><div class="">— </div><div class="">Martin</div><div class=""> <br class=""><div><blockquote type="cite" class=""><div class="">Am 01.05.2017 um 00:46 schrieb Jon Shier via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>>:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>`install` only sounds like it should install things in the system if that’s the only type of manager you’ve ever used. If I’ve only ever used brew, of course I’ll assume that every other thing that calls itself a package manager will operate similarly. Thankfully, people learn quickly and it’s pretty easy to tell the difference between project package managers and system package mangers. Pretty much anyone developing on Apple platforms will be familiar with brew and CocoaPods / bundler, all of which use the `install` verb, so following those would be an easy way to gain immediate familiarity. SPM really shouldn't be too different given that it will have to interoperate on systems with these tools, so choosing your own verbs would be far more confusing than using `install`. Carthage’s use of `bootstrap` is weird outlier that is always confusing to me. Plus, using `install`, allows you to use `.installed` for the file, which I think makes more sense than `.lock` or `.resolved`.</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>A second issue is that `resolve` doesn’t sound like it installs anything at all. It sounds like a command that would just print the resolved versions of all my dependencies but do nothing else. </div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Jon</div><div class=""><br class=""></div><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Apr 30, 2017, at 12:06 AM, Rick Ballard via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Thanks for the feedback, David, and apologies for the slow reply. My biggest reservation with the word "install" is that it really sounds like it should install things into the system, or another shareable location, instead of fetching dependencies into the dependency location for a single top-level package. We might actually want to add a real "install" command that does some type of installation some day in the future, though we might also choose to forever leave that sort of thing to your system package manager. And while there is some precedence for other package managers using "install" to fetch dependencies, I think there's broader precedence for it meaning to either install things into the system, or at least create an installable "build root", with e.g. `make install`, `xcodebuild install`, `brew install`, etc.</div><div class=""><br class=""></div><div class="">I just did a quick survey of the same package managers I surveyed previously to see if they all used this term, and here's what I found:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal;" class=""><b class="">yarn</b>: `install`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">composer</b>: `install`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">cargo</b>: No true equivalent, just supprts `update` or `build`. Also, uses `install` to mean something different – `cargo install` installs binary packages only, to a installation root.</div><div style="margin: 0px; line-height: normal;" class=""><b class="">bundler:</b> `install`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">cocoapods:</b> `install`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">glide:</b> `install`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">pub:</b> `get`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">mix:</b> `deps.get`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">rebar3:</b> `get-deps`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">carton:</b> `install`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">carthage:</b> `bootstrap`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">pip:</b> Uses `install`, but since pip doesn't enforce the top-level-package seperation of SwiftPM, Pip's use of `install` is actually more accurate.</div><div style="margin: 0px; line-height: normal;" class=""><b class="">npm:</b> `install`</div><div style="margin: 0px; line-height: normal;" class=""><b class="">meteor:</b> no true equivalent, just supports `update` or `build`</div></div><div style="margin: 0px; line-height: normal;" class=""><br class=""></div><div style="margin: 0px; line-height: normal;" class="">Given that this isn't a universal term, I think I'm comfortable going against the flow a little bit if it means that we get to have clear and accurate command-line verbs. But I think this is worth adding to the "Alternatives Considered" section before we put this up for review!</div><div style="margin: 0px; line-height: normal;" class=""><br class=""></div><div style="margin: 0px; line-height: normal;" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>- Rick</div></div></div></blockquote></div></div></div></blockquote></div><br class=""></div></body></html>