TL;DR: You decided it was easier to ask for forgiveness than permission ;) On 25 Sep 2013 04:49, "Braden Shepherdson" <bra...@chromium.org> wrote:
> I get the impression that "talking about it internally" came out wrong. > Here's what actually happened: > > - I started out to fix some bugs, including killing use of shell.exec > because it leaks filehandles and sometimes causes fatal errors. > - I adopted promises to control the horribly deep callback trees we were > building up. > - That improved the code so much that it spread to the rest of the tools > and became a large refactoring. > - I was worried that I now needed to bring this up with the list and get > buy-in, since it had become bigger than fixing a few bugs. > - On consulting with the others who happened to be in the room at the time, > the feeling was that since the outside API hadn't changed, this was fine. > Bug fixes and code cleanup don't need buy-in from everyone. However, I > should definitely announce the change. > - Here we are. > > I guess I haven't found the balance of what should be done silently, what > announced as it goes out, and what discussed ahead of time. Since the > feeling is that this should have been mentioned in advance, I will adjust > in the future. > > Braden > > On Tue, Sep 24, 2013 at 2:20 PM, Shazron <shaz...@gmail.com> wrote: > > > Definitely. Talking about changes is cool, not talking about it -- not > > cool. > > > > > > On Tue, Sep 24, 2013 at 11:01 AM, purplecabbage <purplecabb...@gmail.com > > >wrote: > > > > > Q is a good choice. Not talking about it was absolutely the wrong > choice. > > > There are no internal teams , there is only this list. > > > > > > Sent from my iPhone > > > > > > > On Sep 24, 2013, at 6:48 AM, Braden Shepherdson <bra...@chromium.org > > > > > wrote: > > > > > > > > We debated internally at Google how much to talk about this. In the > end > > > we > > > > decided that since the external APIs were not changing, this could be > > > > claimed as an internal refactoring. I'm not sure whether that was the > > > right > > > > call. > > > > > > > > About fetch and platforms, to be clear, those are far from the only > > > modules > > > > that have changes, they're just the examples I chose. Using almost > any > > of > > > > the internal modules directly will require refactoring. > > > > > > > > Braden > > > > > > > > > > > >> On Tue, Sep 24, 2013 at 6:56 AM, Anis KADRI <anis.ka...@gmail.com> > > > wrote: > > > >> > > > >> cool. > > > >> > > > >> I don't think we're using fetch/platforms directly. > > > >> > > > >> -a > > > >> > > > >>> On Tue, Sep 24, 2013 at 11:35 AM, Brian LeRoux <b...@brian.io> wrote: > > > >>> Kewl. I'm down and happen to really like Q. Not sure everyone will > > > agree. > > > >>> Maybe next time a heads up to the list so we can discuss arch > changes > > > >> like > > > >>> this. > > > >>> > > > >>> > > > >>> On Mon, Sep 23, 2013 at 8:13 PM, Braden Shepherdson < > > > bra...@chromium.org > > > >>> wrote: > > > >>> > > > >>>> Whoops, I forgot to mention, I created and pushed a cordova-3.1.x > > > >> branch of > > > >>>> both tools before merging this; fixes for the 3.1.0 release should > > be > > > in > > > >>>> there. I don't intend to launch the refactored code to NPM until > > we've > > > >> had > > > >>>> at least a week of trying it out. > > > >>>> > > > >>>> Braden > > > >>>> > > > >>>> > > > >>>> On Mon, Sep 23, 2013 at 2:08 PM, Braden Shepherdson < > > > >> bra...@chromium.org > > > >>>>> wrote: > > > >>>> > > > >>>>> tl;dr: Plugman and CLI now uses Q.js[1] Promises internally > instead > > > of > > > >>>>> callbacks. This has significantly clarified and shortened the > code. > > > >> The > > > >>>>> public API (plugman.fetch, cordova.platform, etc.) HAVE NOT > > changed! > > > >>>>> > > > >>>>> If you use CLI on the command line, nothing has changed. > > > >>>>> > > > >>>>> If you downstream CLI and/or Plugman, but use cordova.foo and > > > >>>> plugman.foo, > > > >>>>> nothing has changed (except possibly that a few calls are a bit > > more > > > >>>> async > > > >>>>> than before, so code that cheats and pretends they're sync might > > fail > > > >>>> now). > > > >>>>> > > > >>>>> If you downstream either one, but require internal modules like > > > >> fetch.js > > > >>>>> or platform.js directly, you should stop doing that and use > > > >> plugman.fetch > > > >>>>> etc. instead. If you want to continue calling them directly, > you'll > > > >> need > > > >>>> to > > > >>>>> port to use promises. > > > >>>>> > > > >>>>> If you've been working on Plugman or CLI and I just broke > > everything, > > > >>>> feel > > > >>>>> free to yell at me on IRC (#cordova, shepheb) or Gtalk (braden at > > > >> google > > > >>>>> dot com) or email. It's not hard to port things to handle > promises > > > >> (see > > > >>>>> below), and their basic use is not hard to understand (see the > > > >>>> tutorial[1]). > > > >>>>> > > > >>>>> If you really do need to port something, and you used to do a > > > function > > > >>>>> call like this: > > > >>>>> > > > >>>>> whateverFunc(args..., function(err){ > > > >>>>> if (err) { > > > >>>>> foo > > > >>>>> } else { > > > >>>>> bar > > > >>>>> } > > > >>>>> }); > > > >>>>> > > > >>>>> the correct call is now: > > > >>>>> > > > >>>>> whateverFunc(args...).done(function() { > > > >>>>> bar > > > >>>>> }, function(err) { > > > >>>>> foo > > > >>>>> }); > > > >>>>> > > > >>>>> > > > >>>>> [1] Q.js tutorial at https://github.com/kriskowal/q > > > >> > > > > > >