On Thu, Nov 6, 2014 at 6:52 PM, Horn, Julian C <julian.c.h...@intel.com>
wrote:

> I'd like to introduce myself and put in my two cents here. My name is
> Julian Horn.  I work for Intel on the XDK, an integrated development
> environment for cross-platform HTML5 applications.  I am the team lead for
> the Device Emulator component, which is our Ripple derivative.  My
> background is mostly in software development tools: compilers, debuggers,
> simulators and analysis tools. I have been working with the Ripple code
> base for a couple of years now.
>
> If I'm understanding the cordova-browser concept, the implementation of a
> Cordova API for the browser platform should consist of code that bridges
> between the platform-independent Cordova API and whatever equivalent is
> available in the current browser session.  For example, the camera API
> getPicture function would invoke the getUserMedia API, which is the closest
> thing we have to a W3C standard way to take a picture.  If the browser
> doesn't implement this API or the host system doesn't have a camera, then
> the getPicture call fails with "camera unavailable".
>
> This seems like a fine way to gradually migrate from packaged apps that
> rely on native code plugins to pure web apps that rely on the browser to
> access mobile device resources.  This should work great when you have a
> browser-portable implementation.  It may be a challenge with some plugins,
> since of course Cordova/PhoneGap was designed to cover gaps in browser
> support.  But at least we don't have to wait for a real W3C standard to be
> agreed.
>
> The goal of our XDK product is to facilitate development of cross-platform
> mobile HTML5 applications.  We see the Device Emulator (our Ripple) as
> enabling developers to test an HTML5 mobile application on the host
> system.  While this is no substitute for testing on real hardware, the
> Device Emulator does offers some advantages that can accelerate the
> development process.  To summarize quickly:
>  * It’s really fast.
>  * You don't need an array of mobile devices.
>  * You can put off dealing with weird target system quirks until after you
> get your basic application logic debugged.
>  * You get full native JavaScript debugging, which is faster, simpler, and
> more available than remote debug.
>  * You can create testing situations that are difficult or impossible to
> create in real life, such as GPS timeout.
>  * It's a great teaching tool.
>  * It allows you to prototype quickly.
>
> Assuming the functionality delivered by Ripple has value (and we find it
> does), one needs a way to reconcile this with the cordova-browser effort.
> Here's how I see that working out.
>
> One idea is to rely on the browser developer tools to supply emulation
> support and just drop Ripple.  I don't like this much.  Today the developer
> tools emulation UI is fairly primitive, but of course, there is nothing
> stopping the browser vendors from building all the functionality in the
> Ripple Geolocation panel (or indeed all of Ripple) into the developer
> tools.  The bigger problem from my point of view is that this is a closed
> system.  There's no way for a non-browser-vendor to extend the browser to
> provide emulation support for new plugin APIs.
>
> The alternative is to do a "cordova prepare browser" and load the results
> into Ripple.


This would be my preference if at all possible.  Specifically, I think
ripple would move much faster and be better architected if it didn't have
to depend on making changes directly to cordova.  Though it should be
acceptable to create a ripple platform (cordova run ripple) if really need
be.


>   Assuming the browser platform code follows the usual pattern, that is,
> that it goes through an exec/execProxy layer, it should be possible for
> Ripple to intercept at that level.  Ripple can delegate to the execProxy
> implementation if it has no emulation-time implementation of its own.  This
> means that unrecognized APIs run unaltered, in which case you get whatever
> behavior you get on the browser platform.  This is a really exciting
> prospect.  It's way better than that "we don't know what to do" dialog that
> Ripple puts up when an exec layer function it doesn't recognize is called.
>

Thats interesting.  I hadn't considered doing it this way, but it actually
sounds like a great solution.


>
> In fact there are some Cordova APIs that Ripple implements by mostly
> delegating to a Chrome-specific API.  For example, the simulation of the
> Cordova File API is based on webkitRequestFileSystem.  (Unfortunately no
> other browser vendors have seen fit to support this API.)  In those cases I
> think the Ripple implementation of the API is likely to coincide nicely
> with the browser platform implementation.
>
> Unlike ripple-as-a-platform, this model doesn't allow plugin authors to
> provide their own emulation-time solutions.  I was always skeptical that
> many plugin authors would really do this (others disagree).  But if they at
> least provide a browser implementation then Ripple has something to fall
> back on.  And if there's something better that can be done, we can always
> extend Ripple.
>

