Reviving this thread for 3.1 One thing that is not part of [1] is publishing all plugins and updating versions to our registry.
Could coho automate this process as well ? Basically we need to run "plugman publish cordova-plugin-*" after updating each plugin version. [1] http://wiki.apache.org/cordova/CuttingReleases On Thu, Sep 5, 2013 at 9:21 AM, Michal Mocny <mmo...@chromium.org> wrote: > On Wed, Sep 4, 2013 at 9:17 PM, Andrew Grieve <agri...@chromium.org> wrote: > >> >> >> >> On Wed, Sep 4, 2013 at 5:42 PM, Michal Mocny <mmo...@chromium.org> wrote: >> >>> >>> >>> >>> On Wed, Sep 4, 2013 at 5:39 PM, Michal Mocny <mmo...@chromium.org> wrote: >>> >>>> >>>> >>>> >>>> On Wed, Sep 4, 2013 at 3:18 PM, Andrew Grieve <agri...@chromium.org>wrote: >>>> >>>>> On Wed, Sep 4, 2013 at 3:15 PM, Andrew Grieve <agri...@chromium.org> >>>>> wrote: >>>>> >>>>> > >>>>> > >>>>> > >>>>> > On Wed, Sep 4, 2013 at 2:51 PM, Andrew Grieve <agri...@chromium.org >>>>> >wrote: >>>>> > >>>>> >> Responses inline. For all of them, I'll update the wiki to make >>>>> things >>>>> >> clear. >>>>> >> >>>>> >> >>>>> >> On Tue, Sep 3, 2013 at 12:54 PM, Michal Mocny <mmo...@chromium.org >>>>> >wrote: >>>>> >> >>>>> >>> For Strategy page: >>>>> >>> >>>>> >>> RE: Weekly Releases -- do we skip a release if there is nothing >>>>> >>> significant >>>>> >>> to push, or do we release so long as there is at least one patch? >>>>> >>> >>>>> >> I'd say skip. >>>>> >> >>>>> >> >>>>> >> >>>>> >>> RE: Cadence Releases -- "These releases include: platform repos, >>>>> >>> cordova-js, mobile-spec, cordova-docs, cordova-cli, >>>>> cordova-plugman" -- >>>>> >>> clarifying that "include" for the sem-ver projects means only >>>>> packaging >>>>> >>> into a zip/tarball, not that we bump versions numbers during a >>>>> cadence >>>>> >>> release? Or do we bump sem-ver as well? >>>>> >>> >>>>> >> >>>>> >> cordova-js, mobile-spec, cordova-docs, cordova-cli: Update their >>>>> versions >>>>> >> to the current CadVer >>>>> >> plugman: Probably should be removed from this list. >>>>> >> platform-repos: semver bump if there were any changes since prev >>>>> release. >>>>> >> >>>>> >> >>>>> >> >>>>> >>> ====== >>>>> >>> >>>>> >>> For plugin release page: >>>>> >>> "# Edit version within plugin.xml based off of changes." --- >>>>> this >>>>> >>> means >>>>> >>> "deduce the semantic effect on version" right? IE, is it a >>>>> >>> major/minor/point release? >>>>> >>> >>>>> >> Yes (will update wording) >>>>> >> >>>>> >>> >>>>> >>> Generally, how do we prevent changes from sneaking in to core >>>>> plugins >>>>> >>> during the time it takes release master to make the changes? The >>>>> release >>>>> >>> master has to commit back to Changelog. Perhaps he/she makes that >>>>> change >>>>> >>> directly on master, and we rebase that change back into dev after >>>>> the >>>>> >>> release? That way, we don't read from dev branch once a release >>>>> process >>>>> >>> is >>>>> >>> started. >>>>> >>> >>>>> >> Hrm, how about instead of merging dev->master, we merge CHANGELOG.md >>>>> >> commit -> master. >>>>> >> >>>>> > Actually, this will work fine as-is so long as you don't git pull in >>>>> the >>>>> > middle of things. going to leave as-is. >>>>> >>>> >>>> You'll need to pull again in order to push if a commit snuck in, no? >>>> >>>> The steps right now seem to be: pull dev, Update Changelog and VERSION, >>>> push to dev. Which may perhaps be automated into such a small window that >>>> it doesn't matter, but if it includes reviewing each change and testing, >>>> then it may mean opportunity for new changes to sneak into master. >>>> >>>> >>>>> > >>>>> >> >>>>> >> >>>>> >>> >>>>> >>> "For each plugin that had unreleased commits .. increment the >>>>> micro" -- >>>>> >>> why? >>>>> >>> >>>>> >> So that the version on dev is greater than the version on master. >>>>> >>>> I still don't understand. If the plugin had no unreleased commits, then >>> master version didn't increment, and dev version should remain > master >>> version without a bump, no? Perhaps its supposed to say, for each plugin >>> that *had* a release? >>> >> Sounds right to me. "had unreleased commits" == "had a release", no? >> > > Okay thats my confusion. A plugin may have commits which we decide are not > important enough to warrant releasing (you clarified that earlier). So > "had unreleased commits" to me meant "all plugins whose commits on dev are > not being released to master at this moment". May want to clarify the > wiki, but at least we are on the same page. > > >> >> >>> >>> >>>> >> >>>>> >> >>>>> >>> >>>>> >>> TEST section -- suggest adding a not to the top of the guide so >>>>> that you >>>>> >>> create mobile-spec BEFORE starting the release. This way, you >>>>> create a >>>>> >>> project with the old versions of plugins more easily. >>>>> >>> >>>>> >> >>>>> >> Good idea. >>>>> >> >>>>> > Actually - going to wait on this as well. It's unlikely that even >>>>> before >>>>> you start that you'll have the old versions of things checked out (more >>>>> likely you have some in-between releases state). Once we have the >>>>> registry, >>>>> we can do this easily. >>>>> >>>>> >>>>> > >>>>> >>> ====== >>>>> >>> >>>>> >>> Generally these looks really good (haven't finished reading Cadence >>>>> >>> release >>>>> >>> doc yet, will comment on that soon). However, while I love the code >>>>> >>> snippets for suggested commands, some of them look like they >>>>> wouldn't >>>>> >>> work >>>>> >>> if you copy&paste them. Perhaps we should go through the docs on >>>>> the >>>>> >>> next >>>>> >>> release and make it clear which are verbatim commands and which are >>>>> just >>>>> >>> documentation-with-code. >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> On Tue, Sep 3, 2013 at 12:18 PM, Andrew Grieve < >>>>> agri...@chromium.org> >>>>> >>> wrote: >>>>> >>> >>>>> >>> > Finally finished updating the wiki's instructions to follow this >>>>> >>> proposal. >>>>> >>> > >>>>> >>> > Summary of changes: >>>>> >>> > >>>>> >>> > https://wiki.apache.org/cordova/VersioningAndReleaseStrategy >>>>> >>> > - Explains our versioning strategy (SemVer vs CadVer) >>>>> >>> > >>>>> >>> > https://wiki.apache.org/cordova/CommitterWorkflow >>>>> >>> > - Extracted Pull Requst Processing into its own page ( >>>>> >>> > ProcessingPullRequests< >>>>> >>> > https://wiki.apache.org/cordova/ProcessingPullRequests> >>>>> >>> > ) >>>>> >>> > - Added a "Which Branch to Commit To" section >>>>> >>> > - Minor tweaks to commit process: >>>>> >>> > - Mention `git rebase origin/master -i` >>>>> >>> > - Marked some steps as optional >>>>> >>> > - Linked to post-review (rbtools) install page >>>>> >>> > - Made it more explicit that you should test commits you >>>>> patch in >>>>> >>> > >>>>> >>> > https://wiki.apache.org/cordova/StepsForPluginRelease >>>>> >>> > - Process to go through to update core plugins >>>>> >>> > >>>>> >>> > https://wiki.apache.org/cordova/StepsForToolsRelease >>>>> >>> > - Process to go through to update plugman / CLI >>>>> >>> > >>>>> >>> > https://wiki.apache.org/cordova/CuttingReleases >>>>> >>> > - Made it clear that it applies to Cadence Releases >>>>> >>> > - Expanded "What to test" section >>>>> >>> > - Added releasing of CLI to the steps >>>>> >>> > - Moved "Official Apache Releases" to the bottom >>>>> >>> > >>>>> >>> > To all steps release steps pages, I've added an "Update >>>>> CHANGELOG.md" >>>>> >>> step. >>>>> >>> > iOS has done this forever, but I think all repos should do it. >>>>> >>> > >>>>> >>> > Would love if these pages could be read by all committers. >>>>> Especially >>>>> >>> the >>>>> >>> > StepsForToolsRelease page, as I've never done a tools release >>>>> (and so >>>>> >>> was >>>>> >>> > somewhat guessing). >>>>> >>> > >>>>> >>> > Another part I'm unsure of is where the mapping to platform repo >>>>> >>> versions >>>>> >>> > is within CLI. >>>>> >>> > >>>>> >>> > There are still some points to discuss, which I will send separate >>>>> >>> emails >>>>> >>> > about :) >>>>> >>> > >>>>> >>> > >>>>> >>> > On Sun, Aug 18, 2013 at 11:30 PM, Ian Clelland < >>>>> iclell...@google.com> >>>>> >>> > wrote: >>>>> >>> > >>>>> >>> > > On Fri, Aug 16, 2013 at 5:41 PM, Andrew Grieve < >>>>> agri...@chromium.org >>>>> >>> > >>>>> >>> > > wrote: >>>>> >>> > > >>>>> >>> > > > After the discussion on the group hangout + some sleeping, I >>>>> think >>>>> >>> > we're >>>>> >>> > > > ready for a proposal... So here it is! >>>>> >>> > > > - It does *not* propose any changes to our Deprecation policy. >>>>> >>> That's >>>>> >>> > for >>>>> >>> > > > another thread (which I'll get to on Monday if no one else >>>>> does) :) >>>>> >>> > > > - It does not contain how we store version numbers. That's >>>>> covered >>>>> >>> > here: >>>>> >>> > > > http://wiki.apache.org/cordova/StoringRepoVersionsDesign >>>>> >>> > > > >>>>> >>> > > > Once we get to a consensus, I'll transfer this to the wiki. >>>>> Please >>>>> >>> > > review & >>>>> >>> > > > comment! >>>>> >>> > > > >>>>> >>> > > > There are two kinds of versions: >>>>> >>> > > > 1. "SemVer" (www.semver.org) >>>>> >>> > > > - Used by platforms, plugman, cli >>>>> >>> > > > 2. "CadVer" (just made that up :P "Cadence Version") >>>>> >>> > > > - Used by cli, mobile-spec, cordova-js >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > I like this, as it separates the fast-moving, feature-based >>>>> semantic >>>>> >>> > > version of any given component from the API level, and >>>>> >>> interoperability >>>>> >>> > > promises, of the "Cadence Version". >>>>> >>> > > >>>>> >>> > > What, then, is the granularity of the Cadence Version intended >>>>> to >>>>> >>> be? Is >>>>> >>> > is >>>>> >>> > > the "3" in Cordova 3.0, and will stay at 3 until it hits 4 next >>>>> year? >>>>> >>> > (Or, >>>>> >>> > > just as descriptively, we can say that it is at "Cordova >>>>> Fancy-Pants" >>>>> >>> > now, >>>>> >>> > > and eventually progress to "Cordova Enraged-Wombat") >>>>> >>> > > >>>>> >>> > > Or is it going to have major and minor components as well, and >>>>> >>> advance >>>>> >>> > > roughly monthly, as before? >>>>> >>> > > >>>>> >>> > > >>>>> >>> > > > There are two kinds of releases: >>>>> >>> > > > 1. Patch releases >>>>> >>> > > > - Pretty much any repo can release a patch release to fix >>>>> bugs >>>>> >>> at >>>>> >>> > any >>>>> >>> > > > time (but should have good reason) >>>>> >>> > > > 2. Cadence releases >>>>> >>> > > > - These follow the 10 releases per year, as enumerated on: >>>>> >>> > > > http://wiki.apache.org/cordova/RoadmapProjects >>>>> >>> > > > >>>>> >>> > > > cordova-plugins: >>>>> >>> > > > - Commit only to the `dev` branch >>>>> >>> > > > - Use semver for them. >>>>> >>> > > > - If the version on master is "3.0.0", then the version on >>>>> dev >>>>> >>> will >>>>> >>> > > > start at "3.0.1-dev". >>>>> >>> > > > - If any commit goes in that add a feature, then change the >>>>> >>> version >>>>> >>> > on >>>>> >>> > > > dev to "3.1.0-dev" >>>>> >>> > > > - If any commit goes in that makes an >>>>> non-backwards-compatible >>>>> >>> > change, >>>>> >>> > > > then change the version on dev to "4.0.0-dev" >>>>> >>> > > > - Release plugins at most once a week (Thursdays?) >>>>> >>> > > > - This *does* mean that a change that goes in Wednesday >>>>> could >>>>> >>> end up >>>>> >>> > > > being released the next day. >>>>> >>> > > > - Release plugins all at the same time so that we can blog >>>>> the >>>>> >>> release >>>>> >>> > > > notes. >>>>> >>> > > > - Release process: >>>>> >>> > > > 1. Create a JIRA issue to track the status of the release. >>>>> >>> > > > a. Comments should be added to this bug after each >>>>> top-level >>>>> >>> step >>>>> >>> > > > below is taken >>>>> >>> > > > 2. For each plugin that has unreleased commits on their >>>>> `dev` >>>>> >>> > branch: >>>>> >>> > > > a. Update its CHANGELOG file with a prettified version >>>>> of "git >>>>> >>> > log" >>>>> >>> > > > b. Update its plugin.xml version by removing the "-dev" >>>>> suffix >>>>> >>> > > > c. Merge dev -> master (without pushing) >>>>> >>> > > > d. Update its plugin.xml version by incrementing the >>>>> micro and >>>>> >>> > > adding >>>>> >>> > > > "-dev" (as described above) >>>>> >>> > > > 3. Combine all plugin changelogs into a Release >>>>> announcement >>>>> >>> blog >>>>> >>> > post >>>>> >>> > > > on cordova-website. >>>>> >>> > > > a. Steps for this exist in cordova-website's README.md >>>>> >>> > > > 4. Test >>>>> >>> > > > a. Create mobilespec using the old versions of plugins >>>>> >>> > > > b. Perform a "plugin upgrade" for plugins that have >>>>> changes >>>>> >>> (right >>>>> >>> > > > now, this means doing a `plugin remove` followed by a `plugin >>>>> add` >>>>> >>> > > > c. Run through mobilespec, ensuring to do manual tests >>>>> that >>>>> >>> relate >>>>> >>> > > to >>>>> >>> > > > changes in the changelog >>>>> >>> > > > 5. Push! >>>>> >>> > > > a. Push all branches >>>>> >>> > > > b. Push the blog post >>>>> >>> > > > >>>>> >>> > > > cordova-plugman: >>>>> >>> > > > - Commit to master always >>>>> >>> > > > - Release only when necessary. >>>>> >>> > > > - Release process: >>>>> >>> > > > 1. For releases that increment the minor or major, email >>>>> the >>>>> >>> dev >>>>> >>> > list >>>>> >>> > > > to let others know about your intent to release (include >>>>> changelog) >>>>> >>> > > > a) Wait for at least one +1 >>>>> >>> > > > 2. Increment the version within package.json >>>>> >>> > > > 3. Update RELEASENOTES.md with the changes for this >>>>> release >>>>> >>> > > > 4. Push to npmjs.org >>>>> >>> > > > * In order to push, you must be given push access to >>>>> the npm >>>>> >>> > > module. >>>>> >>> > > > * To do so, ask one of the existing module maintainers >>>>> >>> (listed >>>>> >>> > > here: >>>>> >>> > > > https://npmjs.org/package/plugman) >>>>> >>> > > > 5. Post a release announcement on the cordova blog (for >>>>> feature >>>>> >>> > > > releases only) >>>>> >>> > > > a. Steps for this exist in cordova-website's README.md >>>>> >>> > > > b. Not necessary for patch releases, but feature >>>>> releases >>>>> >>> should >>>>> >>> > > > mention significant bugs fixed by previous patch releases. >>>>> >>> > > > >>>>> >>> > > > No JIRA: The process is light-weight enough that a JIRA issue >>>>> isn't >>>>> >>> > > > necessary for tracking. >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > cordova-cli: >>>>> >>> > > > - Commit to master, release from release branches (2.9.x, >>>>> 3.0.x, >>>>> >>> etc) >>>>> >>> > > > - Versioned using "$COROVA_VERSION-$CLI_VERSION" >>>>> >>> > > > - E.g. 3.0.0-0.5.1 >>>>> >>> > > > - The first version component is the "cadence version", >>>>> and >>>>> >>> has its >>>>> >>> > > > minor incremented whenever the platform repository that it >>>>> lazy >>>>> >>> loads >>>>> >>> > by >>>>> >>> > > > default is changed >>>>> >>> > > > - E.g. 3.0.0 uses cordova-blackberry@3.0.0, >>>>> >>> cordova-ios@3.0.0, >>>>> >>> > > > cordova-android@3.0.0 >>>>> >>> > > > - E.g. 3.1.0 uses cordova-blackberry@3.1.0, >>>>> >>> cordova-ios@3.0.1, >>>>> >>> > > > cordova-android@4.0.0 >>>>> >>> > > > - E.g. 3.2.0 uses cordova-blackberry@3.1.1, >>>>> >>> cordova-ios@3.1.0, >>>>> >>> > > > cordova-android@4.0.1 >>>>> >>> > > > - E.g. 3.2.1 uses cordova-blackberry@3.1.2, >>>>> >>> cordova-ios@3.1.0, >>>>> >>> > > > cordova-android@4.0.1 >>>>> >>> > > > - The version number of cordova-cli will be the version >>>>> number >>>>> >>> that >>>>> >>> > we >>>>> >>> > > > advertise on our website, blogs & docs >>>>> >>> > > > - Platform version numbers will use semver, and not be >>>>> >>> > referenced >>>>> >>> > > > - Release process for patch releases: >>>>> >>> > > > 1. cherry-pick commits from master -> latest release >>>>> branch >>>>> >>> > > > 2. Increment package.json's micro version >>>>> >>> > > > 3. Update RELEASENOTES.md >>>>> >>> > > > 4. Push to npmjs.org >>>>> >>> > > > * In order to push, you must be given push access to >>>>> the npm >>>>> >>> > > module. >>>>> >>> > > > * To do so, ask one of the existing module maintainers >>>>> >>> (listed >>>>> >>> > > here: >>>>> >>> > > > https://npmjs.org/package/cordova) >>>>> >>> > > > - Release process for minor version >>>>> >>> > > > - Same as patch release, and in addition: >>>>> >>> > > > 1. Email the dev list to let others know about your >>>>> intent to >>>>> >>> > > release >>>>> >>> > > > (include changelog) >>>>> >>> > > > a. Wait for at least one +1 >>>>> >>> > > > 2. Post a release announcement on the cordova blog (for >>>>> >>> feature >>>>> >>> > > > releases only) >>>>> >>> > > > a. Steps for this exist in cordova-website's README.md >>>>> >>> > > > b. Not necessary for patch releases, but feature >>>>> releases >>>>> >>> > should >>>>> >>> > > > mention significant bugs fixed by previous patch releases. >>>>> >>> > > > - Release process for major version: >>>>> >>> > > > - Refer to platform release process. >>>>> >>> > > > >>>>> >>> > > > cordova platforms, mobile-spec, cordova-js: >>>>> >>> > > > - Same as before (as documented on >>>>> >>> > > > http://wiki.apache.org/cordova/CuttingReleases) >>>>> >>> > > > - Except: >>>>> >>> > > > - Platforms versions to use semver. This *does* mean that >>>>> they >>>>> >>> will >>>>> >>> > > > diverge from each other. >>>>> >>> > > > - cordova-js and cordova-mobile-spec to use the "cadence >>>>> >>> version" >>>>> >>> > > > (first part of cordova-cli's version) >>>>> >>> > > > - No longer update cordova-app-template >>>>> >>> > > > - Blog post will include changelog for all changes since >>>>> >>> previous >>>>> >>> > > > platforms release. >>>>> >>> > > > - JIRA issue should have a comment that lists the platform >>>>> >>> versions >>>>> >>> > > > that are referenced by the cadence version. >>>>> >>> > > > >>>>> >>> > > > JIRA workflow: >>>>> >>> > > > - When issues are closed, the "fixed version" should be set >>>>> to >>>>> >>> the >>>>> >>> > > > cadence version. >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > Andrew >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > On Thu, Aug 8, 2013 at 4:18 PM, Andrew Grieve < >>>>> >>> agri...@chromium.org> >>>>> >>> > > > wrote: >>>>> >>> > > > >>>>> >>> > > > > >>>>> >>> > > > > >>>>> >>> > > > > >>>>> >>> > > > > On Wed, Aug 7, 2013 at 8:49 PM, Michael Brooks < >>>>> >>> > > mich...@michaelbrooks.ca >>>>> >>> > > > >wrote: >>>>> >>> > > > > >>>>> >>> > > > >> > >>>>> >>> > > > >> > Plugins and CLI tools I think we should just ship >>>>> >>> continuously. >>>>> >>> > The >>>>> >>> > > > >> >>>>> >>> > > > > Why do you think these should be shipped continuously >>>>> instead of >>>>> >>> on a >>>>> >>> > > > > regular cadence? Note that I think they should be as well, >>>>> but >>>>> >>> I'm >>>>> >>> > > trying >>>>> >>> > > > > to figure out why the tools & plugins are different from the >>>>> >>> > platforms. >>>>> >>> > > > > >>>>> >>> > > > > >>>>> >>> > > > >> > only question that remains in the 'how' of that is >>>>> versioning. >>>>> >>> > Mike >>>>> >>> > > > >> > Brookes has advocated semver schema here wherein we >>>>> version >>>>> >>> > > platforms >>>>> >>> > > > >> > separately from the tools using a compound version >>>>> number. An >>>>> >>> > > example >>>>> >>> > > > >> > of this might be 3.0.0-0.14.3 wherein 3.0.0 represents >>>>> our >>>>> >>> > platforms >>>>> >>> > > > >> > while 0.14.3 represents the CLI tool itself. >>>>> >>> > > > >> >>>>> >>> > > > >> >>>>> >>> > > > >> I only advocate semver for node modules and you can expect >>>>> that >>>>> >>> I'll >>>>> >>> > > be >>>>> >>> > > > >> pushing this on cordova-cli soon. :) >>>>> >>> > > > >> >>>>> >>> > > > >> Node modules use semver. Regardless of whether it's >>>>> effective or >>>>> >>> > not, >>>>> >>> > > > it's >>>>> >>> > > > >> what the community uses and as developers we should >>>>> attempt to >>>>> >>> > respect >>>>> >>> > > > and >>>>> >>> > > > >> adhere to it. >>>>> >>> > > > >> However, Cordova uses a different type of versioning >>>>> scheme. >>>>> >>> > > > >> >>>>> >>> > > > >> The CLI tool needs to represent both of these versioning >>>>> >>> schemes. >>>>> >>> > > > >> >>>>> >>> > > > >> - The Cordova version is most important, because it >>>>> describe >>>>> >>> what >>>>> >>> > > > version >>>>> >>> > > > >> of Cordova the CLI uses. >>>>> >>> > > > >> - The node module version is important to modules consuming >>>>> >>> > > cordova-cli. >>>>> >>> > > > >> You have no idea how frustrating cordova-cli's current >>>>> >>> versioning is >>>>> >>> > > wrt >>>>> >>> > > > >> to >>>>> >>> > > > >> the phonegap-cli. >>>>> >>> > > > >> >>>>> >>> > > > >> This is why a version such as 3.0.0-0.10.4 works extremely >>>>> well. >>>>> >>> > It's >>>>> >>> > > > >> distributing version 3.0.0 of Cordova. The node module >>>>> itself is >>>>> >>> > > version >>>>> >>> > > > >> 0.10.4. It's also semantically valid in semver, so it's >>>>> >>> compatible >>>>> >>> > > with >>>>> >>> > > > >> npm. >>>>> >>> > > > >> >>>>> >>> > > > >> Michael >>>>> >>> > > > >> >>>>> >>> > > > >> >>>>> >>> > > > >> On Wed, Aug 7, 2013 at 1:27 PM, Andrew Grieve < >>>>> >>> agri...@chromium.org >>>>> >>> > > >>>>> >>> > > > >> wrote: >>>>> >>> > > > >> >>>>> >>> > > > >> > On Wed, Aug 7, 2013 at 12:49 PM, Brian LeRoux < >>>>> b...@brian.io> >>>>> >>> wrote: >>>>> >>> > > > >> > >>>>> >>> > > > >> > > I think keeping the cadence on the core platforms makes >>>>> >>> sense. >>>>> >>> > > That >>>>> >>> > > > is >>>>> >>> > > > >> > > where the bulk of logic lives, it is susceptible to 3rd >>>>> >>> party >>>>> >>> > > issues >>>>> >>> > > > >> > > like new iDEs and SDKs, and having that regular >>>>> cadence in >>>>> >>> > > lockstep >>>>> >>> > > > >> > > makes issue tracking easier to discuss with the >>>>> community. >>>>> >>> > > > >> >>>>> >>> > > > > I agree that keeping the number of different version >>>>> numbers to a >>>>> >>> > > minimum >>>>> >>> > > > > makes things easier to track. >>>>> >>> > > > > I don't really follow your logic about IDEs and SDKs... This >>>>> >>> would be >>>>> >>> > > an >>>>> >>> > > > > argument to *not* synchronize releases I think, since >>>>> >>> > iOS/Android/WP/BB >>>>> >>> > > > do >>>>> >>> > > > > not synchronize their SDK releases :P >>>>> >>> > > > > I don't think we can apply the cadence argument to >>>>> platforms, >>>>> >>> but not >>>>> >>> > > to >>>>> >>> > > > > tools & plugins. Why would platforms be different in this >>>>> >>> respect? >>>>> >>> > > > > >>>>> >>> > > > > > > >>>>> >>> > > > >> > > Plugins and CLI tools I think we should just ship >>>>> >>> continuously. >>>>> >>> > > The >>>>> >>> > > > >> > > only question that remains in the 'how' of that is >>>>> >>> versioning. >>>>> >>> > > Mike >>>>> >>> > > > >> > > Brookes has advocated semver schema here wherein we >>>>> version >>>>> >>> > > > platforms >>>>> >>> > > > >> > > separately from the tools using a compound version >>>>> number. >>>>> >>> An >>>>> >>> > > > example >>>>> >>> > > > >> > > of this might be 3.0.0-0.14.3 wherein 3.0.0 represents >>>>> our >>>>> >>> > > platforms >>>>> >>> > > > >> > > while 0.14.3 represents the CLI tool itself. >>>>> >>> > > > >> > > >>>>> >>> > > > >> > > I am not a fan of semver as that it is almost wholly >>>>> >>> conceptual >>>>> >>> > > and >>>>> >>> > > > >> > > thusly non-enforcable. It is a nice framework for >>>>> reasoning >>>>> >>> but >>>>> >>> > > ppl >>>>> >>> > > > >> > > ignore half of the rules devaluing its promise. Also, >>>>> it was >>>>> >>> > > > conceived >>>>> >>> > > > >> > > originally as a solution for globally installed >>>>> packages >>>>> >>> which >>>>> >>> > > isn't >>>>> >>> > > > >> > > really an issue in modern situations. That said, >>>>> having a >>>>> >>> > > versioning >>>>> >>> > > > >> > > scheme that exists, is well documented, and generally >>>>> >>> understood >>>>> >>> > > are >>>>> >>> > > > >> > > all positives for me. It would mean our deprec policy >>>>> could >>>>> >>> push >>>>> >>> > > the >>>>> >>> > > > >> > > version numbers up quickly (which is fine). >>>>> >>> > > > >> > > >>>>> >>> > > > >> > > It is important to remember the reason for versioning, >>>>> for >>>>> >>> our >>>>> >>> > > case, >>>>> >>> > > > >> > > is issue tracking and resolution but as our ecosystem >>>>> grows >>>>> >>> it >>>>> >>> > > will >>>>> >>> > > > >> > > also play a very important role in dependency >>>>> management. >>>>> >>> > > Especially >>>>> >>> > > > >> > > between plugins. More discreet versions: the better. >>>>> >>> > > > >> >>>>> >>> > > > > With the latest <engine> tag work being done ( >>>>> >>> > > > > https://issues.apache.org/jira/browse/CB-4490), platforms >>>>> as >>>>> >>> well as >>>>> >>> > > > > plugins will be checked using semver. These checks will >>>>> likely >>>>> >>> work >>>>> >>> > > > better >>>>> >>> > > > > if we try and follow semver. AFAICT, we mostly do already >>>>> follow >>>>> >>> it, >>>>> >>> > > with >>>>> >>> > > > > the exception of our deprecation policy. >>>>> >>> > > > > >>>>> >>> > > > > >>>>> >>> > > > >> > > >>>>> >>> > > > >> > > (Andrew I think you should start a separate thread >>>>> about >>>>> >>> killing >>>>> >>> > > off >>>>> >>> > > > >> > > cordova-js and moving into platforms for loading now >>>>> that we >>>>> >>> > have >>>>> >>> > > > >> > > mostly removed the plugins. I am very much in favor!) >>>>> >>> > > > >> > > >>>>> >>> > > > >> > Yeah, I regretted this almost immediately. Since this >>>>> thread >>>>> >>> is >>>>> >>> > > > >> focusing on >>>>> >>> > > > >> > the platforms, I'll do just that! >>>>> >>> > > > >> > >>>>> >>> > > > >> > >>>>> >>> > > > >> > > >>>>> >>> > > > >> > > >>>>> >>> > > > >> > > On Tue, Aug 6, 2013 at 1:43 PM, Andrew Grieve < >>>>> >>> > > agri...@chromium.org >>>>> >>> > > > > >>>>> >>> > > > >> > > wrote: >>>>> >>> > > > >> > > > Want to have this as a discussion starter. >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > We've previously established that: >>>>> >>> > > > >> > > > 1. Releases for plugman & CLI will not be tied to >>>>> platform >>>>> >>> > > > releases >>>>> >>> > > > >> > > > 2. Releases to plugins will not be tied to platform >>>>> >>> releases >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > That's not to say we shouldn't sometime co-ordinate >>>>> them >>>>> >>> with >>>>> >>> > > > >> platform >>>>> >>> > > > >> > > > releases, but I think there would need to be a >>>>> compelling >>>>> >>> > reason >>>>> >>> > > > to >>>>> >>> > > > >> > > couple >>>>> >>> > > > >> > > > them. >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > I'm wondering if it makes sense to not tie platform >>>>> >>> releases >>>>> >>> > > > >> together >>>>> >>> > > > >> > > > either? E.g. Allow an update to cordova-ios >>>>> separately >>>>> >>> from >>>>> >>> > > > >> > > > cordova-blackberry10. >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > Possible Advantages: >>>>> >>> > > > >> > > > - Releases will (hopefully) occur more frequently. >>>>> Don't >>>>> >>> > need >>>>> >>> > > to >>>>> >>> > > > >> wait >>>>> >>> > > > >> > > for >>>>> >>> > > > >> > > > synchronization with other platforms to do a release. >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > Possible Disadvantages: >>>>> >>> > > > >> > > > - Might make for too many releases & spam our >>>>> users with >>>>> >>> > > release >>>>> >>> > > > >> > notes >>>>> >>> > > > >> > > > too often >>>>> >>> > > > >> > > > - Might make us lazy and release platforms too >>>>> >>> infrequently >>>>> >>> > > > >> > > > - Might make version numbers for platforms not >>>>> >>> correspond >>>>> >>> > > > >> date-wise >>>>> >>> > > > >> > > with >>>>> >>> > > > >> > > > version numbers of other platforms (e.g. 3.1 ios != >>>>> 3.1 >>>>> >>> > android) >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > Other considerations: >>>>> >>> > > > >> > > > cordova-js is a common piece here. Perhaps that >>>>> could be >>>>> >>> > > pulled >>>>> >>> > > > >> out >>>>> >>> > > > >> > as >>>>> >>> > > > >> > > > well? >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > Option 1: Bundle the exec bridge, platform bootstrap >>>>> & >>>>> >>> plugin >>>>> >>> > > > loader >>>>> >>> > > > >> > with >>>>> >>> > > > >> > > > the platform, and have the rest available as a >>>>> plugin. >>>>> >>> > > > >> > > > Option 2: Bundle exec bridge + platform bootstrap >>>>> with the >>>>> >>> > > > platform, >>>>> >>> > > > >> > > bundle >>>>> >>> > > > >> > > > the plugin loader with plugman, put the rest in a >>>>> plugin >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > For reference, the only non-exec-bridge / start-up >>>>> code I >>>>> >>> can >>>>> >>> > > see >>>>> >>> > > > >> is: >>>>> >>> > > > >> > > > ./cordova.js <--- hooks addEventListener + has exec >>>>> >>> bridge >>>>> >>> > > logic >>>>> >>> > > > >> > > > ./common/argscheck.js <--- strictly a helper for >>>>> plugins >>>>> >>> > > > >> > > > ./common/base64.js <--- exec bridge depends on this >>>>> >>> > > > >> > > > ./common/builder.js <--- should be folded into >>>>> >>> > modulemapper.js >>>>> >>> > > > >> > > > ./common/channel.js <--- start-up code needs this >>>>> >>> > > > >> > > > ./common/init.js <--- start-up code >>>>> >>> > > > >> > > > ./common/modulemapper.js <--- start-up code >>>>> >>> > > > >> > > > ./common/pluginloader.js <--- loads plugins on >>>>> start-up >>>>> >>> > > > >> > > > ./common/urlutil.js <--- recently added helper for >>>>> >>> plugins >>>>> >>> > > > >> > > > ./common/utils.js <--- mostly misc stuff that may >>>>> be >>>>> >>> mostly >>>>> >>> > > > >> unused? >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > There's also: >>>>> >>> > > > >> > > > ./windows8/windows8/commandProxy.js >>>>> >>> > > > >> > > > which I assume is exec bridge releated. >>>>> >>> > > > >> > > > >>>>> >>> > > > >> > > > I think that argscheck & urlutil would be >>>>> well-suited as >>>>> >>> > > > stand-alone >>>>> >>> > > > >> > > > plugins that other plugins depend on. >>>>> >>> > > > >> > > >>>>> >>> > > > >> > >>>>> >>> > > > >> >>>>> >>> > > > > >>>>> >>> > > > > >>>>> >>> > > > >>>>> >>> > > >>>>> >>> > >>>>> >>> >>>>> >> >>>>> >> >>>>> > >>>>> >>>> >>>> >>> >>