<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="">Yep good point Ross. Should have double checked that.(I think it is because kids in school kept saying intermural instead of intramural You would think the latin I took would have broken me of that. :-).&nbsp;<div class=""><br class=""></div><div class="">I think all of the proposals below are clear and I like any of them except 3, too long. The parenthesized ones are if we want consistency between the middle two scopes. &nbsp;</div><div class=""><br class=""></div><div class="">So, proposal one (and 1b), more technical sounding<br class=""><div class=""><br class=""></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div class="">public</div></div><div class=""><div class="">internal (or intramodule)</div></div><div class=""><div class="">intrafile</div></div><div class=""><div class="">private</div></div></blockquote><div class=""><div class=""><br class=""></div><div class="">Proposal two infile (and 2b). Shortest, eye pleasing, non technical sounding&nbsp;</div><div class=""><br class=""></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div class="">public</div></div><div class=""><div class="">internal (or inmodule)&nbsp;</div></div><div class=""><div class="">infile</div></div><div class=""><div class="">private</div></div></blockquote><div class=""><div class=""><br class=""></div><div class="">Proposal three: (and 3b) longest names, multiword. reusing private, unpleasing compound words..&nbsp;</div><div class=""><br class=""></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div class="">public&nbsp;</div></div><div class=""><div class="">internal (or moduleprivate)</div></div><div class=""><div class="">fileprivate</div></div><div class=""><div class="">private</div></div></blockquote><div class=""><div class=""><br class=""></div><div class="">proposal four: (and 4b):kind of needs the 4b form, to show pattern (I think)</div><div class=""><br class=""></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div class="">private</div></div><div class=""><div class="">internal (modulewide)</div></div><div class=""><div class="">filewide</div></div><div class=""><div class="">private</div></div></blockquote><div class=""><div class=""><br class=""></div><div class="">proposal five (and 5b) short eye pleasing.&nbsp;</div><div class=""><br class=""></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class="">private<br class="">internal (moduleonly)<br class="">fileonly<div class=""><div class="">private</div></div></blockquote><div class=""><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">On Mar 31, 2016, at 2:10 AM, Ross O'Brien &lt;<a href="mailto:narrativium+swift@gmail.com" class="">narrativium+swift@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><span style="font-size:13px" class="">&gt; public</span><br style="font-size:13px" class=""><span style="font-size:13px" class="">&gt; internal</span><br style="font-size:13px" class=""><span style="font-size:13px" class="">&gt; interfile</span><br style="font-size:13px" class=""><span style="font-size:13px" class="">&gt; private</span><br style="font-size:13px" class=""></div><div class=""><br class=""></div>Linguistically, I really like this direction. 'interfile' is one word, it reads as an adjective, it can be used in conversation (this has interfile visibility), and it's clear about where its visibility ends.<div class=""><br class=""></div><div class="">It just doesn't mean what you think it means.</div><div class=""><br class=""></div><div class="">'inter' means 'between'. See: 'intergalactic', 'interstellar', 'international', 'internet'. So 'interfile' would have to mean 'visible between files' - i.e. an interfile symbol in one file is visible in another file. The prefix you're looking for, meaning 'internal', is 'intra' (see: 'intravenous', 'intranet').</div><div class=""><br class=""></div><div class="">So the scale would become:</div><div class=""><br class=""></div><div class="">public / intermodule</div><div class="">internal / intramodule / interfile</div><div class="">intrafile</div><div class="">private</div><div class=""><div class=""><br class=""></div></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Thu, Mar 31, 2016 at 6:04 AM, Paul Ossenbruggen via swift-evolution <span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">public<br class="">
internal<br class="">
interfile<br class="">
private<br class="">
<br class="">
still googleable and very clear its scope and meaning, nice latin root. Doesn’t overload “private”, slightly shorter.<br class="">
<div class="HOEnZb"><div class="h5"><br class="">
<br class="">
&gt; On Mar 30, 2016, at 9:46 PM, Thorsten Seitz via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class="">
&gt;<br class="">
&gt; Looks good to me.<br class="">
&gt;<br class="">
&gt; -Thorsten<br class="">
&gt;<br class="">
&gt;&gt; Am 31.03.2016 um 06:22 schrieb Chris Lattner via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt;:<br class="">
&gt;&gt;<br class="">
&gt;&gt;&gt; On Mar 23, 2016, at 10:13 PM, Chris Lattner &lt;<a href="mailto:clattner@apple.com" class="">clattner@apple.com</a>&gt; wrote:<br class="">
&gt;&gt;&gt; How about we continue this trend, and follow other existing Swift keywords that merge two lowercase words (associatedtype, typealias, etc), and use:<br class="">
&gt;&gt;&gt;<br class="">
&gt;&gt;&gt;&nbsp; &nbsp;public<br class="">
&gt;&gt;&gt;&nbsp; &nbsp;moduleprivate<br class="">
&gt;&gt;&gt;&nbsp; &nbsp;fileprivate<br class="">
&gt;&gt;&gt;&nbsp; &nbsp;private<br class="">
&gt;&gt;&gt;<br class="">
&gt;&gt;&gt; The advantages, as I see them are:<br class="">
&gt;&gt;&gt; 1) We keep public and private meaning the “right” and “obvious” things.<br class="">
&gt;&gt;&gt; 2) The declmodifiers “read” correctly.<br class="">
&gt;&gt;&gt; 3) The unusual ones (moduleprivate and fileprivate) don’t use the awkward parenthesized keyword approach.<br class="">
&gt;&gt;&gt; 4) The unusual ones would be “googable”.<br class="">
&gt;&gt;&gt; 5) Support for named submodules could be “dropped in” by putting the submodule name/path in parens: private(foo.bar.baz) or moduleprivate(foo.bar).&nbsp; Putting an identifier in the parens is much more natural than putting keywords in parens.<br class="">
&gt;&gt;<br class="">
&gt;&gt; I’ve seen a number of concerns on this list about moduleprivate, and how it penalizes folks who want to explicitly write their access control.&nbsp; I’ve come to think that there is yes-another possible path forward here (which I haven’t seen mentioned so far):<br class="">
&gt;&gt;<br class="">
&gt;&gt; public<br class="">
&gt;&gt; internal<br class="">
&gt;&gt; fileprivate<br class="">
&gt;&gt; private<br class="">
&gt;&gt;<br class="">
&gt;&gt; The advantages, as I see them are:<br class="">
&gt;&gt; 1) We keep public and private meaning the “right” and “obvious” things.<br class="">
&gt;&gt; 2) The declmodifiers “read” correctly.<br class="">
&gt;&gt; 3) Compared to Swift 2, there is almost no change.&nbsp; The only thing that changes is that some uses of Swift 2 “private” will be migrated to “fileprivate”, which makes the intent of the code much more clear.<br class="">
&gt;&gt; 4) fileprivate is the unusual and not-really-precedented-in-other-languages modifier, and it would still be “googable”.<br class="">
&gt;&gt; 5) The addresses the “excessively long” declmodifier problem that several people are concerned with.<br class="">
&gt;&gt; 6) Support for named submodules could be “dropped in” by parameterizing “internal”.<br class="">
&gt;&gt;<br class="">
&gt;&gt; Thoughts?<br class="">
&gt;&gt;<br class="">
&gt;&gt; -Chris<br class="">
&gt;&gt; _______________________________________________<br class="">
&gt;&gt; swift-evolution mailing list<br class="">
&gt;&gt; <a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
&gt; _______________________________________________<br class="">
&gt; swift-evolution mailing list<br class="">
&gt; <a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
<br class="">
_______________________________________________<br class="">
swift-evolution mailing list<br class="">
<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
</div></div></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></div></body></html>