Codifying de-facto standards
brendan at mozilla.com
Sat Nov 13 10:23:25 PST 2010
On Nov 13, 2010, at 10:09 AM, Brendan Eich wrote:
> On Nov 13, 2010, at 8:41 AM, Geoffrey Sneddon wrote:
>> What about things which are needed for web compatibility, interoperability implemented, but disallowed in ES5/Strict (e.g., Function.arguments, Function.caller, octal escapes (which are defined differently to all impls as raised before ES5 was finalized), etc.)?
> Those are more interoperably implemented, although perhaps not perfectly. No ECMA standard bothered to specify them -- a failing on the committee's part, or (some argue) a shunning that these monstrosities deserved, to help drive them away.
> How'd that shunning work out? Not so well.
> Nevertheless, we have no plans to standardize these in a future spec, and Harmony builds on ES5 strict which poisons the properties. This is not just "shun harder", in all cases. We're trying to add new and better forms to get people away from the bad old thing (rest params and default parameter values instead of arguments).
There's no guarantee this will work, of course. No schedule assurances either. The old content using foo.arguments was likely written years ago and it is no longer maintained. There may be no one to maintain it, or no budget to find and pay someone to maintain it.
So we're not sure we can ever get rid of foo.arguments, but old forms do die off. JS has changed incompatibly since 1995, for example. Some presentational aspects (important ones) of table layout have changed. Old plugins do die. To view the web from 1995, you really do need an old browser and possibly a VM emulating or running an old OS. Sad but true, and since true, grounds for hope that better forms (which are justified anyway) will replace the bad old ones.
> We have to draw the line carefully. For example, what about callable regexps? They are something Mozilla added long ago, WebKit JSC (and therefore V8) cloned, but not in IE or (AFAIK) Opera.
Opera 10.61 does make regexps callable, I just tested.
But we do not want to standardize the "non-IE" or (!document.all) subset of web-compatible JS, and we're trying to get rid of callable regexps in a coordinated fashion with other implementors. I'll talk to you and Jens, along with the other browser JS implementors, in a separate email.
More information about the es-discuss