<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><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>• What is your evaluation of the proposal?<br class=""></div></div></div></blockquote><div><br class=""></div><div>-1. &nbsp;I would prefer to focus on protocol-oriented solutions which I believe are generally more robust. &nbsp;I passionately dislike a requirement to subclass by libraries and frameworks and would prefer to guide the Swift community away from that approach. &nbsp;Introducing abstract classes would do the opposite.</div><div><br class=""></div><div>I would prefer to see the the generics and protocol-related features fully fleshed out in Swift 3 and Swift 4 and allow the community to identify approaches to design that do not rely on inheritance. &nbsp;</div><div><br class=""></div><div>If there remain use cases addressed by abstract classes for which we do not have an acceptable protocol-oriented alternative we could consider the feature again at that time with better knowledge of what use cases are uniquely addressed by the more brittle and inflexible inheritance-based approach.</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>• Is the problem being addressed significant enough to warrant a change to Swift?<br class=""></div></div></div></blockquote><div><br class=""></div><div>Maybe, but I am not convinced yet. &nbsp;We should allow the language to evolve a bit more before making a final judgment about this.</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>• Does this proposal fit well with the feel and direction of Swift?<br class=""></div></div></div></blockquote><div><br class=""></div><div>No. &nbsp;It is a classic OO inheritance feature and Swift leans heavily in the direction of protocols.</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>• If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to&nbsp;those?<br class=""></div></div></div></blockquote><div><br class=""></div><div>It is about the same, including the all downsides of library designs that require subclassing by consumers. &nbsp;</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>• How much effort did you put into your review? A glance, a quick reading, or an in-depth study?<br class=""></div></div></div></blockquote><div><br class=""></div><div>A brief glance. &nbsp;However, my review is informed by lots of experience with both implementing and using libraries and frameworks that require subclassing (including use of abstract classes). &nbsp;This experience has taught me that it is generally best to look for other solutions.</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div>More information about the Swift evolution process is available at:<br class=""><br class=""><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><a href="https://github.com/apple/swift-evolution/blob/master/process.md" class="">https://github.com/apple/swift-evolution/blob/master/process.md</a></blockquote><br class="">Thank you,<br class=""><br class="">-Joe<br class="">Review Manager</div>_______________________________________________<br class="">swift-evolution-announce mailing list<br class=""><a href="mailto:swift-evolution-announce@swift.org" class="">swift-evolution-announce@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution-announce<br class=""></div></blockquote></div><br class=""></body></html>