<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>On Feb 20, 2017, at 11:16 PM, Jonathan Hull via swift-evolution <<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>> wrote:<br><br></div><blockquote type="cite"><div><meta http-equiv="Content-Type" content="text/html charset=utf-8">It is how it interacts with our current access control. The scope based nature of this will conflict with the file based nature of the stuff left from Swift 2. I am convinced we need to overhaul it in one sweep to fit one metaphor or the other. The more we mix them, the harder it is to wrap your head around. We can’t keep rehashing it every 6 months, but that is what will happen so long as it stays in this confused state.</div></blockquote><div><br></div>It has been my hope that a lightweight module system will remove the need for `private` *and* `fileprivate`. I doubt a clean "solution" to the access control story can emerge without it. FWIW.<br><div><br></div><blockquote type="cite"><div><div class="">I think I would prefer overall trying swift’s file based system because I think we can completely close that with only 1-2 additional concepts (and it would stay conceptually simple). I would also be fine with switching to a purely type/scope based system with protected, etc…, but I feel like that will need more complexity to get it fully working (e.g. friends), and will end up being a more complex system overall.</div><div class=""><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Jon</div><div class=""><br class=""><div class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 20, 2017, at 11:03 PM, Robert Widmann <<a href="mailto:devteam.codafi@gmail.com" class="">devteam.codafi@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><blockquote type="cite" class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class=""><br class="Apple-interchange-newline">On Feb 21, 2017, at 2:01 AM, Jonathan Hull <<a href="mailto:jhull@gbis.com" class="">jhull@gbis.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Feb 20, 2017, at 10:46 PM, Robert Widmann 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=""><span class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">More generally, we need to move access control away as far away from filesystems as possible. One day, the compiler is going to get ported over to a platform with some bonkers rules that are going to turn around and bite us.</span></div></blockquote></div><br class=""><div class="">This is the key thing which I think is being debated right now. Swift 2 defined the file as a unit of compilation and based its elegant system of access modifiers on that. With Swift 3 we have a mix of type/scope based modifiers and file based modifiers… and it is super confusing to everyone because we have mixed our metaphors.</div><div class=""><br class=""></div><div class="">As much as I want modules, I am now convinced that this proposal will only make that situation worse. We need to pick one way (file based) or the other (scope based) and commit to it… but either way, it will require a larger overhaul to make the system consistent/usable/teachable again.</div><div class=""><br class=""></div><div class="">As an analogy, it is like some people are trying to play rock music during a classical music concert. Both are great independently, and different people may prefer one or the other… but trying to play them on top of one another just results in noise.</div></div></div></blockquote><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Is there anything specifically about this proposal that turns you off, or is it access control as it stands today?</div><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote type="cite" class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Jon</div></div></div></blockquote></div></blockquote></div><br class=""></div></div></div></div></div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></body></html>