incubator-callback-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Patrick Mueller <pmue...@gmail.com>
Subject Re: Pluginization FTW
Date Thu, 19 Apr 2012 13:41:11 GMT
This is just a meta-comment, since I really don't know anything about BB/WW

I think there's all kinds of headroom available, with the way we have
things structured right now, to mix-and-match our atomic bits - the cordova
modules - into various shapes.

* I've been lightly experimenting and pushing other AMD runtimes to  help
out with a story where we take our modules, but use their module runtime.
 Not quite there yet.  Seems totally do-able to me though.

* You should be able to use our modules with Browserify, if you want.
 Haven't tried.  Bonuses with Browserify is you get some amount of node.js
support (some built-in node modules are supported), as well as
__filename/__dirname support in your module at runtime (those aren't
available using our runtime (yet) nor AMD runtimes).

* You should be able to use our modules with node.js directly, though they
likely "won't work" because of the native ties via exec etal.  But a
"platform" like errgen >should< work.  We don't currently "package" a
node.js-able errgen platform, but I believe we could.

* packaging platform APIs as Cordova modules.  So, this is a new one to me,
but is the sense of what I'm hearing on this thread, that somehow WebWorks
APIs can be surfaced as Cordova modules.  I don't see a problem with this,
but honestly don't really see the immediate value either.  Kinda of a
question of "who owns the platform".  I can easily see folks like AppLaud
or WorkLight extending the "Cordova platform" story with their own plugins,
though.  For an actual platform provider though, one of the options is to
surface Cordova bits AS your platform bits, rather than vice versa.

* even in the previous note, about folks using Cordova as an extendable
platform, folks should have the ability to swizzle the module runtime
environment the way they want.

There's More Than One Way To Do It.  :-)

At some point, it will become obvious to us - Cordova devs - as well as
folks who reship Cordova, how they want to use it, how they want to
mix-and-match bits, what options they want to provide to their users.  We
don't have to >ship< all the various options, but I'd love to keep it
open-ended so that folks can build their flavorite story with our bits.  We
may, however, want to add some tests to make sure that, eg, the AMD almond
loader can be used in lieu of our module runtime, which should be (some
day) dirt easy and quick to build and test (prolly with the errgen or test
platform).

I've done a bit of playing myself in the "what kind of things can we build
with the atomic units" wrt: the "errgen" platform and the "-debug" versions
of the cordova.js files, and even little toolies like the hack-o-rama that
is the module dependencies chart generator via graphviz.

So, love to see experiments and discussion about this stuff.  Bring It On.
 If it's not intrusive to our current thread of work, adding more "stuff"
to the cordova-js project is great, as it makes it more visible to
everyone.

On Thu, Apr 19, 2012 at 09:07, Ken Wallis <kwallis@rim.com> wrote:

