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 >> >> >> >> >>>>>>>>> >> >> >> >> >>>>>>>>> >> >> >> >> >>>>>>> >> >> >> >> >>>>>>> >> >> >> >> >>>>> >> >> >> >> >>>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>