I think the issue here is: how far do we want to dictate the project
structure for a cordova-cli-generated app?

Merges kind of "evolved" out of an actual user who needed a viable use
case covered (thanks Michael Wolf!). It is where it is for really no
reason other than "this is a good feature to have." Consider it like a
first pass at an implementation. We can iterate on it to make it better.

One thing about the app/ proposal is that the stated objective is to
enable shipping a single directory to be able to recreate the native
projects. If that is the case, wouldn't we also have to move the plugins
into app/ ?

On 3/25/13 11:25 AM, "Braden Shepherdson" <bra...@chromium.org> wrote:

>They are, right now, a kind of middle ground. If you rm -rf'd the
>directory, it wouldn't be all better on the next cordova prepare; that's
>where we hope to reach soon.
>
>On the other hand, you definitely shouldn't be having code in them -
>native
>or otherwise - that didn't come from a plugin or from www/. So they could
>be reconstructed from data stored elsewhere, which makes them mostly a
>build artifact, and certainly not necessary to store in your source
>control.
>
>Braden
>
>
>On Mon, Mar 25, 2013 at 2:17 PM, Brian LeRoux <b...@brian.io> wrote:
>
>> While this might be our goal it is in no way true that ./platforms ia
>> build artifact today or anytime soon.
>>
>> On Mon, Mar 25, 2013 at 10:55 AM, Braden Shepherdson
>> <bra...@chromium.org> wrote:
>> > The same is /not/ true of the current structure, because one
>>(probably)
>> > doesn't want to be committing build artifacts like platforms/, or
>>cached
>> > third-party data like plugins/ into your git repo.
>> >
>> > The idea here is that everything under app/ is what you would keep in
>>git
>> > for a team working on an app: www, config.xml, docs, samples, etc.
>> Putting
>> > that content at the top-level instead means you have lots of extra
>>build
>> > artifact cruft in your git repo, or your devs just have to know that
>> > platforms/ and plugins/ are in .gitignore.
>> >
>> > Braden
>> >
>> >
>> > On Mon, Mar 25, 2013 at 1:45 PM, Brian LeRoux <b...@brian.io> wrote:
>> >
>> >> But, if you go up one level, the same is true w/ the current
>> >> structure. Its just an organizational difference? (Thats a perfectly
>> >> ok answer of course. Aesthetics and symmetry are plenty convincing
>> >> arguments.)
>> >>
>> >> In my view ./merges isn't your app. The ./merges dir is in parts of
>> >> your app on a per platform basis. Hence the logic for having it exist
>> >> at the same level as ./platforms.
>> >>
>> >> Having config.xml exist in the ../www does bother me.
>> >>
>> >>
>> >> On Mon, Mar 25, 2013 at 10:33 AM, Braden Shepherdson
>> >> <bra...@chromium.org> wrote:
>> >> > It allows easier cloning of your app (meaning the www, config.xml,
>>and
>> >> any
>> >> > samples and so on) into a self-contained directory. It also lets us
>> keep
>> >> > the user's app within a single top-level directory (rather than www
>> and
>> >> > merges and potentially more later).
>> >> >
>> >> > Because only the www (and merges) would get pulled into the actual
>> app,
>> >> any
>> >> > docs, samples, tests, or other miscellany in the git repo won't be
>> part
>> >> of
>> >> > the app.
>> >> >
>> >> >
>> >> > On Mon, Mar 25, 2013 at 1:19 PM, Brian LeRoux <b...@brian.io> wrote:
>> >> >
>> >> >> Ok, let me try again. What is precisely problem we are solving by
>> >> >> changing the structure? To be clear, I'm not really against or for
>> it.
>> >> >> I just don't understand why this is important.
>> >> >>
>> >> >>
>> >> >> On Mon, Mar 25, 2013 at 10:06 AM, Braden Shepherdson
>> >> >> <bra...@chromium.org> wrote:
>> >> >> > +1 is still a handy means of displaying your support or
>>otherwise.
>> >> >> >
>> >> >> > If you do want to version the platforms/ and plugins/ folders at
>> the
>> >> top
>> >> >> > level, you can do that. If you're versioning everything, then
>>you
>> >> should
>> >> >> be
>> >> >> > checking out that master repo, rather than the master repo and
>>then
>> >> the
>> >> >> app
>> >> >> > repo inside it, so it should all work fine.
>> >> >> >
>> >> >> > Braden
>> >> >> >
>> >> >> >
>> >> >> > On Mon, Mar 25, 2013 at 12:37 PM, Brian LeRoux <b...@brian.io>
>>wrote:
>> >> >> >
>> >> >> >> (Btw this isn't a vote thread guys.)
>> >> >> >>
>> >> >> >> On Mon, Mar 25, 2013 at 9:37 AM, Brian LeRoux <b...@brian.io>
>>wrote:
>> >> >> >> > So, what if you want to version the ./platorms folder? I
>>don't
>> like
>> >> >> >> > it, but ppl will do.
>> >> >> >> >
>> >> >> >> > On Mon, Mar 25, 2013 at 9:10 AM, James Jong <
>> wjamesj...@gmail.com>
>> >> >> >> wrote:
>> >> >> >> >> +1 for app folder and cordova create <app location>
>> >> >> >> >> I would like to see it support a git-URL or local.  It's
>>nice
>> to
>> >> have
>> >> >> >> it all neatly in app/  but can also see arguments for having
>>www/
>> as
>> >> >> >> top-level.
>> >> >> >> >>
>> >> >> >> >> -James Jong
>> >> >> >> >>
>> >> >> >> >> On Mar 25, 2013, at 10:32 AM, Braden Shepherdson <
>> >> >> bra...@chromium.org>
>> >> >> >> wrote:
>> >> >> >> >>
>> >> >> >> >>> A big +1 from me for this world, Michal's option 2.
>> >> >> >> >>>
>> >> >> >> >>> I want to be able to cordova create <some-git-URL>, and
>>have
>> it
>> >> >> create
>> >> >> >> an
>> >> >> >> >>> empty project where the app/ directory is the git repo.
>> >> >> >> >>>
>> >> >> >> >>> Then a full project might look like this:
>> >> >> >> >>>
>> >> >> >> >>> platforms/
>> >> >> >> >>>    android/
>> >> >> >> >>>    ios/
>> >> >> >> >>> plugins/
>> >> >> >> >>>    ...
>> >> >> >> >>> app/
>> >> >> >> >>>    merges/
>> >> >> >> >>>        ...
>> >> >> >> >>>    www/
>> >> >> >> >>>        ...
>> >> >> >> >>>    README.md
>> >> >> >> >>>    config.xml
>> >> >> >> >>>    docs/
>> >> >> >> >>>    etc...
>> >> >> >> >>>
>> >> >> >> >>> So I can have whatever meta-information I want inside my
>>app/
>> >> (and
>> >> >> >> >>> therefore my git repo) - tests, docs, samples, etc. - but
>>not
>> >> inside
>> >> >> >> the
>> >> >> >> >>> www that actually ships. This makes it sane to have just
>>the
>> >> app's
>> >> >> >> files in
>> >> >> >> >>> git, but not the platforms/ or plugins/ directories.
>> >> >> >> >>>
>> >> >> >> >>> Braden
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> >> >>> On Sun, Mar 24, 2013 at 6:02 PM, Michal Mocny <
>> >> mmo...@chromium.org>
>> >> >> >> wrote:
>> >> >> >> >>>
>> >> >> >> >>>> So a few questions:
>> >> >> >> >>>>
>> >> >> >> >>>> 0. Do we want to support app distribution?  Sample apps,
>>Test
>> >> >> Harness,
>> >> >> >> >>>> working in a team, open source projects.. hint at yes,
>>but we
>> >> could
>> >> >> >> just
>> >> >> >> >>>> leave that to be done manually.
>> >> >> >> >>>> 1. Do we want to support app documentation? Where would
>>you
>> put
>> >> it
>> >> >> if
>> >> >> >> you
>> >> >> >> >>>> wanted to ship it along with a app?
>> >> >> >> >>>> 2. Do we have any apps already using the merges/ folder?
>>  How do
>> >> >> they
>> >> >> >> ship
>> >> >> >> >>>> it?
>> >> >> >> >>>>
>> >> >> >> >>>> I suspect what would happen now is app devs would already
>> need
>> >> an
>> >> >> app
>> >> >> >> >>>> folder to keep all the pieces, would cordova create a
>> workspace,
>> >> >> and
>> >> >> >> >>>> link/copy over www/ and merges/.
>> >> >> >> >>>>
>> >> >> >> >>>> If we wanted to support app distribution (such that say
>> cordova
>> >> >> create
>> >> >> >> >>>> <path-to-app>), we would need to support importing from an
>> app
>> >> >> folder
>> >> >> >> (for
>> >> >> >> >>>> the two folder merges and www reason alone).  Yet we
>> currently
>> >> >> plan to
>> >> >> >> >>>> unpack that app folder inside the workspace.
>> >> >> >> >>>>
>> >> >> >> >>>> -Michal
>> >> >> >> >>>>
>> >> >> >> >>>>
>> >> >> >> >>>> On Sun, Mar 24, 2013 at 5:22 PM, Brian LeRoux <b...@brian.io>
>> >> wrote:
>> >> >> >> >>>>
>> >> >> >> >>>>> Ya no worries we'll advocate on best for the project vs
>>our
>> >> >> >> particular
>> >> >> >> >>>>> downstream. File path handling, while tedious, is most
>> >> certainly
>> >> >> not
>> >> >> >> a
>> >> >> >> >>>>> reason to block a reasonable change.
>> >> >> >> >>>>>
>> >> >> >> >>>>> I think this is reasonable but not convinced it is a win.
>> >> >> >> >>>>>
>> >> >> >> >>>>> On Fri, Mar 22, 2013 at 7:35 PM, Michal Mocny <
>> >> >> mmo...@chromium.org>
>> >> >> >> >>>> wrote:
>> >> >> >> >>>>>> Ah yes, I see what you are asking.  The point being that
>> >> phonegap
>> >> >> >> build
>> >> >> >> >>>>>> would need to change to work with the new structure.
>> >> >> >> >>>>>>
>> >> >> >> >>>>>> Its a fair point, and its important generally to not
>>harm
>> >> >> downstream
>> >> >> >> >>>>>> distributions on purpose, but I think we generally
>>should
>> do
>> >> >> whats
>> >> >> >> best
>> >> >> >> >>>>> for
>> >> >> >> >>>>>> cordova and give downstream every opportunity to adjust.
>>  With
>> >> >> this
>> >> >> >> >>>>>> particular proposal I can only image it would not be a
>> >> problem,
>> >> >> >> >>>>> especially
>> >> >> >> >>>>>> if they use the same tools internally (but the actual
>> phonegap
>> >> >> build
>> >> >> >> >>>> team
>> >> >> >> >>>>>> should speak here).
>> >> >> >> >>>>>>
>> >> >> >> >>>>>> -Michal
>> >> >> >> >>>>>>
>> >> >> >> >>>>>>
>> >> >> >> >>>>>> On Fri, Mar 22, 2013 at 10:27 PM, Tommy-Carlos Williams
>> >> >> >> >>>>>> <to...@devgeeks.org>wrote:
>> >> >> >> >>>>>>
>> >> >> >> >>>>>>> I just mean that build expects config.xml to be in www,
>> yeah?
>> >> >> >> >>>>>>>
>> >> >> >> >>>>>>>
>> >> >> >> >>>>>>>
>> >> >> >> >>>>>>> On 23/03/2013, at 1:12 PM, Michal Mocny <
>> mmo...@chromium.org
>> >> >
>> >> >> >> wrote:
>> >> >> >> >>>>>>>
>> >> >> >> >>>>>>>> But isn't the app incomplete without the merges
>>folder?
>> >>  Most
>> >> >> apps
>> >> >> >> >>>>>>> probably
>> >> >> >> >>>>>>>> don't use it, but for those that do, a zip of www
>>isn't
>> >> enough,
>> >> >> >> you
>> >> >> >> >>>>>>> already
>> >> >> >> >>>>>>>> need to ship more than just the www folder.  Creating
>>an
>> app
>> >> >> >> folder
>> >> >> >> >>>>> would
>> >> >> >> >>>>>>>> actually make the situation easier I think.
>> >> >> >> >>>>>>>>
>> >> >> >> >>>>>>>> project
>> >> >> >> >>>>>>>> - platforms
>> >> >> >> >>>>>>>> - ..
>> >> >> >> >>>>>>>> - plugins
>> >> >> >> >>>>>>>> - ...
>> >> >> >> >>>>>>>> - app(s?)
>> >> >> >> >>>>>>>> - www/
>> >> >> >> >>>>>>>> - merges/
>> >> >> >> >>>>>>>> - config.xml
>> >> >> >> >>>>>>>> - README.md
>> >> >> >> >>>>>>>> - docs/
>> >> >> >> >>>>>>>> - etc stuff that doesn't get copied into platform/
>> output on
>> >> >> build
>> >> >> >> >>>>>>>>
>> >> >> >> >>>>>>>>
>> >> >> >> >>>>>>>> (oh, and hey, notice the similarity in structure to
>> plugins?
>> >> >> just
>> >> >> >> >>>>>>> sayin..)
>> >> >> >> >>>>>>>>
>> >> >> >> >>>>>>>>
>> >> >> >> >>>>>>>>
>> >> >> >> >>>>>>>> On Fri, Mar 22, 2013 at 7:00 PM, Tommy-Carlos Williams
>> >> >> >> >>>>>>>> <to...@devgeeks.org>wrote:
>> >> >> >> >>>>>>>>
>> >> >> >> >>>>>>>>> Can I just ask a question about this?
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>>> Is the config.xml supposed to be compatible with
>> >> >> >> >>>> build.phonegap.comat
>> >> >> >> >>>>>>>>> all?
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>>> I ask because I could see a scenario where you might
>> want
>> >> to
>> >> >> use
>> >> >> >> >>>> the
>> >> >> >> >>>>> cli
>> >> >> >> >>>>>>>>> tools, but still utilise build.phonegap.com for other
>> >> >> platforms
>> >> >> >> >>>> (or
>> >> >> >> >>>>>>> even
>> >> >> >> >>>>>>>>> for the ones supported by the cli).
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>>> If the cli config.xml is "build" compatible, it makes
>> sense
>> >> >> for
>> >> >> >> it
>> >> >> >> >>>>> to be
>> >> >> >> >>>>>>>>> in the www folder so that the www folder can go
>> straight to
>> >> >> >> >>>>>>>>> build.phonegap.com.
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>>> On 23/03/2013, at 9:15 AM, Brian LeRoux <b...@brian.io>
>> >> wrote:
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>>>> I'm ok with ./merges at the same level as ./www but
>>the
>> >> >> >> config.xml
>> >> >> >> >>>>>>>>>> inside of ./www bugs me too. I think having a root
>> level
>> >> >> ./www
>> >> >> >> >>>> just
>> >> >> >> >>>>>>>>>> works well mentally in that its obvious whats there,
>> what
>> >> it
>> >> >> >> does,
>> >> >> >> >>>>> and
>> >> >> >> >>>>>>>>>> who it effects. The ./merges folder is really just
>> stuff
>> >> that
>> >> >> >> gets
>> >> >> >> >>>>>>>>>> added to ./www in the right cases so having at the
>>same
>> >> >> depth is
>> >> >> >> >>>> ok
>> >> >> >> >>>>>>>>>> (for me).
>> >> >> >> >>>>>>>>>>
>> >> >> >> >>>>>>>>>> I get where you are coming from though.
>> >> >> >> >>>>>>>>>>
>> >> >> >> >>>>>>>>>> The real sticky bit is a config file hiding with the
>> app
>> >> >> >> >>>>>>>>>> implementation. It seems like that would live at the
>> root.
>> >> >> The
>> >> >> >> >>>> idea
>> >> >> >> >>>>> of
>> >> >> >> >>>>>>>>>> having it inside of ./www is a simple zip and
>>rename of
>> >> ./www
>> >> >> >> >>>> would
>> >> >> >> >>>>>>>>>> result in an installable package...but logically
>>with
>> our
>> >> >> >> tooling
>> >> >> >> >>>>> and
>> >> >> >> >>>>>>>>>> such that would be a build artifact that just lives
>>in
>> >> >> >> ./platforms
>> >> >> >> >>>>>>>>>> after we do our magic.
>> >> >> >> >>>>>>>>>>
>> >> >> >> >>>>>>>>>> =/
>> >> >> >> >>>>>>>>>>
>> >> >> >> >>>>>>>>>>
>> >> >> >> >>>>>>>>>> On Fri, Mar 22, 2013 at 1:24 PM, Michal Mocny <
>> >> >> >> >>>> mmo...@chromium.org>
>> >> >> >> >>>>>>>>> wrote:
>> >> >> >> >>>>>>>>>>> Paraphrasing our meeting notes today:
>> >> >> >> >>>>>>>>>>>
>> >> >> >> >>>>>>>>>>> * currently www/ has to have config.xml inside it,
>> docs
>> >> >> inside
>> >> >> >> >>>> it,
>> >> >> >> >>>>>>>>> README
>> >> >> >> >>>>>>>>>>> etc
>> >> >> >> >>>>>>>>>>> * merges folder is already a sibling of www/ but
>>its
>> >> >> logically
>> >> >> >> >>>>> part of
>> >> >> >> >>>>>>>>> the
>> >> >> >> >>>>>>>>>>> app.
>> >> >> >> >>>>>>>>>>> * So, why not move everything that isn't the actual
>> >> assets
>> >> >> of
>> >> >> >> the
>> >> >> >> >>>>> app
>> >> >> >> >>>>>>>>>>> itself out of www?
>> >> >> >> >>>>>>>>>>> * Option 1: move everything out into the root.
>> >> >> >> >>>>>>>>>>> * harder for git versioning your app, since cordova
>> >> >> artifacts
>> >> >> >> >>>>>>>>>>> (platforms, plugins) are inside.
>> >> >> >> >>>>>>>>>>> * Option 2: make a new top level "app/" folder that
>> holds
>> >> >> >> merges/
>> >> >> >> >>>>> and
>> >> >> >> >>>>>>>>> www/
>> >> >> >> >>>>>>>>>>> and manifestes etc
>> >> >> >> >>>>>>>>>>> * then you can just clone/install an app into one
>> >> location
>> >> >> >> >>>>>>>>>>>
>> >> >> >> >>>>>>>>>>>
>> >> >> >> >>>>>>>>>>> And I'll throw out a third option: Create an "apps"
>> >> folder
>> >> >> >> which
>> >> >> >> >>>>> can
>> >> >> >> >>>>>>>>> have
>> >> >> >> >>>>>>>>>>> any number of named apps, like plugins.
>> >> >> >> >>>>>>>>>>>
>> >> >> >> >>>>>>>>>>>
>> >> >> >> >>>>>>>>>>> I think (2) should be totally doable (just change
>>some
>> >> >> default
>> >> >> >> >>>>> paths
>> >> >> >> >>>>>>> in
>> >> >> >> >>>>>>>>> the
>> >> >> >> >>>>>>>>>>> tooling) and is a strict improvement (minus the
>> hassle of
>> >> >> >> moving
>> >> >> >> >>>>> your
>> >> >> >> >>>>>>>>> files
>> >> >> >> >>>>>>>>>>> around the first time for app devs).  (3) I think
>>is
>> >> >> >> interesting,
>> >> >> >> >>>>> but
>> >> >> >> >>>>>>>>> is a
>> >> >> >> >>>>>>>>>>> bit of a departure.
>> >> >> >> >>>>>>>>>>>
>> >> >> >> >>>>>>>>>>> -Michal
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>>>
>> >> >> >> >>>>>>>
>> >> >> >> >>>>>>>
>> >> >> >> >>>>>
>> >> >> >> >>>>
>> >> >> >> >>
>> >> >> >>
>> >> >>
>> >>
>>

Reply via email to