> Reading through Drew's initial email a bit more, it seems like it might be
> beneficial to have another BlackBerry/Cordova synch-up meeting.  With
> WebWorks for BlackBerry 10, we are taking a more Cordova like approach with
> a WebWorks.js file that you must include, that handles API loading and
> whitelisting, etc.
>
> With Cordova's plug-in approach evolving, we were hoping to migrate
> WebWorks apis into Cordova extensions sometime in the future.  With Drew's
> work, it appears almost like we have some of that, but the flavourful is
> almost the reverse like massaging Cordova into WebWorks under the covers.
>  Would be good to review this and gets clear understanding of the best way
> to move forward?
>
> Sent from my BlackBerry® PlayBook™
> www.blackberry.com
>
> ________________________________
> From: "Ken Wallis" <kwallis@rim.com>
> To: "callback-dev@incubator.apache.org" <callback-dev@incubator.apache.org>,
> "callback-dev@incubator.apache.org" <callback-dev@incubator.apache.org>
> Sent: April 19, 2012 9:00 AM
> Subject: Re: Pluginization FTW
>
>
> Yup, I was always thinking of each WebWorks feature being its own
> extension to Cordova.
>
> Sent from my BlackBerry® PlayBook™
> www.blackberry.com
>
> ________________________________
> From: "Drew Walters"
> To: "callback-dev@incubator.apache.org"
> Sent: April 19, 2012 8:35 AM
> Subject: Re: Pluginization FTW
>
>
> I'd be curious to hear the advantages of moving to a single extension.
>  From my experience with having a single extension for Cordova
> BlackBerry here are some of the disadvantages I've come across:
>
> 1. Every application must include the entire set of API whether the
> application needs it or not.
> 2. Every application must include all the permissions required by the
> API whether they are using them or not.
> 3. In order for a third party to "extend" the extension they have to
> copy their source code directly into your extension.  This presents a
> maintenance nightmare when trying to deal with version updates.
>
> One thing I should probably make clear about how I refactored the
> code.  Although there are now extensions for each API feature set, the
> Cordova PluginManager is still the central invocation point and
> manager of plugin lifecycle.  This seems similar to how WebWorks is
> moving to a single XHR invocation point while still maintaining
> separate extensions.
>
> On Wed, Apr 18, 2012 at 7:22 PM, Laurent Hasson  wrote:
> > Converging WW and Cordova is a stated goal on our end :) How we get
> there is the fun question. The work Gord has been doing is actually in line
> with our internal direction, and I look to Gord to provide the rails to a
> converged path :)
> >
> >
> > ___________________________________________
> > LDH (Laurent Hasson)
> > Technical Director, BlackBerry Web Platform
> > Research In Motion
> > Email: lhasson@rim.com
> > Mobile: 646-460-7066
> > -----------------------------------------------------------------
> > "That's who you remind me of: an evil Mr. Rogers!" - Simon Phoenix
> > -----------------------------------------------------------------
> > Sent from my BlackBerry Torch!
> >
> > ----- Original Message -----
> > From: Filip Maj [mailto:fil@adobe.com]
> > Sent: Wednesday, April 18, 2012 04:36 PM
> > To: callback-dev@incubator.apache.org
> > Subject: Re: Pluginization FTW
> >
> > Just a quick note, the RIM guys have talked in passing (nothing official
> -
> > just what I have heard on the interwebz) about actually converting BB
> > WebWorks to more of a (current) cordova implementation, re: single
> > extension for everything. So in terms of being "more compliant" to what
> > WebWorks recommends, what we're doing currently, as far as I understand,
> > may actually be better. Heh.
> >
> > Perhaps Gord/Dan/Ken/Laurent can comment on that in more detail and more
> > authority than I can.
> >
> > On 4/18/12 1:58 PM, "Drew Walters"  wrote:
> >
> >>I've been experimenting with what it would look like for Cordova
> >>BlackBerry to be modified such that all the API are separated out into
> >>plugins. For those that want to cut to the chase, here's my repo:
> >>
> >>https://github.com/deedubbu/cordova-blackberry-pluggable
> >>
> >>This repo is a representation of what the binary download would be for
> >>the end user and is not a fork of either cordova-js or
> >>cordova-blackberry-webworks.  Without being able to see the change
> >>history it might be difficult to tell what I've done so I'll provide
> >>some high level details here:
> >>
> >>1. Separated the native code and associated JavaScript into
> >>independent WebWorks extensions.  Previously there was only a single
> >>extension.  This allows us to make use of the BlackBerry WebWorks
> >>framework build/config tools which handle packaging up only the
> >>necessary code when building an app.
> >>2. All Cordova JavaScript is injected from the native side. No need to
> >>include cordova.js in your application, all the Cordova JavaScript is
> >>loaded before the applications pages load.
> >>3. WebWorks Extension API is hidden behind the existing Cordova Plugin
> >>interface.  Plugin developer doesn't really need to know that they are
> >>developing a WebWorks extension.  The only new interface requirement
> >>for a plugin is to invoke a new constructor.
> >>4. JavaScript API are defined as modules (no change) and can
> >>additionally call cordova.addPlugin(...) or cordova.mergePlugin(...)
> >>to override/merge global namespace.
> >>5. Installation of Cordova is a simple matter of copying a folder to
> >>the WebWorks SDK ext folder.
> >>6. Installation of a Cordova plugin is a simple matter of copying a
> >>folder to the WebWorks SDK ext folder.
> >>7. Enabling a Cordova plugin requires specifying the feature id in
> >>projects config.xml. plugins.xml is not used.
> >>
> >>Ok, that's a quick brain dump. The README contains a few more details.
> >>I plan on eventually pushing branches to my forks for cordova-js and
> >>cordova-blackberry-webworks which will show the actual code changes.
> >
> >
> > ---------------------------------------------------------------------
> > This transmission (including any attachments) may contain confidential
> information, privileged material (including material protected by the
> solicitor-client or other applicable privileges), or constitute non-public
> information. Any use of this information by anyone other than the intended
> recipient is prohibited. If you have received this transmission in error,
> please immediately reply to the sender and delete this information from
> your system. Use, dissemination, distribution, or reproduction of this
> transmission by unintended recipients is not authorized and may be unlawful.
>
>
> ---------------------------------------------------------------------
> This transmission (including any attachments) may contain confidential
> information, privileged material (including material protected by the
> solicitor-client or other applicable privileges), or constitute non-public
> information. Any use of this information by anyone other than the intended
> recipient is prohibited. If you have received this transmission in error,
> please immediately reply to the sender and delete this information from
> your system. Use, dissemination, distribution, or reproduction of this
> transmission by unintended recipients is not authorized and may be unlawful.
>
>
> ---------------------------------------------------------------------
> This transmission (including any attachments) may contain confidential
> information, privileged material (including material protected by the
> solicitor-client or other applicable privileges), or constitute non-public
> information. Any use of this information by anyone other than the intended
> recipient is prohibited. If you have received this transmission in error,
> please immediately reply to the sender and delete this information from
> your system. Use, dissemination, distribution, or reproduction of this
> transmission by unintended recipients is not authorized and may be unlawful.
>



-- 
Patrick Mueller
http://muellerware.org

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message