Le 17/12/2012 15:56, Anne van Kesteren a écrit :
On Mon, Dec 17, 2012 at 3:39 PM, David Bruant <[email protected]> wrote:
Which part of the platform needs a sync Object.observe?
(Thanks for the reply.)
Thanks for your post.

I think nothing does per se, but it might make
manner more convenient.
I understand. It however doesn't necessarily make it a good candidate for ECMAScript (just as a reminder, I'm just someone sending emails; I don't have any decision power among TC39, so that's just my opinion). I feel that browser APIs need some sort of cross-API tools. Sync Object.observe, MultiMap, Promises, maybe even Streams as examples. I don't know if these cross-API things are necessarily good candidates for ECMAScript, but I agree it's worth discussing.

I don't understand what you mean by "types". And I also don't understand
what you can't implement in pure ES6 in what you've described.
By types I mean e.g. constraining set() to just accept strings.

There's not a problem implementing this in ES6, I'm just wondering
what is considered better here. I'm getting kinda tired of the "IDL is
terrible and outside TC39 people design terrible APIs" sentiment
:-) I guess this deserves a long answer.
I think IDL is a necessary and important tool. At a TestTheWebForward event, I've seen a test suite based on a WebIDL parser and I thought it was one of the most brilliant idea regarding testing the ECMAScript representation of browser APIs. If that was the only reason for WebIDL to exist, that'd be enough to make WebIDL a good idea. Now, one problem that Alex Russel noted elsewhere is that some people who're used to C++ interfaces use WebIDL as a guideline to define new APIs. The bad use of the WebIDL tool is a problem. Not the tool in itself.

I don't necessarily think that TC39 does everything perfectly when it comes to APIs (second argument of Object.create someone?); I have myself provided lots of feedback on APIs for ES6. TC39 has proven to be receptive to feedback, for sure. I have much less experience with other standard bodies, so I couldn't compare.

so I figured I'd just go and ask since this is a new API and can be
amended.
That's an initiative I encourage, because es-discuss (which contains many more people than TC39) is a cross-road of a lot of people using JavaScript, a good share caring a lot about clean, composable APIs.

If looking for advice on API design, I would also recommend asking the Node.js folks. Some read es-discuss. I don't know how to contact them for advice on JS API design, but I find most of their work on JavaScript APIs admirable. (I look forward to some interoperability between Node and web browser APIs, but I'm a dreamer)

I feel there are 2 different goals:
* Being able at all to implement browser APIs in ECMAScript (which is close
to being possible with Proxies. document.all being an exception).
* Being able to conveniently implement browser APIs in ECMAScript (which may
require the addition of a MultiMap) which is up for debate.
I feel there's another one too, "make it JavaScript-y", though this is
never described much in detail, although from what I got so far using
Proxies is not considered good practice. That's why the URLQuery API
has no getter/setter but instead has methods like get() and set().
I agree that proxies don't seem to be a good fit to emulate MultiMaps. Proxies are more like maps [1]. It would be awkward to distinguish append and set with proxies. I think I also agree to reduce the use of proxies magics as much as possible. I was citing proxies, because they're a major tool in closing the gap that separates ECMAScript and the platform APIs magic.

David

[1] https://gist.github.com/3918227
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to