Given that the biggest benefit of Ripple is to provide UI to dig into and
manually adjust the plugin behaviour, I share your sentiment.  I did voice
that I thought plugin authors would provide implementations -- but that is
for what we know are classifying as cordova-browser implementations (even
if just stubs / no-ops).


>
>     Julian
>
> -----Original Message-----
> From: Parashuram Narasimhan (MS OPEN TECH) [mailto:panar...@microsoft.com]
> Sent: Wednesday, November 05, 2014 2:25 PM
> To: dev@cordova.apache.org
> Subject: RE: Summarizing thoughts on cordova-browser vs Ripple
>
> MSOpenTech is currently working on porting our ripple-platform prototype -
> https://github.com/MSOpenTech/cordova-ripple to work on top of
> cordova-browser. The question on how each plugin exposes a UI to provide
> mock data is still up for discussion, but Intel has a lot of context on
> that area.
>
> -----Original Message-----
> From: Kirupa Chinnathambi [mailto:kiru...@microsoft.com]
> Sent: Wednesday, November 5, 2014 11:04 AM
> To: dev@cordova.apache.org
> Subject: RE: Summarizing thoughts on cordova-browser vs Ripple
>
> +1 to what you’ve both stated.
>
> Cordova-browser shouldn't be responsible for providing mock data, UI, or
> any additional functionality for simulating a plug-in. It’s primary goal is
> to (as you both mention) be responsible for getting apps to run in the
> browser. Simulating plug-in behavior would be external to that in some form
> or fashion.
>
> Cheers,
> Kirupa
>
> -----Original Message-----
> From: mikeywbro...@gmail.com [mailto:mikeywbro...@gmail.com] On Behalf Of
> Michael Brooks
> Sent: Wednesday, November 5, 2014 9:22 AM
> To: dev@cordova.apache.org
> Subject: Re: Summarizing thoughts on cordova-browser vs Ripple
>
> >
> > In my view, ripple should be built on top of the browser platform
> > work, and ideally also decouple the UI from the plugin
> > instrumentation, but thats up to the folks running that effort.
>
>
>
>
> > With all this in mind, I think the cordova-browser effort should
> > proceed with current direction, but keep in mind that more advanced
> > plugin instrumentation doesn't belong there.
>
>
> This echo's my views on the Browser Platform and Ripple as well.
>
> Ideally, the Browser Platform is a production deployment environment for
> the web, while Ripple is debugging instrumentation that runs on the Browser
> Platform.
>
> On Wed, Nov 5, 2014 at 8:04 AM, Michal Mocny <mmo...@google.com> wrote:
>
> > We debated a bit about browser vs ripple at phonegap day (especially
> > Intel folks who have done lots of work here), and the my personal
> > tldr; is that there is in fact a home for both.
> >
> > Basically, browser-platform is for getting apps running in a browser
> > (duh) with as much working functionality as possible.  Its supposed to
> > simplify the 'if cordova then dialog else alert' problem, so you can
> > build even more of your app with just local development.  Seemingly
> > this could be used to make targeting both web and app even easier.
> >
> > Ripple is for instrumenting/debugging apps by manipulating plugins.
> > Its about having a UI that reaches into geolocation or camera and
> > controls what the plugin returns to the app.  Its about re-running the
> > same device events over and over for tracking application logic changes.
> >
> > Some of the work ripple has done traditionally can now in fact just be
> > done via browser DevTools, but their are still some cases where custom
> > hooks into plugins are the best way to provide a good local
> > "simulator".  (Chrome DevTools at least now provide mobile emulation,
> unsure about others).
> >
> > In my view, ripple should be built on top of the browser platform
> > work, and ideally also decouple the UI from the plugin
> > instrumentation, but thats up to the folks running that effort.
> >
> > With all this in mind, I think the cordova-browser effort should
> > proceed with current direction, but keep in mind that more advanced
> > plugin instrumentation doesn't belong there.
> >
> > -Michal
> >
>

Reply via email to