I like the clear distinction of plugman workflow vs cordova workflow, so I wouldn't want to drop the separation. If this goes well, the contents of plugman (and cordova) will be argument parsing, help/usage messages, and forwarding into cordova-lib, so they will not need updating often unless the interface changes.
I do like to proposal to add plugin publishing functionality to cordova-cli, which we can easily do once we have a common cordova-lib which both cli call into. Lets leave that for a follow-on task after the restructuring (filed: CB-6447). -Michal On Tue, Apr 15, 2014 at 9:36 AM, Andrew Grieve <agri...@chromium.org> wrote: > I think everyone is on board with the idea that modules should be used to > enable sharing code, and for code organization. > > Two problems that are happening in practice: > - Multiple pull requests (plugman and CLI) to make a change > - Code duplication between the repositories > > Both of these are solved by moving all common code into the same git > repository. > > I think whether to make additional npm packages should happen as a > follow-up, and as concrete proposals (e.g. Let's publish CordovaError into > an npm package) > > It's a bit weird that a lot of cordova's CLI is in a module called > "cordova", but you need to install "plugman" to publish to the registry. > > Analogy: there's not an "npm-cli" separate from "npm-publisher". > > How about folding the functionality of plugman into cordova? > - "cordova publish" > - "cordova owner add" > - "cordova plugin add --platform > <ios|amazon-fireos|android|blackberry10|wp7|wp8> --project <directory> > --plugin <name|url|path> [--plugins_dir <directory>] [--www <directory>] > [--variable <name>=<value> [--variable <name>=<value> ...]] > > This would: > - Only one tool for devs to install (aptly named "cordova") > - "cordova --help" as one entry-point to what's available > - Simply release process > - Fewer release steps > - Single set of release notes (no more having to duplicate fixes to > plugman in CLI's release notes) > > For users that are accustomed to using plugman directly, we could make > plugman depend on CLI to have it continue working. > > On Mon, Apr 14, 2014 at 12:16 PM, Brian LeRoux <b...@brian.io> wrote: > > > If we manage to get down to 1 module === 1 function then its doubtful > we'd > > have much advantage to the atomic commits thing. I'm cool w/ starting w/ > > one repo and seeing where it leads. Sort of a graduation step thing. > > > > > > On Mon, Apr 14, 2014 at 12:02 PM, Michal Mocny <mmo...@chromium.org> > > wrote: > > > > > Alright then, lets do 3+ npm packages: cordova (cli only), plugman (cli > > > only), and cordova-lib (or something similarly named, TBD, > suggestions?). > > > As cordova-lib refactors to have some useful self-contained utils, we > > will > > > move those to dedicated npm modules published separately. > > > > > > However, we are currently debating the use of a single vs multiple git > > > repos to hold the modules. > > > > > > The advantages of single repo: > > > - Easier to create atomic commits to multiple npm modules (there are > > often > > > multi-part changes), which is especially true for external Pull > Requests. > > > - More likely that we will be willing to move utils out to dedicated > npm > > > modules if there is no additional repo/release management overhead. > > > > > > The advantages of multiple repos: > > > - Easier to isolate github issues (though we don't really use these), > and > > > Pull Requests. Note: does not affect git logs, which are easy to > filter > > > based on subdirectory. > > > - We already have cordova-cli and plugman repos anyway. > > > - "Feels" cleaner? > > > > > > -Michal > > > > > > > > > > > > > > > On Mon, Apr 14, 2014 at 2:13 PM, Anis KADRI <anis.ka...@gmail.com> > > wrote: > > > > > > > To brian and steve's points I think it's a bad idea to move common > code > > > to > > > > cordova-cli. I don't think we want another cordova-coho. > > > > > > > > > > > > On Fri, Apr 11, 2014 at 5:36 PM, Brian LeRoux <b...@brian.io> wrote: > > > > > > > > > It would be very good for folks to understand the benefit of using > > npm > > > is > > > > > that we will likely only have to release these small modules very > > > rarely. > > > > > Once the module is out the dependency part is done. This is vastly > > > > simpler > > > > > workflow, smaller codebases to reason about, quicker to test, and > > > easier > > > > to > > > > > ship small releases. If the small module is only applicable to > > Corodva > > > > that > > > > > is fine and good. > > > > > > > > > > This is less complicated. It is easier to share code that is in > > > modules. > > > > > Adding them to the same repo is no different than adding it to the > > > > > package.json and require'ing it in from a programming perspective > > (but > > > it > > > > > does add overhead of a large codebase in a single repo). > > > > > > > > > > Having large monolith codebases is considered a poor practice in > Node > > > > based > > > > > projects and most of Cordova today is a Node based project. I > > recommend > > > > > learning more about the philosophy and reasoning for these > practices. > > > We > > > > > don't need to 'conform' to all Node-isms (like favoring callbacks > to > > > > > promises or streams to sync i/o operations) but the committers here > > > would > > > > > do well to understand those primitives and the motivations for > them. > > > > > > > > > > > > > > > > > > > > On Sat, Apr 12, 2014 at 5:42 AM, Mark Koudritsky < > kam...@google.com> > > > > > wrote: > > > > > > > > > > > On Fri, Apr 11, 2014 at 2:53 PM, Steven Gill < > > stevengil...@gmail.com > > > > > > > > > > wrote: > > > > > > ... > > > > > > > > > > > > > > > > > > > I'd love to get more details about your proposed first patch. > > What > > > do > > > > > you > > > > > > > mean by "Move internal implementation details of plugman into > > > > > > > cordova". I interpret it as move common functionality into cli, > > > make > > > > > > > plugman dependent on cli. > > > > > > > > > > > > Yes, that's the intention. > > > > > > > > > > > > > > > > > > > If that is the case, wouldn't it make more sense > > > > > > > to move the functionality into plugman since the cli already > > > requires > > > > > it? > > > > > > > > > > > > > There is no big difference which way to move the code as long as > > it's > > > > > easy > > > > > > to share, the change is very simple either way. The cli npm > package > > > > name > > > > > is > > > > > > "cordova" which is an argument towards keeping most of the logic > > > there > > > > > > because that's the name people know. For users the change will be > > > > > > transparent, plugman users will continue to "npm install plugman" > > and > > > > cli > > > > > > users will continue to "npm install cordova". > > > > > > > > > > > > I like the end goals of your proposal, in that we are working > > towards > > > > > > > smaller modules. I'm not sure if moving components from one > repo > > to > > > > > > another > > > > > > > is a better way to reach the end goal, instead of Mark's > original > > > > > > > suggestion of a third cordova-lib repo that both plugman + cli > > can > > > > > depend > > > > > > > on. > > > > > > > > > > > > The end goal of my proposal is simplified development workflow > > > without > > > > > > complicating release workflow. > > > > > > > > > > > > Right now I'm working on a new piece of code (dealing with plugin > > > deps > > > > > and > > > > > > versions) that should be used in both plugman and cli. While it > > seems > > > > > like > > > > > > it should be trivial, at a closer look there is currently no > clean > > > way > > > > to > > > > > > share such code between cli and plugman (just like xml helpers > are > > > > > cloned). > > > > > > At this stage that piece of code is nowhere close to being ready > > for > > > > > > release as a separate small module, but it has a good potential > to > > > > > > eventually become such module (though it will never be usable > > outside > > > > > > cordova). > > > > > > > > > > > > > > > > > > > > >