<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="">On Apr 3, 2017, at 8:11 PM, Nevin Brackett-Rozinsky via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:<div class=""><br class=""><div><blockquote type="cite" class=""><div class=""><span 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; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">My remaining hope is that Swift will acquire a submodule design which renders “fileprivate” essentially redundant. If we get an access level that means “visible in a group of tightly-related files” and it has a concise spelling, then I will use that just about exclusively.</span></div></blockquote></div><br class=""><div class="">You mean a namespace? Ask some greybeard C++ developers how that one worked out.</div><div class=""><br class=""></div><div class="">Honestly, regardless of names, I see the following needs:</div><div class=""><br class=""></div><div class="">1. Keep your mitts off this code, this is for me alone. You will break things if you change this.</div><div class="">2. This one is for me and my relatives who know what we're doing with it.</div><div class="">3. This is for my group as we work together on this problem.</div><div class="">4. This is for anyone that wants us to solve this problem for them.</div><div class="">5. This is for anyone that wants to try to solve this problem some other way.</div><div class=""><br class=""></div><div class="">(private, protected, internal, public, open — perhaps?)</div><div class=""><br class=""></div><div class="">What we call them matters little, as long as none of those names are fileprivate. 🙂 File-based access control is so very ‘70s (and this is coming from someone who has used C for a Very Long Time and loves it more than Swift, honestly). For *this* language, it’s the wrong tool. We have those new-fangled hierarchical types and extensions all in those fancy little modules, so let’s use them as the people expect them to be used.</div><div class=""><br class=""></div><div class="">When submodules are A Thing, revisit them in terms of the “definitions" above and see where things fit. If we — heaven forbid — think we need an additional “export” keyword then we’ll have that firefight then.</div><div class=""><br class=""></div><div class="">— Adam</div><div class=""><br class=""></div></div></body></html>