<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="">I think names like "Daniel Dunbar's String Extensions" is great when talking in English about a specific extension but I think the actual name should be as simple and elegant as possible without overlapping with built-in keywords.</div><div class=""><br class=""></div><div style="font-size: 12px;" class=""><font face="Menlo" class="">import String // bad, name conflict</font></div><div style="font-size: 12px;" class=""><font face="Menlo" class="">import StringUtilities // good. simple, gets to the point, it will be very rare that you'll want to import several of these, but it may happen</font></div><div style="font-size: 12px;" class=""><font face="Menlo" class="">import org.sadun.StringUtilities // I can live with this but I'd rather import with a custom name established in dependencies</font></div><div style="font-size: 12px;" class=""><font face="Menlo" class="">import org.sadun.StringUtilities as SadunStrings // also okay, again, the custom name will be used and it's unique and short</font></div><div style="font-size: 12px;" class=""><font face="Menlo" class="">import `Daniel Dunbar's String Extensions` // bad, especially when you have to reference it</font></div><font face="Menlo" style="font-size: 12px;" class="">import `Daniel Dunbar's String Extensions` as DunbarStrings// slight improvement but not much, it's ugly, clunky, etc.</font><div class=""><font face="Menlo" class=""><span style="font-size: 12px;" class="">import SadunStringUtilities // This is why we're trying to leave Cocoa behind. If we have to namespace stuff just to avoid conflicts, we've already lost<br class=""></span></font><div class=""><br class=""></div><div class="">-- E</div><div class=""><br class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 26, 2016, at 3:27 PM, Max Howell &lt;<a href="mailto:max.howell@apple.com" class="">max.howell@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><blockquote type="cite" class="">Can you explain a little more about your motivation for this?<br class=""><br class="">I understand that "SwiftString", as a package, may be something which is likely to conflict. It isn't however clear to me that most packages fall into that category, or that it is even desirable to support features that encourage it.<br class=""></blockquote><br class="">I don’t mean to intercept Erica here, but I wanted to chime-in.<br class=""><br class="">For me, my motivation is we don’t have a single index, so it is quite likely that module names will collide at some point.<br class=""><br class="">We need some solution for this. Originally I was thinking, well lets allow overrides for module-names, which is still an option, but it is not as simple as I originally hoped since any packages that depend on that module in a deep tree will require either:<br class=""><br class="">1) Swift-the-language support for the rename.<br class="">2) Or a preprocessor step in the Package Manager that renames module imports in affected packages.<br class=""><br class="">Namespaces are more elegant, especially if by default you don’t have to care. Packages would only have to care if they import two modules with the same name, and this would be discovered by the package author, not by the end-user who just happened to depend on the wrong combination of packages.<br class=""><br class="">Also, personally, I want people to call their packages “StringExtensions”. Currently the iOS development world is filled with silly names for packages, and this partly happens because the good names are already taken. People would instead say “Daniel Dunbar’s String Extensions” and for me, that is what the package should be called.<br class=""><br class=""><blockquote type="cite" class="">For packages like "libjpeg", "LLVM", "OpenGL", "ncurses", "zlib", it seems like having one global namespace is OK, and even useful. As a Python user, for example, I have never been bother that the Python package index is a global namespace.<br class=""></blockquote><br class="">Yes, this is separate (for me). And handled by module map packages.<br class=""><br class=""></div></div></blockquote></div><br class=""></div></div></div></body></html>