- From: cowwoc <cowwoc@bbs.darktech.org>
- Date: Tue, 09 Sep 2014 20:29:42 -0400
- To: public-media-capture@w3.org
- Message-ID: <540F9B76.1070303@bbs.darktech.org>
Eric's point is valid but I'm still +1 for adding Promises. I believe the cost/benefit is great for making this change before 1.0 (the risk is low and we avoid having to support the old syntax). Gili On 09/09/2014 7:10 PM, Eric Rescorla wrote: > I'm not in favor of this change. As we discussed in DC, the idea is to > get > finished with 1.0 and this doesn't seem like a change that contributes to > that. > > -Ekr > > > On Tue, Sep 9, 2014 at 11:02 AM, Jan-Ivar Bruaroey <jib@mozilla.com > <mailto:jib@mozilla.com>> wrote: > > On 9/4/14 10:22 PM, Robert O'Callahan wrote: >> On Fri, Sep 5, 2014 at 1:36 PM, Jan-Ivar Bruaroey >> <jib@mozilla.com <mailto:jib@mozilla.com>>wrote: >> >> Why don't we just get rid of the non-Promises API? I think >> at this point it's totally OK for specs to depend on Promises. >> >> +1. Were you thinking of just ImageCapture or gUM too? >> >> >> Both I guess. > > I agree. I think it's prudent to revisit this now before we remove > prefixes. Promises weren't ready a year ago, but that's changed > [3] and they're an embarrassingly obvious fit for gUM, > ImageCapture and peerConnection. Also, if we don't nip consistency > arguments in the bud, it sounds like we'll miss out on promises on > methods yet to be added as well (replaceTrack). > > I see a couple of ways to do this, but the approach I would pick > as far as the spec goes is to flip the specs to promises > cold-turkey, and let UAs implement "transition APIs" for the next > year that essentially both return promises AND optionally let you > pass in callbacks at the same time, for backwards compatibility. > > The cold-turkey webidl pattern for the spec: > -------------------------------------------- > > Before: > callback FooSuccessCallback = void (Bar bar); > void foo (FooSuccessCallback successCallback, > CommonErrorCallback errorCallback); > > After: > Promise<Bar> foo (); > > > The "transition API" for UAs for the next year: [4] > ----------------------------------------------- > > After: > callback FooSuccessCallback = void (Bar bar); > Promise<Bar> foo (FooSuccessCallback successCallback, > CommonErrorCallback errorCallback); > > Implementation is easy: we stuff any passed-in callbacksinto the > .then() of the promise before returning it. > > There's help available for spec writers on this here [1][2]. > > .: Jan-Ivar :. > > [1] https://github.com/w3ctag/promises-guide/blob/master/README.md > [2] https://github.com/w3ctag/promises-guide/issues/24Rob > > [3] On negatives: The few open issues still being discussed in the > promises spec AFAICT seems to deal with updating webidl to > streamline errors when callbacks are used so users wont have to > contend with both thrown and returned errors, and maybe error > types? which matches our remaining weak areas of figuring out > error types and handling - so we wouldn't pick up any baggage - > and it may actually help if we could offload these details on to > the promises and webidl specs and the nice folks there. > > [4] createOffer is a bit of a challenge with its options argument > coming after the callbacks. I'm looking into that. > >
Received on Wednesday, 10 September 2014 00:32:09 UTC