On Wed, Feb 25, 2015 at 3:08 PM, Steven Gill <stevengil...@gmail.com> wrote:
> All versions of released core plugins have been published to npm. > https://issues.apache.org/jira/browse/CB-8529 > All our core plugins now have a package.json file. > https://issues.apache.org/jira/browse/CB-8538 > > A few of us from Adobe met with NPM yesterday. Summary: > > - Migration > - Use 'ecosystem:cordova' as a keyword in plugins for discoverability > (instead of 'cordovaplugin'). I updated createpackagejson already with this. > - npm has final say on naming disputes. We can go to them with issues. > > - Discoverability > - npm Ecosystems will be up sometime this year > - stopgap: they can give us list of plugins based on ecosystem:cordova > keyword that we could use as data in our existing plugins site > - you can already find all of our plugins on npm via searching > ecosystem:cordova (https://www.npmjs.com/search?q=ecosystem%3Acordova) > > - Documentation > - They don't have a way to handle uploading anything other than readme > to npm > - we could build our own packager that could publish doc/en/index.md, > but not worth it > - Potential Solution: Copy doc/en/index.md into readme, also add > links to other language documentation in readme that points to github > markdown files > - Internationalization is something they want to solve, just no cycles > for it in the immediate future > > - Dependency, Multiple versions of same plugin issue > - This one was tricky. They don't have a good solution really > - Seems like best case is to use peer dependencies in package.json > files of plugins. Users will get a warning about missing dependency and > will have to explicitly install the missing dependency. Make it a userland > problem. > - Ex: user installs cordova-plugin-file-transfer, they will see a > warning about having to install cordova-plugin-file (maybe a specific > version) > - This would insure plugins are flat and should prevent multiple > versions of the same plugin to be installed. > > - Plugin Post Install Hooks > - It was brought up that having a generic post install hook that could > move native files into cordova projects might be a good solution. I know we > discussed it briefly and decided it would be to hard to get right. After > more thought and discussion, I think we should revisit this as a potential > solution. We wouldn't be dependent on cordova-lib/plugman to install > plugins anymore. As long as plugins still have plugin.xml (which they will > for a little while), we could still support the cordova-lib/plugman > workflow too. Lets discuss this more in its own thread. > Yes, lets start a new thread. Have many questions ;) > > Plugin TODO: > - Rename id to package-name in package.json files and plugin.xml > +1 > - move english documentation into readme, add links for other languages > into readme pointing to github markdown files > +1 > - Add peer dependencies to package.json > +1, especially for as long as we are still fetching via plugman/cordova-cli. Though for the record, the plan for npm 3.0 seems to be to have a flat hierarchy even for dependencies. Was this discussed? > - Major bump plugin versions > +1 > > Tools TODO: > - NPM fetch as fallback > Do we agree to go directly to NPM if we know for sure the plugin name fails the CPR publishing requirements (aka, is not in reverse domain format)? > - Mapper module will only warn to use the new name, won't actually > redirect. We can turn on redirecting when we default to npm or shutdown > cpr. > Fair enough for step 1! > > Today I am working on the tools todos. > > On Mon, Feb 23, 2015 at 7:55 PM, Michal Mocny <mmo...@chromium.org> wrote: > >> Summarizing conclusions so far (not 100% we all agree on this, please do >> speak up): >> >> - PluginId and Npm Package Name should be the same. We cannot force this >> for all plugins, but we can set the tone with core plugins. >> - We will change all plugins to use the cordova-plugin-* name/id. >> - We will bump MAJOR version to signal this change, and so plugins that >> depend on core plugins know to update to reflect the id change. >> - Publish old versions of plugins with the new package name but old plugin >> ids to npm. >> - CPR will be hit first, then fallback to npm, for the first N months. >> - We could go directly to npm first if the name is known to not match >> CPR >> requirements (i.e. cordova-plugin-* is known to not be in CPR by existing >> plugin id requirements) >> - Mapper module can help transition users of old ids to new package names, >> by warning that plugins have moved, and (perhaps?) automatically >> redirecting. >> - If we drop the automatic redirection requirement, we could just update >> CPR plugins with <info> inform users of the change. >> >> I think thats it.. >> >> Steve, mind updating us on how far along you are, and with what you would >> like help? >> >> -Michal >> >> On Mon, Feb 23, 2015 at 10:44 PM, Michal Mocny <mmo...@chromium.org> >> wrote: >> >> > Just thinking out loud.. >> > >> > I guess it wouldn't actually do that unless you are using actual npm cli >> > to install plugins. With the current plan we are still just using >> > cordova/plugman to fetch using the npm lib, and so can probably resolve >> > peerDependencies whenever/however we want (like auto-fetching only once >> the >> > platform is added). >> > >> > If we did move to top-level package.json and installing dependencies via >> > npm, it may be a little annoying to have that message. >> > >> > I guess the reason we are discussing dropping <dependency> anyway was >> for >> > the move to using npm cli directly, and since we are still a ways away >> from >> > that, I guess we can punt this change for now and keep using a tag? >> > >> > -Michal >> > >> > On Mon, Feb 23, 2015 at 9:52 PM, Andrew Grieve <agri...@chromium.org> >> > wrote: >> > >> >> I suppose it's workable, but it seems worse than what we currently >> have. >> >> E.g. I don't care about Android, but npm peerDependencies will complain >> >> until I've installed the android.support.v4 plugin into my >> node_modules. >> >> >> >> On Mon, Feb 23, 2015 at 4:26 PM, Michal Mocny <mmo...@chromium.org> >> >> wrote: >> >> >> >>> I scanned the core plugins, and only contacts uses platform specific >> >>> deps, >> >>> and only for 2 BB plugins. >> >>> >> >>> Also scanned the top 20 non-core plugins from CPR, and: >> >>> >> >>> - com.cranberrygame.phonegap.plugin.ad.admob >> >>> - depends on google-play-services only on android, but that plugin >> only >> >>> supports android. >> >>> - com.google.cordova.admob (Note: not published by com.google..) >> >>> - Same as above >> >>> - plugin.google.maps >> >>> - Same as above >> >>> - also depends on android.support.v4 for android only (but its also >> an >> >>> android only plugin) >> >>> - also depends on com.googlemaps.ios for ios only (but its an ios >> only >> >>> plugin) >> >>> - net.yoik.cordova.plugins.screenorientation >> >>> - Depends on com.blackberry.app only for BB (but its BB only plugin) >> >>> >> >>> >> >>> So.. this is not an uncommon use, but it seems unnecessary in all >> cases >> >>> I've found so far. >> >>> >> >>> -Michal >> >>> >> >>> On Mon, Feb 23, 2015 at 4:10 PM, Michal Mocny <mmo...@chromium.org> >> >>> wrote: >> >>> >> >>> > >> >>> > >> >>> > On Mon, Feb 23, 2015 at 3:36 PM, Andrew Grieve < >> agri...@chromium.org> >> >>> > wrote: >> >>> > >> >>> >> You can use plugin.xml <info> to print a message upon installation. >> >>> >> >> >>> >> Plugins can specify dependencies on a per-platform basis. Don't >> think >> >>> we >> >>> >> can capture this with package.json without using custom keys. >> >>> >> >> >>> > >> >>> > Do we need to? I mean, this is a breaking change, but perhaps once >> >>> that >> >>> > is acceptable in practice. I.e. Contacts depends on >> >>> com.blackberry.utils, >> >>> > but that plugin only supports the BB <platform> and so shouldn't be >> >>> > installed on others. >> >>> > >> >>> > In theory there exists a plugin which supports all platforms but is >> >>> only >> >>> > explicitly needed for one platform as a dependency.. But I don't >> know. >> >>> > Does the issue come up in practice? >> >>> > >> >>> > >> >>> >> >> >>> >> >> >>> >> >> >>> >> On Mon, Feb 23, 2015 at 2:42 PM, Michal Mocny <mmo...@chromium.org >> > >> >>> >> wrote: >> >>> >> >> >>> >> > On Mon, Feb 23, 2015 at 2:22 PM, Steven Gill < >> >>> stevengil...@gmail.com> >> >>> >> > wrote: >> >>> >> > >> >>> >> > > +1 to giving plugins major version bump >> >>> >> > > +1 to publishing old versions to npm >> >>> >> > > >> >>> >> > > Short term we can keep dependency tag using plugin ids. >> Wouldn't >> >>> it >> >>> >> make >> >>> >> > > more sense long term to move those dependencies into >> package.json >> >>> >> file of >> >>> >> > > each plugin? >> >>> >> > > >> >>> >> > >> >>> >> > Probably peerDependencies not dependencies. I forgot about >> that.. >> >>> >> Indeed >> >>> >> > that was the plan. >> >>> >> > >> >>> >> > I think one current benefit of <dependency> tag over >> package.json is >> >>> >> that >> >>> >> > the latter only guarantees that the plugins are downloaded, while >> >>> the >> >>> >> > former guarantees that they are installed. We could update our >> >>> tools >> >>> >> to do >> >>> >> > an install time check for a package.json and then scan the >> locally >> >>> >> > installed packages which are listed in its peerDependencies to >> see >> >>> if >> >>> >> any >> >>> >> > are cordova plugins and install those automatically, but I'm not >> >>> quite >> >>> >> sure >> >>> >> > thats the right voodoo.. >> >>> >> > >> >>> >> > Anyway, assuming we can come up with a sensible plan, I would >> >>> rather do >> >>> >> it >> >>> >> > all at once with the upcoming Major version bump. >> >>> >> > >> >>> >> > >> >>> >> > >> >>> >> > > >> >>> >> > > I am going to begin the process of adding package.json to all >> of >> >>> our >> >>> >> > > plugins today and will look into publishing older versions to >> npm. >> >>> >> > >> >>> >> > >> >>> >> > > Third-party plugins can either keep their package-id as >> >>> package-name >> >>> >> or >> >>> >> > > rename. It will be up to them. If they keep it, no need to >> send a >> >>> PR >> >>> >> to >> >>> >> > > mapper module. If they decide on a new package-name, it is >> >>> probably in >> >>> >> > > their best interest to send a PR. >> >>> >> > >> >>> >> > >> >>> >> > Sounds good, though I'm hoping to provide guidance that renames >> are >> >>> >> better >> >>> >> > by doing it for core plugins. The need for the mapper is >> probably a >> >>> >> bit of >> >>> >> > an exaggeration anyway. Once CPR goes deprecated, we should >> start >> >>> >> warning >> >>> >> > that plugins should be fetched from npm. Users will then search >> >>> for the >> >>> >> > name of the npm package and the plugin author can rename freely >> by >> >>> just >> >>> >> > documenting accordingly. Once the CPR goes down, this will be >> even >> >>> more >> >>> >> > true. >> >>> >> > >> >>> >> > (Additionally, authors can publish a CPR plugin before CPR goes >> down >> >>> >> that >> >>> >> > has an install hook which says "This plugin has moved to npm >> under >> >>> the >> >>> >> > name..". I'm less and less convinced the mapper is needed at >> all..) >> >>> >> > >> >>> >> > >> >>> >> > >> >>> >> > >> >>> >> > > >> >>> >> > > >> >>> >> > > >> >>> >> > > >> >>> >> > > On Thu, Feb 19, 2015 at 6:50 AM, Carlos Santana < >> >>> csantan...@gmail.com >> >>> >> > >> >>> >> > > wrote: >> >>> >> > > >> >>> >> > > > Lets consider to take this time and make our plugins 1.0.0 >> and >> >>> start >> >>> >> > > > following semver 2.0 more strict. The community is starting >> to >> >>> >> accept >> >>> >> > > that >> >>> >> > > > is ok if the major number is not zero, and a number means >> >>> something >> >>> >> > that >> >>> >> > > > can be use in production. >> >>> >> > > > I understand that people might have their own opinion on what >> >>> is a >> >>> >> > MAJOR, >> >>> >> > > > meaning an API brake when the plugin is running on the device >> >>> and >> >>> >> the >> >>> >> > API >> >>> >> > > > of the javascript API to the plugin. >> >>> >> > > > But I want to consider how a plugin is manage in terms of >> >>> tooling, >> >>> >> > > > declaring and resolving dependencies, plugin.xml schema, >> >>> >> > > > browersify/bootstrapjs, we could say that this consider an >> API >> >>> for >> >>> >> the >> >>> >> > > > plugin. >> >>> >> > > > Another point is if the plugin are going to change in terms >> how >> >>> they >> >>> >> > are >> >>> >> > > > manage, we can take an opportunity to take the developers >> >>> attention >> >>> >> > with >> >>> >> > > > the major version number change to easy distinguish that >> there >> >>> >> > something >> >>> >> > > > new going with plugins since 1.0.0 and up. >> >>> >> > > > >> >>> >> > > > On Tue, Feb 17, 2015 at 4:02 PM, Chuck Lantz < >> >>> cla...@microsoft.com> >> >>> >> > > wrote: >> >>> >> > > > >> >>> >> > > > > I think the incident over the weekend pointed out that >> people >> >>> are >> >>> >> in >> >>> >> > > fact >> >>> >> > > > > pinning versions in plugin dependencies to avoid unexpected >> >>> >> > regressions >> >>> >> > > > or >> >>> >> > > > > in apps due to things like security reviews. (Ex: Each >> >>> version >> >>> >> of a >> >>> >> > > > piece >> >>> >> > > > > of software that is published inside an app needs to go >> >>> through a >> >>> >> > legal >> >>> >> > > > > review at some companies.) So, I think it will be critical >> >>> that >> >>> >> > people >> >>> >> > > > can >> >>> >> > > > > get back to older versions of plugins beyond the 3 + 6 = 9 >> >>> month >> >>> >> CPR >> >>> >> > > > > window. Big time +1 to back publishing versions npm for >> that >> >>> >> reason >> >>> >> > > > unless >> >>> >> > > > > we intend to keep the CPR around for a long time. We also >> >>> will >> >>> >> want >> >>> >> > to >> >>> >> > > > > tell plugin authors that they will want to do the same. >> (Note >> >>> >> that >> >>> >> > I'm >> >>> >> > > > > less worried about IDEs than I am app and plugin authors >> >>> here.) >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > What we're talking about so far has been around changing >> the >> >>> >> behavior >> >>> >> > > of >> >>> >> > > > > cordova-lib over this period. A few questions assuming we >> go >> >>> with >> >>> >> > > > having a >> >>> >> > > > > mapper module: >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > 1. During and after the transition period, should we >> >>> >> recommend >> >>> >> > > that >> >>> >> > > > > 3rd party plugin authors contribute their IDs to the mapper >> >>> >> module to >> >>> >> > > > > maintain compat as the CPR shuts down if they want/need to >> >>> >> publish to >> >>> >> > > npm >> >>> >> > > > > with a different name? Is there a process we want to setup >> to >> >>> make >> >>> >> > this >> >>> >> > > > > easy? >> >>> >> > > > > >> >>> >> > > > > 2. What about apps using old versions of Cordova that >> >>> >> pre-date >> >>> >> > npm >> >>> >> > > > > support being present? Given it sounds like Nodejitsu will >> >>> help >> >>> >> with >> >>> >> > > any >> >>> >> > > > > migration needed, is there an urgency to shut down the CPR >> >>> itself >> >>> >> > > > > (regardless of what cordova-lib itself does) in this time >> >>> window? >> >>> >> Or >> >>> >> > > are >> >>> >> > > > we >> >>> >> > > > > simply telling people they have to upgrade to install any >> new >> >>> >> > plugins? >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > -Chuck >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > -----Original Message----- >> >>> >> > > > > From: mmo...@google.com [mailto:mmo...@google.com] On >> Behalf >> >>> Of >> >>> >> > Michal >> >>> >> > > > > Mocny >> >>> >> > > > > Sent: Tuesday, February 17, 2015 9:32 AM >> >>> >> > > > > To: dev >> >>> >> > > > > Subject: Re: Schedule for npm transition >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > FYI since its perhaps relevant to npm transition (from npm >> >>> weekly >> >>> >> > > notes): >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > "We will also be changing the behavior of peerDependencies >> in >> >>> >> npm@3. >> >>> >> > > We >> >>> >> > > > > won't be automatically downloading the peer dependency >> >>> anymore. >> >>> >> > > Instead, >> >>> >> > > > > we'll warn you if the peer dependency isn't already >> installed. >> >>> >> This >> >>> >> > > > > requires you to resolve peerDependency conflicts yourself, >> >>> >> manually, >> >>> >> > > but >> >>> >> > > > in >> >>> >> > > > > the long run this should make it less likely that you'll >> end >> >>> up >> >>> >> in a >> >>> >> > > > tricky >> >>> >> > > > > spot with your packages' dependencies." >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > -Michal >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > On Tue, Feb 17, 2015 at 12:13 PM, Andrew Grieve < >> >>> >> > agri...@chromium.org >> >>> >> > > > > <mailto:agri...@chromium.org>> >> >>> >> > > > > >> >>> >> > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > >> >>> >> > > > > > On Tue, Feb 17, 2015 at 11:28 AM, Michal Mocny < >> >>> >> > mmo...@chromium.org >> >>> >> > > > > <mailto:mmo...@chromium.org>> >> >>> >> > > > > >> >>> >> > > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > > On Tue, Feb 17, 2015 at 10:09 AM, Andrew Grieve >> >>> >> > > > > >> >>> >> > > > > > > <agri...@chromium.org<mailto:agri...@chromium.org>> >> >>> >> > > > > >> >>> >> > > > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > Sorry to be dragging this out, but I think it's >> >>> important >> >>> >> that >> >>> >> > > the >> >>> >> > > > > >> >>> >> > > > > > > > plan here is crystal clear. >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > On Wed, Feb 11, 2015 at 4:56 PM, Michal Mocny >> >>> >> > > > > >> >>> >> > > > > > > > <mmo...@chromium.org<mailto:mmo...@chromium.org>> >> >>> >> > > > > >> >>> >> > > > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > I would agree that we should change plugin ID as >> well >> >>> as >> >>> >> > > package >> >>> >> > > > > >> >>> >> > > > > > name, >> >>> >> > > > > >> >>> >> > > > > > > > but >> >>> >> > > > > >> >>> >> > > > > > > > > I don't think that affects the results. >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > All 3 of those use cases you mentioned I think are >> >>> >> addressed >> >>> >> > > > > >> >>> >> > > > > > > > equivalently. >> >>> >> > > > > >> >>> >> > > > > > > > > Whether the plugin is added as a dependency, with >> >>> >> > save/restore, >> >>> >> > > > > >> >>> >> > > > > > > > > or explicitly from the command line, cordova-lib >> would >> >>> >> first >> >>> >> > > > > >> >>> >> > > > > > > > > check if >> >>> >> > > > > >> >>> >> > > > > > > there >> >>> >> > > > > >> >>> >> > > > > > > > is >> >>> >> > > > > >> >>> >> > > > > > > > > a mapping from old ID -> new package name, or use >> >>> what's >> >>> >> > given >> >>> >> > > > > >> >>> >> > > > > > > verbatim. >> >>> >> > > > > >> >>> >> > > > > > > > > So the only concern is with third party plugin >> >>> authors who >> >>> >> > > chose >> >>> >> > > > > >> >>> >> > > > > > > > > to >> >>> >> > > > > >> >>> >> > > > > > > > rename >> >>> >> > > > > >> >>> >> > > > > > > > > plugins, and already have dependants, and don't >> >>> register a >> >>> >> > > > > >> >>> >> > > > > > > > > mapping >> >>> >> > > > > >> >>> >> > > > > > with >> >>> >> > > > > >> >>> >> > > > > > > > us. >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > There is a runtime dependency on plugin ID. It's used >> >>> when >> >>> >> > > > > >> >>> >> > > > > > > > require()ing other JS modules, and on Android it's >> used >> >>> to >> >>> >> > access >> >>> >> > > > > >> >>> >> > > > > > > > the plugin's >> >>> >> > > > > >> >>> >> > > > > > native >> >>> >> > > > > >> >>> >> > > > > > > > side (pluginManager.getPlugin("ID")). >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > We could have a mapper that knows that I type "plugin >> >>> add >> >>> >> "", >> >>> >> > to >> >>> >> > > > > >> >>> >> > > > > > > > fetch "cordova-plugin-file", but if we also change >> the >> >>> >> plugin >> >>> >> > ID, >> >>> >> > > > > >> >>> >> > > > > > > > then we'll >> >>> >> > > > > >> >>> >> > > > > > > get >> >>> >> > > > > >> >>> >> > > > > > > > runtime problems. So... if we have a mapper, then no >> >>> >> changing >> >>> >> > > > > >> >>> >> > > > > > > > plugin >> >>> >> > > > > >> >>> >> > > > > > IDs. >> >>> >> > > > > >> >>> >> > > > > > > > Correct? >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > I agree at first, but after sleeping on it, perhaps >> this >> >>> is >> >>> >> not >> >>> >> > > > > >> >>> >> > > > > > necessarily >> >>> >> > > > > >> >>> >> > > > > > > true. Perhaps changing plugin ID could just be a >> semver >> >>> >> breaking >> >>> >> > > > > change? >> >>> >> > > > > >> >>> >> > > > > > > Then, even if it was installed using old plugin-id and >> the >> >>> >> mapper >> >>> >> > > > > >> >>> >> > > > > > > mapped >> >>> >> > > > > >> >>> >> > > > > > to >> >>> >> > > > > >> >>> >> > > > > > > the npm package-name, any plugin compatible with this >> >>> MAJOR >> >>> >> > version >> >>> >> > > > > >> >>> >> > > > > > > of >> >>> >> > > > > >> >>> >> > > > > > the >> >>> >> > > > > >> >>> >> > > > > > > plugin would know to use the new plugin id. >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > That'd probably work. In practice I haven't seen plugins >> pin >> >>> >> > versions >> >>> >> > > > > >> >>> >> > > > > > within <dependency>, but they probably should. >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > For old versions of the plugin published to npm, we do >> >>> have to >> >>> >> > > leave >> >>> >> > > > > >> >>> >> > > > > > > the plugin id as-is. >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > Okay, so we don't change the plugin ID, just the >> package >> >>> >> name. >> >>> >> > > > > >> >>> >> > > > > > > > - When people use <dependency>, they should still use >> >>> >> plugin ID >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > Nit: why? <dependency> (and config.xml <plugin>) >> should >> >>> use >> >>> >> the >> >>> >> > > > > >> >>> >> > > > > > > same target as "cordova plugin add", which at this >> point >> >>> >> should >> >>> >> > > > > >> >>> >> > > > > > > change to package-name. If we do leave plugin-id >> >>> different >> >>> >> from >> >>> >> > > > > >> >>> >> > > > > > > package-name, it should only be used internally by >> plugin >> >>> >> authors >> >>> >> > > > > >> >>> >> > > > > > > who depend on other plugins. >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > "plugin add" can take git URLs, local directory paths. >> >>> >> <dependency >> >>> >> > > > > >> >>> >> > > > > > id="" /> is pretty clear that it's an ID, and in this >> form >> >>> it >> >>> >> > doesn't >> >>> >> > > > > >> >>> >> > > > > > specify where to get the plugin from >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > The logic for dependency in plugman is to: >> >>> >> > > > > >> >>> >> > > > > > 1. Fetch it (e.g. use search paths, or find-by-id from >> the >> >>> >> > > registry). >> >>> >> > > > > >> >>> >> > > > > > 2. Validate that the plugin.xml we fetched matches the ID >> >>> from >> >>> >> > > > > >> >>> >> > > > > > <dependency> 3. Install it >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > I don't think we can do the validation step if we allow >> >>> >> > package-name >> >>> >> > > > > >> >>> >> > > > > > within <dependency>. Plus, except for core plugins that >> >>> have a >> >>> >> > > mapper, >> >>> >> > > > > >> >>> >> > > > > > you couldn't do the search-path logic correctly without >> the >> >>> >> plugin >> >>> >> > > ID. >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > - If they "cordova plugin add", we'll allow them to >> >>> specify >> >>> >> NPM >> >>> >> > > > > >> >>> >> > > > > > > > package name *or* plugin ID. >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > Possibly only support plugin-id for some deprecation >> time? >> >>> >> > (Though >> >>> >> > > > > >> >>> >> > > > > > > if we publish old versions to npm, maybe we just leave >> it >> >>> >> > supported >> >>> >> > > > > >> >>> >> > > > > > > + warning >> >>> >> > > > > >> >>> >> > > > > > > always) >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > - We'd use the reverse-mapping so that plugin search >> path >> >>> will >> >>> >> > work >> >>> >> > > > > >> >>> >> > > > > > > if >> >>> >> > > > > >> >>> >> > > > > > they >> >>> >> > > > > >> >>> >> > > > > > > > specify package name. >> >>> >> > > > > >> >>> >> > > > > > > > - E.g. "cordova plugin add cordova-plugin-file", >> will >> >>> >> need to >> >>> >> > > > > >> >>> >> > > > > > > > know to scan search-path directories for >> >>> >> > > "org.apache.cordova.file". >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > Indeed! >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > I think the different-IDs-than-package-name approach >> >>> will >> >>> >> work, >> >>> >> > > > > >> >>> >> > > > > > > > but I >> >>> >> > > > > >> >>> >> > > > > > > think >> >>> >> > > > > >> >>> >> > > > > > > > it's too much of a hassle to be used by third-party >> >>> plugins, >> >>> >> > > > > >> >>> >> > > > > > > > because >> >>> >> > > > > >> >>> >> > > > > > it's >> >>> >> > > > > >> >>> >> > > > > > > > more work to have the names be different: >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > I tend to agree. I think it *could* work, but we >> should >> >>> think >> >>> >> > > > > >> >>> >> > > > > > > through if it is necessary. >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > - If their ID is the same as the package name: >> >>> >> > > > > >> >>> >> > > > > > > > - They fit in more naturally with NPM >> >>> >> > > > > >> >>> >> > > > > > > > - The fetching logic will be faster (since we >> know we >> >>> >> don't >> >>> >> > > > > >> >>> >> > > > > > > > need to check CPR first) >> >>> >> > > > > >> >>> >> > > > > > > > - They don't need to send a pull request and wait >> >>> for a >> >>> >> > > release >> >>> >> > > > > >> >>> >> > > > > > > > so >> >>> >> > > > > >> >>> >> > > > > > > that >> >>> >> > > > > >> >>> >> > > > > > > > people can install their plugin (mapper) >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > If third-parties don't opt into having different >> package >> >>> >> names >> >>> >> > > > > >> >>> >> > > > > > > > from >> >>> >> > > > > >> >>> >> > > > > > > plugin >> >>> >> > > > > >> >>> >> > > > > > > > IDs, then down the road the only plugins that will >> be in >> >>> >> this >> >>> >> > > > > >> >>> >> > > > > > > > state are >> >>> >> > > > > >> >>> >> > > > > > > the >> >>> >> > > > > >> >>> >> > > > > > > > core plugins. Maybe that's fine? >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > I believe the only real question is: do we prefer a >> >>> >> minimally >> >>> >> > > > > >> >>> >> > > > > > > > > easier transition by leaving all names as they are, >> >>> or do >> >>> >> we >> >>> >> > > > > >> >>> >> > > > > > > > > prefer to have package names on npm that don't look >> >>> out of >> >>> >> > > place. >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > I think any argument that there is a technical >> >>> preference >> >>> >> for >> >>> >> > > > > >> >>> >> > > > > > > > > one way >> >>> >> > > > > >> >>> >> > > > > > > > over >> >>> >> > > > > >> >>> >> > > > > > > > > the other hasn't really held up (but now would be a >> >>> great >> >>> >> > time >> >>> >> > > > > >> >>> >> > > > > > > > > to >> >>> >> > > > > >> >>> >> > > > > > > mention >> >>> >> > > > > >> >>> >> > > > > > > > > if that isn't true). >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > (Note: choosing leaving names as they are still >> only >> >>> >> > guarantees >> >>> >> > > > > >> >>> >> > > > > > > > > core plugins do this, 3rd party authors may not >> >>> >> re-publish at >> >>> >> > > > > >> >>> >> > > > > > > > > all, or >> >>> >> > > > > >> >>> >> > > > > > rename >> >>> >> > > > > >> >>> >> > > > > > > > > however they want) >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > -Michal >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > On Wed, Feb 11, 2015 at 4:07 PM, Andrew Grieve >> >>> >> > > > > >> >>> >> > > > > > > > > <agri...@chromium.org >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > Going to try and summarize my concerns with the >> >>> proposal >> >>> >> > > here: >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > On Wed, Feb 11, 2015 at 2:39 PM, Steven Gill < >> >>> >> > > > > >> >>> >> > > > > > stevengil...@gmail.com<mailto:stevengil...@gmail.com> >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > Correct! For the first 3 months, all requests >> >>> will hit >> >>> >> > CPR >> >>> >> > > > > >> >>> >> > > > > > > > > > > first, >> >>> >> > > > > >> >>> >> > > > > > > if >> >>> >> > > > > >> >>> >> > > > > > > > > CPR >> >>> >> > > > > >> >>> >> > > > > > > > > > > fails, we will try to fetch from npm. >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > If users run "cordova plugin add >> >>> >> cordova-plugin-device", >> >>> >> > it >> >>> >> > > > > >> >>> >> > > > > > > > > > > would >> >>> >> > > > > >> >>> >> > > > > > > hit >> >>> >> > > > > >> >>> >> > > > > > > > > > CPR, >> >>> >> > > > > >> >>> >> > > > > > > > > > > fail, go to npm, succeed. >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > CPR doesn't allow non-reverse dns names. There'd >> be >> >>> no >> >>> >> > reason >> >>> >> > > > > >> >>> >> > > > > > > > > > to >> >>> >> > > > > >> >>> >> > > > > > > check >> >>> >> > > > > >> >>> >> > > > > > > > it >> >>> >> > > > > >> >>> >> > > > > > > > > > unless the name had at least 2 periods in it. >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > If we're not using package names to detect which >> >>> >> registry >> >>> >> > to >> >>> >> > > > > >> >>> >> > > > > > > > > > use, I >> >>> >> > > > > >> >>> >> > > > > > > > don't >> >>> >> > > > > >> >>> >> > > > > > > > > > actually see any benefit in changing names. >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > If we use the mapper module, "cordova plugin >> add >> >>> >> > > > > >> >>> >> > > > > > > > > > > org.apache.cordova.device" would be converted >> to >> >>> >> > > > > >> >>> >> > > > > > > > cordova-plugin-device, >> >>> >> > > > > >> >>> >> > > > > > > > > > hit >> >>> >> > > > > >> >>> >> > > > > > > > > > > CPR, fail, go to npm, succeed. >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > While this works fine for our modules, I don't >> think >> >>> >> it'll >> >>> >> > > > > >> >>> >> > > > > > > > > > work >> >>> >> > > > > >> >>> >> > > > > > well >> >>> >> > > > > >> >>> >> > > > > > > > for >> >>> >> > > > > >> >>> >> > > > > > > > > > others'. Three use-cases for them: >> >>> >> > > > > >> >>> >> > > > > > > > > > 1. <dependency> within plugin.xml. >> >>> >> > > > > >> >>> >> > > > > > > > > > 2. <plugin> within config.xml (for cordova plugin >> >>> >> restore). >> >>> >> > > > > >> >>> >> > > > > > > > > > 3. cordova plugin add FOO >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > All three would be solved if we enforce that >> >>> >> packageName == >> >>> >> > > > > >> >>> >> > > > > > pluginId. >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > I think we should either: >> >>> >> > > > > >> >>> >> > > > > > > > > > - publish under npm under our existing IDs >> >>> >> > > > > >> >>> >> > > > > > > > > > or: >> >>> >> > > > > >> >>> >> > > > > > > > > > - publish under npm under cordova-plugin-FOO, and >> >>> change >> >>> >> > > > > >> >>> >> > > > > > > > > > plugin IDs >> >>> >> > > > > >> >>> >> > > > > > > to >> >>> >> > > > > >> >>> >> > > > > > > > be >> >>> >> > > > > >> >>> >> > > > > > > > > > cordova-plugin-FOO >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > After 3 months, "cordova plugin add >> >>> >> > cordova-plugin-device" >> >>> >> > > > > >> >>> >> > > > > > > > > > > would >> >>> >> > > > > >> >>> >> > > > > > > hit >> >>> >> > > > > >> >>> >> > > > > > > > > npm >> >>> >> > > > > >> >>> >> > > > > > > > > > > first and succeed. >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > We want to use these 3 months to get our >> >>> developers to >> >>> >> > > > > >> >>> >> > > > > > > > > > > update >> >>> >> > > > > >> >>> >> > > > > > their >> >>> >> > > > > >> >>> >> > > > > > > > > tools >> >>> >> > > > > >> >>> >> > > > > > > > > > > and use the new names for plugins to install. >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > On Wed, Feb 11, 2015 at 10:36 AM, Michal Mocny >> < >> >>> >> > > > > >> >>> >> > > > > > > mmo...@chromium.org<mailto:mmo...@chromium.org>> >> >>> >> > > > > >> >>> >> > > > > > > > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > Steve, npm fetch default only affects plugins >> >>> that >> >>> >> use >> >>> >> > > > > >> >>> >> > > > > > > > > > > > same >> >>> >> > > > > >> >>> >> > > > > > name >> >>> >> > > > > >> >>> >> > > > > > > in >> >>> >> > > > > >> >>> >> > > > > > > > > > both >> >>> >> > > > > >> >>> >> > > > > > > > > > > > places, right? >> >>> >> > > > > >> >>> >> > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > If we create cordova-plugin-device today, and >> >>> tell >> >>> >> > users >> >>> >> > > > > >> >>> >> > > > > > > > > > > > to >> >>> >> > > > > >> >>> >> > > > > > start >> >>> >> > > > > >> >>> >> > > > > > > > > using >> >>> >> > > > > >> >>> >> > > > > > > > > > > > cordova plugin add cordova-plugin-device, >> then >> >>> we >> >>> >> will >> >>> >> > > get >> >>> >> > > > > >> >>> >> > > > > > > > > > > > much >> >>> >> > > > > >> >>> >> > > > > > > > user >> >>> >> > > > > >> >>> >> > > > > > > > > > > > feedback on npm fetching far before May 18th, >> >>> right? >> >>> >> > > > > >> >>> >> > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > On Wed, Feb 11, 2015 at 1:09 PM, Steven Gill >> < >> >>> >> > > > > >> >>> >> > > > > > > > stevengil...@gmail.com<mailto:stevengil...@gmail.com >> > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > We don't have one yet but we should pick >> dates >> >>> >> soon. >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > How about: >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > CPR Switch to read only: Monday, May 18th >> NPM >> >>> >> fetch >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > becomes default: Monday, May 18th CPR >> offline: >> >>> >> > Monday, >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > August 17th >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > Based on the following proposal: >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > >> >>> >> >> >>> >> https://docs.google.com/document/d/12WAXJa6jfY3BnNHGieK9QOqvZ6cl3OXmP- >> >>> >> > > > > >> >>> >> > > > > > 9DpYkcmfs/edit?usp=sharing >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > - Need to start educating plugin >> developers >> >>> to >> >>> >> > publish >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > to >> >>> >> > > > > >> >>> >> > > > > > npm >> >>> >> > > > > >> >>> >> > > > > > > as >> >>> >> > > > > >> >>> >> > > > > > > > > > well >> >>> >> > > > > >> >>> >> > > > > > > > > > > as >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > CPR for next three months. (blog post) >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > - Need to educate users to install plugins >> >>> via >> >>> >> new >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > names (if >> >>> >> > > > > >> >>> >> > > > > > > > > > > > package-name >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > is different than id). Our core plugins are >> >>> being >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > renamed >> >>> >> > > > > >> >>> >> > > > > > from >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > org.apache.cordova.device to >> >>> cordova-plugin-device >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > - Inform devs who are working with registry >> >>> >> directly >> >>> >> > to >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > pull >> >>> >> > > > > >> >>> >> > > > > > > > > plugins >> >>> >> > > > > >> >>> >> > > > > > > > > > > from >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > npm instead of CPR. After 3 months, CPR >> >>> plugins >> >>> >> will >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > start to >> >>> >> > > > > >> >>> >> > > > > > > > > become >> >>> >> > > > > >> >>> >> > > > > > > > > > > out >> >>> >> > > > > >> >>> >> > > > > > > > > > > > of >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > date compared to npm versions. >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > Our next plugins release (after the one >> >>> currently >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > ongoing) >> >>> >> > > > > >> >>> >> > > > > > will >> >>> >> > > > > >> >>> >> > > > > > > > be >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > published to npm as well as cpr. >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > On Wed, Feb 11, 2015 at 9:10 AM, Gorkem >> Ercan >> >>> < >> >>> >> > > > > >> >>> >> > > > > > > > > > gorkem.er...@gmail.com<mailto: >> >>> gorkem.er...@gmail.com>> >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > wrote: >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > Is there a determined calendar for the >> npm >> >>> move >> >>> >> of >> >>> >> > > the >> >>> >> > > > > >> >>> >> > > > > > > plugins? >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > I think the scheduling of the transition >> is >> >>> >> crucial >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > for >> >>> >> > > > > >> >>> >> > > > > > those >> >>> >> > > > > >> >>> >> > > > > > > > who >> >>> >> > > > > >> >>> >> > > > > > > > > > are >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > using the plugin registry directly. >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > -- >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > Gorkem >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > >> >>> --------------------------------------------------------------------- >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > To unsubscribe, e-mail: >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > dev-unsubscr...@cordova.apache.org >> <mailto: >> >>> >> > > > > dev-unsubscr...@cordova.apache.org> >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > For additional commands, e-mail: >> >>> >> > > > > >> >>> >> > > > > > dev-h...@cordova.apache.org<mailto: >> >>> dev-h...@cordova.apache.org> >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > > >> >>> >> > > > > >> >>> >> > > > > > > >> >>> >> > > > > >> >>> >> > > > > > >> >>> >> > > > > >> >>> >> > > > >> >>> >> > > > >> >>> >> > > > >> >>> >> > > > -- >> >>> >> > > > Carlos Santana >> >>> >> > > > <csantan...@gmail.com> >> >>> >> > > > >> >>> >> > > >> >>> >> > >> >>> >> >> >>> > >> >>> > >> >>> >> >> >> >> >> > >> > >