- From: cowwoc <cowwoc@bbs.darktech.org>
- Date: Fri, 07 Jun 2013 09:42:51 -0400
- To: public-webrtc@w3.org
- Message-ID: <51B1E35B.5070100@bbs.darktech.org>
That's surprising. What about https://github.com/slightlyoff/Promises? I wonder if this was an implementation-specific problem or something that is inherit to Futures? I'd be surprised if it's the latter. Gili On 05/06/2013 10:52 AM, David Beckwith wrote: > By the way, just for reference, a nice implementation of futures in > Javascript can be found here: > > https://github.com/kriskowal/q > > However, one caveat that I found is that using this library slowed > down my Node.js server from about 4000 requests per second to about > 150 requests per second. > > Not sure if supporting futures in C++ would necessarily incur such a > performance hit, but maybe it's something to consider. > > I love the readability, error bubbling, consolidation of error > handling, and flow of control advantages the promises pattern gives, > but the performance hit was substantial in my Node.js experience. > > > On Wed, Jun 5, 2013 at 6:03 AM, Jan-Ivar Bruaroey <jib@mozilla.com > <mailto:jib@mozilla.com>> wrote: > > I would ask it differently: Would our API gain from using a > pattern like this? Take EventTarget, another pattern. Clearly our > API is better from using EventTarget. > > Personally, I find the benefits quite persuasive: simpler > parameter list, use of primary-return, error bubbling, suite of > relevant utility methods, and last but not least, this pattern for > dealing with async behaviors seems to fit our bill. Documentation > benefit: return a Future, link to other standards doc, nothing to > explain. > > Great stuff. > > Is this the right pattern? DOM Futures is not EventTarget yet. At > least three attempts preceded it. It is early so there is risk. > > Should we break our already-shipped API to embrace this pattern > now? Clearly we'd like to avoid that, and if our API can easily be > wrapped, a good question is: Why? Selfishly we're no worse (and > not better) off than other APIs that, frankly, Futures has to > catch up to. > > So yes, I would say there is gain, but it should be weighed > against risk and loss of compatibility. I don't see a conflict in > holding those opinions. > > At the very least, I hope tomorrow we can remove any obstacles (if > there are any) to wrapping Futures around our API. > > .: Jan-Ivar :. > > > On 6/4/13 2:39 PM, cowwoc wrote: >> On 04/06/2013 2:12 PM, Adam Roach wrote: >>> On 6/4/13 10:59, cowwoc wrote: >>>> On 04/06/2013 11:57 AM, Eric Rescorla wrote: >>>>> On Tue, Jun 4, 2013 at 8:39 AM, cowwoc >>>>> <cowwoc@bbs.darktech.org <mailto:cowwoc@bbs.darktech.org>> wrote: >>>>> >>>>> As an end-user, using DOM Futures was as simple as >>>>> including the Polyfill JS. Thing is, if WebRTC is built >>>>> into the browser, I'm guessing users would expect all >>>>> dependencies (i.e. DOM Futures) to be built-in too. >>>>> >>>>> Seeing as the polyfill JS is rather small. What >>>>> prevents you vendors from folding this into the browser at >>>>> the same time as WebRTC >>>>> >>>>> >>>>> Conversely, what prevents anyone who wishes to use a futures >>>>> interface >>>>> from loading their own WebRTC Futures wrapper? >>>>> >>>>> -Ekr >>>> >>>> Nothing, I guess, but it would be nice if this wrapper were >>>> officially sanctioned and maintained by the standard. You could >>>> start out this way and drop the legacy API (with callbacks) >>>> once you have a better understanding of when vendors will >>>> implement DOM Futures. >>> >>> Here's what I don't quite get here. The design of futures >>> contains an explicit goal of being able to be retrofitted onto >>> existing callback-based interfaces. In my book, this makes it an >>> interesting design pattern, and nothing more. I don't see why >>> one would expect vendor support for Futures any more than they >>> would expect support for Facades, Flyweights, Proxies, Chains of >>> Responsibility, Mementos, Visitors, or any number of other >>> useful patterns. >>> >>> If you find futures easy to work with, go to town -- wrap >>> RTCPeerConnection in Futures and use them all over your app. >>> It's a trivial exercise. But I'm somewhat boggled why we think >>> this rises to the level of standardization. >>> >>> /a >> >> Futures are better suited to returning either success or >> failure exactly once (something we do frequently in WebRTC) and >> callbacks are better suited for repeated invocations (e.g. event >> listeners). I am proposing we use both, but limit ourselves to >> callbacks only for repeated events like onIceCandidate. >> >> While it is true that every user could decide to wrap WebRTC >> in Futures it would be a huge waste of time for everyone to >> reinvent the wheel. We should get a clean API by default. >> >> Futures is different from typical design patterns in that >> normally design patterns are an implicit part of the API. There >> is no Facade, Flyweight or Chains of Responsibility "classes" or >> libraries, but there is such a thing for Futures. >> >> Gili > > > -- > .: Jan-Ivar :. > >
Received on Friday, 7 June 2013 13:44:20 UTC