<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=""><div class="">Practical answer: module collision is expected to be a very rare event. Even the need to differentiate NSView.print and Swift.print almost never happens.</div><div class=""><br class=""></div><div class="">Philosophical answer: It is not the role of a language or package manager to interfere with a developer's ability to make bad naming choices. </div><div class=""><br class=""></div><div class="">With regard to your example: I think it's unlikely that anyone would use more than one Alamofire implementation, and if they do, they have control over what name that is given, whether it is Alamofire_1, Alamofire_Network, Network, etc. Renaming is not going to be a common or recommended event. </div><div class=""><br class=""></div><div class="">I'd even go as far as to recommend that the SPManager warn when names are given to packages where there is not a collision.</div><div class=""><br class=""></div><div class="">-- E</div><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 2, 2016, at 9:09 AM, Kostiantyn Koval <<a href="mailto:konstantin.koval1@gmail.com" class="">konstantin.koval1@gmail.com</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="">This looks good but I have 1 concern</div>With this functionality the users of a package can change the package name given by author, to own custom.<div class=""><div class=""><br class=""></div><div class="">Example:<br class="">let package = Package(<br class=""> name: “MyApp”</div><div class=""> dependencies: [<br class=""> .Package(url: "<a href="https://github.com/Alamofire/Alamofire" class="">https://github.com/Alamofire/Alamofire</a>", localName: “Network")<br class=""> ]</div><div class="">)</div><div class=""><br class=""></div><div class="">//App.Swift</div><div class="">import Network </div><div class="">…</div><div class=""><br class=""></div><div class="">When reading this code it’s not clear that Network is just name alias for Alamofire without looking at Manifest.swift file.</div><div class=""><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class=""><br class=""></div></blockquote></div><br class=""></div></div></div></div></div></blockquote></div><br class=""></body></html>