<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 - Symbols, even when not used for encapsulated abstractions, are<br>
great for avoiding the possibility of collision in the global string<br>
namespace<br>
 - So, we (tc39) decided to use them for to replace the property name<br>
currently called "iterator" in Spidermonkey.<br>
 - Currently, "iterator" works across same-origin frames, but a naive<br>
use of Symbol for this wouldn't work<br>
 - Therefore, we have a few options:<br>
   1 Give up on Symbols for "iterator"<br>
   2 Make the Symbol replacement for "iterator" magically work across<br>
all same-origin frames<br>
   3 Make iteration not work across frames<br>
   4 Break the web and fix cross-frames to work more sensibly<br>
 - Since the latter two of those are not actual options, (2) seemed<br>
like the best choice.<br>
 - But then we, the language, are doing something that programmers<br>
can't do, so we searched for something else<br>
 - This led to `Symbol.for`, which is not actually allowing<br>
programmers to do (2), but resembles it somewhat<br></blockquote><div><br></div><div>Good breakdown, but note that the problem isn't strictly confined to cross-frame situations.  See last paragraph of the original post about protocol versioning.</div>
<div><br></div><div>Kevin</div></div>