Thanks Jesse...

> but still it will be at least a week before we can get a new everything out

And the alternatives will take less than a week? :)

While I agree there may be better ways for Ripple to "do it's thing", my 
immediate concern is to get Ripple working as quickly as possible. If we can 
indeed kill those two birds with one stone, that's great, but I'm worried that 
anything beyond a simple fix will drag out for quite a while.

Also, I was picturing these sorts of changes as being part of proper plugin 
simulation support built into Cordova (that is, the ongoing project I've 
mentioned previously) - I wonder if for now we should just fix this the 
quickest way we can, and make sure the appropriate, public, documented hooks 
are in place as part of that project.

> override the entire cordova object

BTW, I guess you already know this, but to make sure it is clear - Ripple 
doesn't override the cordova object - it only overrides cordova/exec. It 
intercepts the creation of the cordova property so it can immediately patch 
cordova/exec before it can get called by anyone. It seems to me that patching 
cordova/exec is pretty fundamental to how Ripple works, but if there was 
another way it could ensure the correct timing (that is, patch cordova/exec 
after the cordova object is created, but before it can ever get called), that 
would probably suffice.

I don't think cordova/exec/proxy is going to be a viable solution (at least as 
it currently works) - isn't there the risk that that will get overridden by 
plugins themselves? Also, Ripple wants to intercept *any* cordova.exec call, 
even ones it doesn't know about (so it can display UI to handle those cases) - 
how to we handle that using cordova/exec/proxy?

Thanks for looking into this, BTW.

Tim

________________________________________
From: Jesse <purplecabb...@gmail.com>
Sent: Tuesday, May 5, 2015 9:57 AM
To: dev@cordova.apache.org
Subject: Re: Cordova 5.0.0 "duplicate cordova" check breaks Ripple

Yeah, my reasoning is that it is difficult to update all the affected bits
in cordova.  We can change the cordova logic, but still it will be at least
a week before we can get a new everything out.

Part of my reasoning is that ripple claims to be a '... platform agnostic
mobile application development and testing tool.' We should make that part
true as well.

Personally, I consider ripple's use of 'cordova' to be risky given that we
have certain expectations of how our own library works, which may or may
not be private to cordova.  I would much rather see ripple implement a
ripple-cordova connector class which uses cordova/exec/proxy or some
cordova apis that we purposely publish, which is what I plan to look into
this week. Or we can consider moving to a model where we do define a way to
override the entire cordova object, and document it.


@purplecabbage
risingj.com

On Mon, May 4, 2015 at 3:56 PM, Tim Barham <tim.bar...@microsoft.com> wrote:

> Hey Jesse - is your reasoning behind that to avoid having to release an
> update for Cordova tools + all platforms, or because you don't want to
> change the existing Cordova logic (and if the latter, what's your concern)?
>
> Have you had any inspiration about how to fix Ripple to avoid tripping
> this? I've not been able to come up with a safe approach yet. On the other
> hand, the change in Cordova to avoid triggering this is very simple - just
> a pain that it requires releasing a bunch of updates.
>
> Tim
> ________________________________________
> From: Jesse <purplecabb...@gmail.com>
> Sent: Saturday, May 2, 2015 2:28 AM
> To: dev@cordova.apache.org
> Subject: Re: Cordova 5.0.0 "duplicate cordova" check breaks Ripple
>
> I think ripple will need to change, I'll have a look and see if there is a
> more elegant way to implement honeypot.
>
>
>
> > On Apr 30, 2015, at 7:06 PM, Tim Barham <tim.bar...@microsoft.com>
> wrote:
> >
> > Hey everyone - a bug was filed today against Ripple that it is broken
> with
> > Cordova 5.0.0. The issue is that Ripple triggers the new "duplicate
> > cordova" check:
> >
> >     cordova-js/src/cordova.js line 22:
> >     if ("cordova" in window) { throw new Error("cordova already
> defined"); };
> >
> > Ripple patches cordova by defining a setter for window.cordova to
> > intercept it being created. This is sufficient to make ("cordova" in
> > window) return true. I don't see a way to readily resolve this issue in
> > Ripple. We can fix it in Cordova by changing the test to:
> >
> >   if (window.cordova) ...
> >
> > Couple of questions:
> > 1. Any reason not to make this change?
> > 2. To get this fix out will require re-releasing all platforms, correct?
> > And I presume a tools release to update the pinned platforms? Is this
> > sufficient reason to trigger such a release?
> >
> > Thanks!
> >
> > Tim
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
> For additional commands, e-mail: dev-h...@cordova.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
> For additional commands, e-mail: dev-h...@cordova.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
For additional commands, e-mail: dev-h...@cordova.apache.org

Reply via email to