<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=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 17, 2015, at 8:48 PM, Rod Brown &lt;<a href="mailto:rodney.brown6@icloud.com" class="">rodney.brown6@icloud.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class=""><div class=""><div class="">I completely agree. We have the final keyword for that, ensuring that if I do not plan for it to be subclassable, it cannot be.</div><div class=""><br class=""></div><div class="">The question here is not “should a framework author be able to block a developer from subclassing?” but “Should I assume it is, or is not, subclassable?"</div><div class=""><br class=""></div><div class="">I err on the side of flexibility. Others err on the side of simplicity and safety.</div></div></div></div></div></blockquote><div><br class=""></div><div>Fair enough. &nbsp;I used to err on the side of flexibility as well. &nbsp;For a while Ruby was my favorite language partly because it is extraordinarily flexible. &nbsp;</div><div><br class=""></div><div>These days really I appreciate having a compiler prove as much as it possibly can about my code. &nbsp;Every time the compiler proves something for me there is one more thing I know with absolute certainty about it (modulo compiler bugs!) and one less thing I need to think carefully about on my own. &nbsp;</div><div><br class=""></div><div>The ability to make assumptions about code because the compiler proved them to be true is extremely liberating! &nbsp;Far more liberating than flexibility that was not designed with intention.</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=""><div class=""><br class=""></div><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 18 Dec 2015, at 1:30 PM, Matthew Johnson &lt;<a href="mailto:matthew@anandabits.com" class="">matthew@anandabits.com</a>&gt; wrote:</div><div class=""><div class=""><br class=""></div><div class="">Legitimacy is in the eye of the beholder. &nbsp;I think it is quite legitimate for a framework author (especially the platform vendor) to decide what you can and cannot do with their framework.&nbsp;</div></div></blockquote></div><div class=""><blockquote type="cite" class=""><div class=""><div class=""><br class=""></div><div class="">When I hear about code in Apple’s frameworks that is responsible detecting and working around inappropriate uses of their frameworks it makes me cringe. &nbsp;Anything that helps to remove the need for this in the long run is a really great thing.&nbsp;</div></div></blockquote></div></div></div></div></blockquote></div><br class=""></body></html>