I could, or it could just be an ignored tag for other platforms. It will sit inside the platform tag anyway. could also just add an optional attrib to the permission tag : <permission type='requirement' name='ID_REQ_NFC' />
The names already do contain enough info to easily parse, ID_CAP_* ID_REQ_* not to mention ID_RESOLUTION_* I am down with whatever. @purplecabbage risingj.com On Wed, Apr 17, 2013 at 12:24 PM, Filip Maj <[email protected]> wrote: > Hmm, this could be an implementation detail for windows phone. > > Requirement vs permission isn't syntactically different. Could we > encapsulate Windows Phone requirements as <permission> elements in > plugin.xml, and have tooling be smart enough to parse wp7 + wp8 <platform> > <permission> elements and drop them into the Windows Phone manifest as > whatever elements they need to be? > > On 4/17/13 12:16 PM, "Jesse" <[email protected]> wrote: > > >While we are there, we may want to add an optional requirements tag. > >Requirements let the app specify what device features it must have, for > >example NFC. [1] > >Logically this would just fall right under platform, and be optional : > > > > <platform name="wp8"> > > <requirement name="ID_REQ_NFC" /> > > </platform> > > > >Does it make sense for us to group these? > >ie. > > > ><platform> > > <permissions> > > <permission/> > > ... > > </permissions> > > <requirements> > > <requirement/> > > ... > > </requirements> > ></platform> > > > > > > > > > >[1] > > > http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/17/defining > >-your-app-s-requirements-for-a-great-customer-experience.aspx > > > > > > > >@purplecabbage > >risingj.com > > > > > >On Wed, Apr 17, 2013 at 12:04 PM, Filip Maj <[email protected]> wrote: > > > >> Good call, sound rule of thumb > >> > >> On 4/17/13 12:03 PM, "Jesse" <[email protected]> wrote: > >> > >> >RE: the permission element > >> >Looks good for wp7 + wp8 > >> >I assume if some platform requires extra data in the permission tag it > >>can > >> >have it, the same way that the blackberry version has the system > >> >attribute. > >> > > >> >@purplecabbage > >> >risingj.com > >> > > >> > > >> >On Wed, Apr 17, 2013 at 11:48 AM, Jeffrey Heifetz > >> ><[email protected]>wrote: > >> > > >> >> Makes sense to me. > >> >> > >> >> Sent from my BlackBerry 10 smartphone on the Rogers network. > >> >> From: Filip Maj > >> >> Sent: Wednesday, April 17, 2013 2:43 PM > >> >> To: [email protected] > >> >> Reply To: [email protected] > >> >> Subject: Re: plugman + plugin spec final q's > >> >> > >> >> > >> >> K one more update: <permission> element that will be a child of > >> >><platform> > >> >> elements. > >> >> > >> >> Examples: > >> >> <platform name="android"> > >> >> <permission name="android.permission.INTERNET" /> > >> >> </platform> > >> >> <platform name="blackberry"> > >> >> <permission name="_sys_use_consumer_push" system="true" /> > >> >> </platform> > >> >> <platform name="wp7"> > >> >> <permission name="ID_CAP_CONTACTS" /> > >> >> </platform> > >> >> > >> >> > >> >> `name` attribute is mandatory, mapping to native strings representing > >> >> specific features/permissions. > >> >> > >> >> `system` attribute is optional and false by default. Only used by > >> >> BlackBerry for certain system-level permissions. > >> >> > >> >> I think this satisfies our use cases. > >> >> > >> >> Thoughts/comments welcome. > >> >> > >> >> > >> >> > >> >> On 4/17/13 11:07 AM, "Jeffrey Heifetz" <[email protected]> > >>wrote: > >> >> > >> >> >I was thinking exactly along the same lines as Braden. Whatever > >> >>universe > >> >> >the cordova core plugins live in will likely be default, with the > >>wild > >> >> >west following it. SO long as plugman is explicit about where it is > >> >> >fetching from, a dev shouldn't have to find the URL and hope it > >>never > >> >> >changes. > >> >> > > >> >> >On 13-04-17 2:01 PM, "Braden Shepherdson" <[email protected]> > >>wrote: > >> >> > > >> >> >>I think there will be a common repo, where the Cordova core plugins > >> >>and > >> >> >>some others live. See the spec for the remotes.js file; I think it > >> >>should > >> >> >>search for plugins with the given name in each of those universes. > >> >> >>Specifying a url in the <dependency> would then only be necessary > >>for > >> >> >>other > >> >> >>universes. > >> >> >> > >> >> >>Braden > >> >> >> > >> >> >> > >> >> >>On Wed, Apr 17, 2013 at 1:56 PM, Filip Maj <[email protected]> wrote: > >> >> >> > >> >> >>> But then we'd need to be able to discover the different > >>universes.. > >> >> >>>Unless > >> >> >>> we all agree on a "default", don't think this is optional.. > >> >> >>> > >> >> >>> On 4/17/13 10:53 AM, "Jeffrey Heifetz" <[email protected]> > >> >> wrote: > >> >> >>> > >> >> >>> >Coming back to Braden's suggestion of specifying a url and id > >>for > >> >> >>>plugin > >> >> >>> >dependency, I think this is the correct route, and would go > >> >>further to > >> >> >>> >suggest the url is optional. I do not believe we should > >>inherently > >> >>tie > >> >> >>> >plugin dependency to the exact source. Thats why we have a > >> >>discovery > >> >> >>> >system and multiple places to get a plugin from. > >> >> >>> > > >> >> >>> >On 13-04-17 1:37 PM, "Filip Maj" <[email protected]> wrote: > >> >> >>> > > >> >> >>> >>Braden and I had a little chat on IRC about install/uninstall > >>and > >> >> >>>calling > >> >> >>> >>prepare. We've agreed that having prepare as a separate > >>command is > >> >> >>>useful > >> >> >>> >>(you tweak some plugin JS files, add more JS files, and want > >>that > >> >> >>> >>reflected in your app), but also calling prepare automatically > >> >>after > >> >> >>>an > >> >> >>> >>install and uninstall makes sense too (otherwise people using > >> >>plugman > >> >> >>> >>will > >> >> >>> >>have to call prepare manually after calling install or > >>uninstall). > >> >> >>> >> > >> >> >>> >>FTR, --prepare composes the cordova_plugins.json object that is > >> >>read > >> >> >>>by > >> >> >>> >>cordova.js and handles injecting plugin JS into the app. It > >>will > >> >>also > >> >> >>>be > >> >> >>> >>responsible for handling permissions that plugins require and > >> >>setting > >> >> >>>up > >> >> >>> >>platform manifests appropriately based on all installed > >>plugins. > >> >> >>> >> > >> >> >>> >>On 4/17/13 10:25 AM, "Brian LeRoux" <[email protected]> wrote: > >> >> >>> >> > >> >> >>> >>>Braden: you thinking that the config is canonical and then > >> >>prepare > >> >> >>> >>>quietly > >> >> >>> >>>does the right thing based on that? > >> >> >>> >>> > >> >> >>> >>>(Agree less steps is exactly what we're going for here.) > >> >> >>> >>> > >> >> >>> >>> > >> >> >>> >>>On Wed, Apr 17, 2013 at 10:16 AM, Braden Shepherdson > >> >> >>> >>><[email protected]>wrote: > >> >> >>> >>> > >> >> >>> >>>> Re: --install calling --prepare: no. It could, though, I > >> >>suppose. > >> >> >>> >>>> > >> >> >>> >>>> Why not have --prepare handle the plugins rather than > >> >> >>>install/remove. > >> >> >>> >>>>We're > >> >> >>> >>>> trying to make less, not more, happen at install time. > >>Someday > >> >>I > >> >> >>>hope > >> >> >>> >>>> --install ceases to exist. > >> >> >>> >>>> > >> >> >>> >>>> > >> >> >>> >>>> On Wed, Apr 17, 2013 at 12:59 PM, Filip Maj <[email protected]> > >> >> wrote: > >> >> >>> >>>> > >> >> >>> >>>> > Max, yeah, at the top of the plugman readme (in both > >>future > >> >>and > >> >> >>> >>>>master I > >> >> >>> >>>> > believe), the usage docs don't specify --install or > >> >>--uninstall > >> >> >>>as > >> >> >>> >>>>an > >> >> >>> >>>> > available command, but those commands are referenced right > >> >>after > >> >> >>>the > >> >> >>> >>>> usage > >> >> >>> >>>> > section. I'd be in favor of using --fetch for the > >>RETRIEVAL > >> >>of > >> >> >>> >>>>plugins, > >> >> >>> >>>> > --remove for the removal of plugins from the local plugins > >> >> >>>cache, > >> >> >>> >>>>and > >> >> >>> >>>> > --install and --uninstall for the relevant actions. > >> >> >>> >>>> > > >> >> >>> >>>> > Max, re (2): correct. > >> >> >>> >>>> > > >> >> >>> >>>> > To Braden's points: > >> >> >>> >>>> > > >> >> >>> >>>> > - I'm fine with url + name attributes for <dependency> > >> >> >>>elements. > >> >> >>> >>>>Will > >> >> >>> >>>> > update the spec/README shortly. > >> >> >>> >>>> > - Re <clobbers> I will add a note about that to the spec > >>as > >> >> >>>well. > >> >> >>> >>>> > - Re parsing package Ids, fair enough. > >> >> >>> >>>> > - About "namespacing" iOS source files, this sounds like a > >> >>good > >> >> >>> >>>>idea. > >> >> >>> >>>> > This is something that plugman can handle as well, yes? > >>That > >> >>is, > >> >> >>> >>>> > management of the plist and pointing to the right > >>location. > >> >> >>> >>>> > - Re config munging and permissions. I vote in favor of > >> >> >>>removing > >> >> >>> >>>>all > >> >> >>> >>>> > permissions and re-adding all of them with every change in > >> >> >>>plugins > >> >> >>> >>>>(add > >> >> >>> >>>> or > >> >> >>> >>>> > remove), with a de-duping pass. Brute force approach but > >> >>it'll > >> >> >>>work > >> >> >>> >>>>and > >> >> >>> >>>> is > >> >> >>> >>>> > simple. However spec wise we need a separate element for > >>this > >> >> >>>ya? > >> >> >>> >>>> > <permission> or something? Then based on what <platform> > >>tag > >> >> >>>houses > >> >> >>> >>>>a > >> >> >>> >>>> > <permissions> tag we can deduce where and how to set up > >>the > >> >> >>> >>>>appropriate > >> >> >>> >>>> > native permissions. > >> >> >>> >>>> > - Re the different <*-file> elements. I believe behavior > >>in > >> >>how > >> >> >>> >>>>header > >> >> >>> >>>> > and source files are handled on iOS are identical, so > >> >> >>>consolidating > >> >> >>> >>>>those > >> >> >>> >>>> > is an easy simplification. I will update the spec with > >>that. > >> >> >>>I'll > >> >> >>> >>>>leave > >> >> >>> >>>> > resource-file in there for now. > >> >> >>> >>>> > > >> >> >>> >>>> > One more question that came up: does a plugman --install > >>call > >> >> >>> >>>>implicitly > >> >> >>> >>>> > call plugman --prepare ? > >> >> >>> >>>> > > >> >> >>> >>>> > On 4/17/13 9:31 AM, "Max Woghiren" <[email protected]> > >> wrote: > >> >> >>> >>>> > > >> >> >>> >>>> > >(1) On line 25 of the cordova-plugman readme, is the > >>command > >> >> >>> >>>>missing > >> >> >>> >>>> (ie. > >> >> >>> >>>> > >--add or --install or whatever)? > >> >> >>> >>>> > > > >> >> >>> >>>> > >(2) Though two versions of a plugin are not allowed, I > >>just > >> >> >>>want to > >> >> >>> >>>>make > >> >> >>> >>>> > >sure: there will be some kind of detection that it's > >>okay if > >> >> >>>the > >> >> >>> >>>> > >*same*version of a plugin has already been installed by a > >> >> >>>previous > >> >> >>> >>>> > >dependency, > >> >> >>> >>>> > >right? (For example, plugins A and B both depend on C > >>v1.0, > >> >>so > >> >> >>> >>>>plugman > >> >> >>> >>>> > >will determine that this is okay, whereas if A depends > >>on C > >> >> >>>v1.0 > >> >> >>> >>>>and > >> >> >>> >>>>B > >> >> >>> >>>> > >depends on C v1.1, there'll be an error). > >> >> >>> >>>> > > > >> >> >>> >>>> > > > >> >> >>> >>>> > >On Wed, Apr 17, 2013 at 3:08 AM, Filip Maj > >><[email protected]> > >> >> >>>wrote: > >> >> >>> >>>> > > > >> >> >>> >>>> > >> Hey all, > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> I've done a review of the spec and updated it. Check it > >> >>out > >> >> >>>at > >> >> >>> >>>>the > >> >> >>> >>>> > >>README > >> >> >>> >>>> > >> in the plugman repo's future branch [1]. I've added the > >> >>last > >> >> >>>bit > >> >> >>> >>>>to > >> >> >>> >>>> it: > >> >> >>> >>>> > >> <dependencies> and <dependency> elements. Here is an > >> >>example: > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> <dependencies> > >> >> >>> >>>> > >> <dependency > >> >> >>> >>>> > >> > >> >> >>>url="http://plugins.cordova.io/com.facebook.plugin/plugin.xml" > >> >> >>> /> > >> >> >>> >>>> > >> <dependency > >> >> >>> >>>> > >> > >> >> >>>url="http://plugins.phonegap.com/com.adobe.omniture/plugin.xml" > >> >> >>> >>>> > >> version="1.0.0" /> > >> >> >>> >>>> > >> </dependencies> > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> Dependencies are specified by providing a url and > >> >>optionally > >> >> >>>some > >> >> >>> >>>>way > >> >> >>> >>>> of > >> >> >>> >>>> > >> describing what version of the plugin you want. The > >>only > >> >> >>> >>>>constraint > >> >> >>> >>>> > >> imposed on plugin dependencies right now is only a > >>single > >> >> >>>version > >> >> >>> >>>>of a > >> >> >>> >>>> > >> plugin can be installed in an app at the same time. I > >> >>think > >> >> >>>this > >> >> >>> >>>>is > >> >> >>> >>>> good > >> >> >>> >>>> > >> enough, but wanted to let everyone know and give people > >> >>time > >> >> >>>to > >> >> >>> >>>> comment. > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> Also did a bunch of updates/tweaks to the plugin.xml > >>spec, > >> >> >>>made > >> >> >>> >>>> explicit > >> >> >>> >>>> > >> some failures (if there are file conflicts, error > >>noisily, > >> >> >>>that > >> >> >>> >>>>kind > >> >> >>> >>>> of > >> >> >>> >>>> > >> stuff). I have a PluginTooling [2] wiki article up > >>where > >> >>I am > >> >> >>> >>>>doing my > >> >> >>> >>>> > >> best to summarize these various reqs/use cases floating > >> >> >>>around > >> >> >>> >>>>the > >> >> >>> >>>> list, > >> >> >>> >>>> > >> IRC, hangout discussions regarding plugin tooling > >> >> >>>development. If > >> >> >>> >>>>you > >> >> >>> >>>> > >>have > >> >> >>> >>>> > >> anything to add there please do so! > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> Next, I have a few questions came up when I was going > >> >>through > >> >> >>>the > >> >> >>> >>>> spec: > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> - does <clobbers> and <merges> (specified in the JS > >>symbol > >> >> >>> >>>>mapping > >> >> >>> >>>> > >> section of the plugin spec) create the objects on > >>window > >> >>if > >> >> >>>they > >> >> >>> >>>>do > >> >> >>> >>>> not > >> >> >>> >>>> > >> exist? I suppose this is more of a cordova.js question > >> >>than a > >> >> >>> >>>>spec > >> >> >>> >>>> > >> question, but that behavior should be explicit in the > >> >>spec. > >> >> >>> >>>> > >> - native code <source-file> elements have a `target` > >> >> >>>attribute > >> >> >>> >>>>where > >> >> >>> >>>> > >>you > >> >> >>> >>>> > >> specify where within the native project the native code > >> >> >>>should be > >> >> >>> >>>> copied > >> >> >>> >>>> > >> into. Is this necessary? For Java files, we could look > >>at > >> >>the > >> >> >>> >>>>package > >> >> >>> >>>> > >> declaration at the top to determine where to put it. If > >> >>I'm > >> >> >>>not > >> >> >>> >>>> > >>mistaken, > >> >> >>> >>>> > >> on iOS it doesn't matter where within the directory > >> >>structure > >> >> >>>of > >> >> >>> >>>>a > >> >> >>> >>>> > >> cordova-ios project you put native code in. What is the > >> >> >>>situation > >> >> >>> >>>>for > >> >> >>> >>>> > >>the > >> >> >>> >>>> > >> Windows (Phone) platforms, and for cordova-osx? > >> >> >>> >>>> > >> - the spec currently only accounts for appending XML to > >> >> >>>specific > >> >> >>> >>>> parts > >> >> >>> >>>> > >>of > >> >> >>> >>>> > >> XML-based configuration documents. Does anyone foresee > >>an > >> >> >>> >>>>instance > >> >> >>> >>>> where > >> >> >>> >>>> > >> some manner of native or cordova-specific config > >>munging > >> >> >>>OTHER > >> >> >>> >>>>than > >> >> >>> >>>> > >> appending would be necessary? Removal/modification of > >> >> >>>existing > >> >> >>> >>>> elements? > >> >> >>> >>>> > >> - iOS specific: Do we need separate elements for > >> >> >>><source-file>, > >> >> >>> >>>> > >> <resource-file> and <header-file>? Can we consolidate > >>into > >> >> >>>one? > >> >> >>> >>>>The > >> >> >>> >>>> > >> current draft of the spec mentions that this may be an > >> >> >>> >>>>implementation > >> >> >>> >>>> > >> detail. > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> Finally, I have two questions/concerns about the > >>command > >> >>line > >> >> >>> >>>> interface > >> >> >>> >>>> > >> for plugman. > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> 1. The --fetch operation seems to need a redundant > >> >>--plugin > >> >> >>>flag, > >> >> >>> >>>>e.g. > >> >> >>> >>>> > >> plugman --fetch --plugin <url>. Shouldn't we just axe > >> >> >>>--plugin in > >> >> >>> >>>>this > >> >> >>> >>>> > >> case? > >> >> >>> >>>> > >> 2. The API readme mentions --install and --uninstall > >>flags > >> >> >>>but > >> >> >>> >>>>the > >> >> >>> >>>> docs > >> >> >>> >>>> > >> only show --fetch and --remove. Can we clarify this? > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> Thanks for everyone's input. I feel we're getting > >>closer > >> >>to > >> >> >>> >>>>shipping > >> >> >>> >>>> > >>this > >> >> >>> >>>> > >> thing! > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> [1] > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> >> >>> >>>> > >> >> >>> > >> >> > >>https://git-wip-us.apache.org/repos/asf?p=cordova-plugman.git;a=shortlo > >> >> >>> >>>>g > >> >> >>> >>>> > ; > >> >> >>> >>>> > >>h= > >> >> >>> >>>> > >> refs/heads/future > >> >> >>> >>>> > >> [2] http://wiki.apache.org/cordova/PluginTooling > >> >> >>> >>>> > >> > >> >> >>> >>>> > >> > >> >> >>> >>>> > > >> >> >>> >>>> > > >> >> >>> >>>> > >> >> >>> >> > >> >> >>> > > >> >> >>> > > >> >> >>> > >> >>>--------------------------------------------------------------------- > >> >> >>> >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. > >> >> > >> > >> > >
