The defaults.xml is only part of the CLI workflow, yes. It has no relevance if you're not using CLI. BUT there is a complete config.xml in the bin/create template, and it can of course have the same values as you would get from an unchanged CLI project (defaults.xml + app.xml). The configuration values you get from the templates should be the same in both cases, I agree completely.
Braden On Sun, Sep 8, 2013 at 5:28 AM, James Jong <wjamesj...@gmail.com> wrote: > Andrew - what I was thinking was pretty much what Michal wrote below. > Perhaps it was my interpretation of the original note but I thought > defaults was to be applied only in the CLI workflow. > > -James Jong > > On Sep 7, 2013, at 1:05 PM, Michal Mocny <mmo...@chromium.org> wrote: > > > With this proposal as it stands, I think that is already true (at least > for > > the initial contents, obviously user can make edits later). > > > > Ie, defaults.xml + app.xml = initial config.xml for both cases, which use > > the same helloworld template's app.xml. > > > > If there are specific differences to the default values that we want, we > > maybe will want to use a different app.xml for each, but defaults.xml > > should be tied to a platform-version not to a workflow. > > > > -Michal > > > > > > On Sat, Sep 7, 2013 at 7:56 AM, Andrew Grieve <agri...@chromium.org> > wrote: > > > >> James - that's a nice goal, but I don't think it's feasible. Did you > have a > >> way to do that in mind? > >> > >> > >> On Fri, Sep 6, 2013 at 10:31 PM, James Jong <wjamesj...@gmail.com> > wrote: > >> > >>> I would like to see the defaults be applied in all cases. For > >>> consistency, less confusion, and easier documentation. If we add or > >> change > >>> the defaults in a release, both workflows should get it. In my mind, > the > >>> CLI platform config.xml should be equivalent to the bin/create one. > >>> > >>> -James Jong > >>> > >>> On Sep 6, 2013, at 11:06 AM, Michal Mocny <mmo...@chromium.org> wrote: > >>> > >>>> I thought we were adding support for the last bit (ie, app generic not > >>>> platform specific preferences) to "app.xml" which the helloworld > >> template > >>>> should ship with and bin/create should apply. > >>>> > >>>> -Michal > >>>> > >>>> > >>>> > >>>> On Fri, Sep 6, 2013 at 10:52 AM, Ian Clelland <iclell...@chromium.org > >>>> wrote: > >>>> > >>>>> The template version needs to be a complete config file for the > sample > >>> app, > >>>>> though. You should be able to run bin/create and then build the > Hello, > >>>>> Cordova app immediately. > >>>>> > >>>>> defaults.xml is supposed to be stripped right down to just the > >>>>> platform-specific options which, in theory, shouldn't need to be > >>> specified > >>>>> by every app. > >>>>> > >>>>> At least that's how it works in my head :) The distinction may be > less > >>>>> important than I'm imagining. > >>>>> > >>>>> Ian > >>>>> > >>>>> > >>>>> On Fri, Sep 6, 2013 at 9:08 AM, Michal Mocny <mmo...@chromium.org> > >>> wrote: > >>>>> > >>>>>> If the content or format of defaults.xml and the initial config.xml > >>> will > >>>>> be > >>>>>> different then we should ship both -- but I don't think they will > be, > >>> so > >>>>> I > >>>>>> think we just ship the template with a defaults file. > >>>>>> > >>>>>> -Michal > >>>>>> > >>>>>> > >>>>>> On Thu, Sep 5, 2013 at 11:19 PM, Ian Clelland < > >> iclell...@chromium.org > >>>>>>> wrote: > >>>>>> > >>>>>>> On Thu, Sep 5, 2013 at 5:16 PM, James Jong <wjamesj...@gmail.com> > >>>>> wrote: > >>>>>>> > >>>>>>>> defaults.xml - Is that only used by CLI? And not used by > >> bin/create > >>>>>>>> scripts? > >>>>>>>> It was bit unclear to me from the description since both were > >>>>> mentioned > >>>>>>>> regarding the 2 xml files. > >>>>>>>> > >>>>>>> > >>>>>>> Yes, that's the idea. If you're using the bin/create scripts, then > >>>>> there > >>>>>> is > >>>>>>> a complete "config.xml" file in the template that will be used for > >>> your > >>>>>> new > >>>>>>> app. This is for strict backwards compatibility with anyone's > >> workflow > >>>>>> that > >>>>>>> doesn't currently include CLI. > >>>>>>> > >>>>>>> If you are using CLI, then we will construct a new config.xml file > >> for > >>>>>> you > >>>>>>> instead, from three sources: defaults.xml, which specifies all of > >> the > >>>>>>> platform defaults; the various plugin.xml files, and your app's > >>>>>> config.xml > >>>>>>> file. The end-result should be the same, but you have a clear place > >> to > >>>>>>> override the defaults for your app that lives outside of your > >>> platforms > >>>>>>> directory, and the cordova team has a clear place to set those same > >>>>>>> defaults. > >>>>>>> > >>>>>>> Ian > >>>>>>> > >>>>>>> > >>>>>>>> > >>>>>>>> The new CLI prepare flow makes sense to me. > >>>>>>>> > >>>>>>>> -James Jong > >>>>>>>> > >>>>>>>> On Sep 5, 2013, at 2:21 PM, Michal Mocny <mmo...@chromium.org> > >>>>> wrote: > >>>>>>>> > >>>>>>>>> We briefly discussed JSON and the two thoughts were: > >>>>>>>>> > >>>>>>>>> (1) We like it, but really what does it buy us? > >>>>>>>>> (2) This change is at the moment 100% compatible with all current > >>>>>>>> workflows > >>>>>>>>> (including upgrades from 3.0->3.1), and we think that's important > >>>>> for > >>>>>>>>> headache-less adoption. JSON would obviously not be. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> Regarding where to store the defaults, we had thought it would be > >> a > >>>>>>> file > >>>>>>>>> bundled with the platform, perhaps in bin/templates? > >>>>>>>>> > >>>>>>>>> -Michal > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> On Thu, Sep 5, 2013 at 12:38 PM, Brian LeRoux <b...@brian.io> > wrote: > >>>>>>>>> > >>>>>>>>>> The logic flow is much safer in this method. Where do you think > >>>>>>>> default.xml > >>>>>>>>>> should live? (Maybe it doesn't have to exist and defaults can > >> just > >>>>>> be > >>>>>>>> vars > >>>>>>>>>> in the logic that does the processing?) > >>>>>>>>>> > >>>>>>>>>> Is this our opportunity to move to JSON? > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> On Thu, Sep 5, 2013 at 8:21 AM, Braden Shepherdson < > >>>>>>> bra...@chromium.org > >>>>>>>>>>> wrote: > >>>>>>>>>> > >>>>>>>>>>> config.xml as a build artifact for less suffering and easier > >>>>>> upgrades > >>>>>>>>>>> Terminology > >>>>>>>>>>> > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> “platform config.xml” refers to the platform-specific > >>>>> config.xml > >>>>>>>>>> files, > >>>>>>>>>>> eg. platforms/android/res/xml/config.xml. This is the final > >>>>> file > >>>>>>> read > >>>>>>>>>> by > >>>>>>>>>>> Cordova at runtime. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> “app config.xml” refers to the top-level config.xml found in > >>>>>>>>>>> www/config.xml. > >>>>>>>>>>> > >>>>>>>>>>> Why the current situation is suffering > >>>>>>>>>>> > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Chiefly, the platforms/foo/.../config.xml files are both the > >>>>>> input > >>>>>>>> and > >>>>>>>>>>> output of munging by Plugman and the user. This sucks. It makes > >>>>>>>>>>> automatic upgrades difficult because everybody has a customized > >>>>>>>>>>> config.xml > >>>>>>>>>>> file in their platforms. It also makes plugin rm harder and > >>>>> less > >>>>>>>>>> robust > >>>>>>>>>>> in > >>>>>>>>>>> CLI than it needs to be. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Currently only some tags in the app config.xml are actually > >>>>>>> honoured. > >>>>>>>>>>> Others are ignored, and this has tripped up our users. > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> Goals > >>>>>>>>>>> > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> bin/create workflow is unchanged. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Final content of the platform config.xml file is unchanged, > >>>>>> though > >>>>>>>> the > >>>>>>>>>>> method of building it in the CLI can change. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> CLI workflow is unchanged, in terms of what a user types. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> platform config.xml stops being both input and output under > >>>>> CLI. > >>>>>>> Less > >>>>>>>>>>> munging, and easier upgrades. In short, platform config.xml > >>>>> files > >>>>>>>>>> become > >>>>>>>>>>> build artifacts. > >>>>>>>>>>> > >>>>>>>>>>> What we propose to do about it > >>>>>>>>>>> > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> First, adjust the platform template (used by bin/create) to > >>>>>> contain > >>>>>>>>>> two > >>>>>>>>>>> files: > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> defaults.xml, which is versioned, immutable, and tucked away > >>>>>>>>>>> somewhere (only CLI accesses it) and contains only the > >>>>>>>>>>> Cordova-specified > >>>>>>>>>>> platform defaults, such as the preferences, any default > >>>>>>>>>>> whitelist entries, > >>>>>>>>>>> etc. It does NOT contain any <author>, <name> or other such > >>>>>>> tags. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> platform config.xml, which is the same as it currently is, a > >>>>>>>>>> complete > >>>>>>>>>>> config.xml for the HelloWorld app. This means behavior is > >>>>>>>> unchanged > >>>>>>>>>>> for people who are not using CLI. Plugman still munges this > >>>>>> file > >>>>>>>>>> and > >>>>>>>>>>> outputs back to it, same as now. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Second, adjust the CLI’s cordova create template so that its > >>>>>>>> top-level > >>>>>>>>>>> app config.xml contains <name>, <author>, <content>, etc. - > >>>>> tags > >>>>>>> the > >>>>>>>>>>> user is likely to edit. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Third, modify the CLI so that the new cordova prepare flow is: > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Delete the old platform config.xml. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Copy the defaults.xml to config.xml. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Re-run the Plugman config munging for every plugin, > >>>>> modifying > >>>>>>> the > >>>>>>>>>>> fresh platform config.xml. (The order here is deliberately > >>>>>>>>>> undefined; > >>>>>>>>>>> plugins should already not be relying on this.) > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Run the config munging for the app’s config.xml as well. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> This results in a freshly built, build-artifact platform > >>>>>>>>>> config.xml. > >>>>>>>>>>> Users should not be editing it; their top-level app > >>>>> config.xml > >>>>>>>>>>> has the last > >>>>>>>>>>> word and will override any settings the defaults or plugins > >>>>>>> might > >>>>>>>>>>> make. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Note that this means we shouldn’t be needlessly setting > >>>>>>>> defaults > >>>>>>>>>>> in the app config.xml, since this might prevent plugins > >>>>>> from > >>>>>>>>>>> changing > >>>>>>>>>>> things that need changing. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Fourth, extend the app config.xml format so that it can have > >>>>>>>>>>> <platform>tags, like a plugin.xml. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> Into this it can put platform-specific things like > >>>>>>> splashscreens, > >>>>>>>>>>> preferences and other things, rather than mixing these > >>>>>> together > >>>>>>> in > >>>>>>>>>>> the > >>>>>>>>>>> config. > >>>>>>>>>>> - > >>>>>>>>>>> > >>>>>>>>>>> In particular, it can have <config-file> tags in the usual > >>>>>>> format > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>> > >>> > >> > >