Like I said in my initial proposal to use shrinkwrap the minimum
requirement is that is included when publishing to npm, is the only way
that we can trace problems and what are the bits that end user is using in
case of a problem.
I don't want for committers to waste time troubleshooting something that is
not at fault of cordova code but in a node module provided by 3rd party
that we depend down the chain.

Michael,
   I agree with having specific versions for our, and I think we should
move forward and be explicit about the version of dependencies in our
cordova's pacakge.json, and update them as we see it fit.

But here is the trick even if we put the specific version of the dependency
in our package.json that doesn't guarantee that down the dependency chain
different versions of node modules get install based on the time of the
install.

For example in cordova-lib we have an explicit dependency for request@2.22.0


But if you take a look at the pacakge.json of request@2.22.0 they don't use
explicit dependencies, so we don't have control to lock down the versions
use by request one end user can be using qs@0.6.0 and a later user can
install be using qs@0.6.1 . this is just a fake example but you see what I
mean when I say we can lock our level of dependencies only.

"dependencies": { "qs": "~0.6.0", "json-stringify-safe": "~4.0.0",
"forever-agent": "~0.5.0", "tunnel-agent": "~0.3.0", "http-signature":
"~0.10.0", "hawk": "~0.13.0", "aws-sign": "~0.3.0", "oauth-sign": "~0.3.0",
"cookie-jar": "~0.3.0", "node-uuid": "~1.4.0", "mime": "~1.2.9", "form-data"
: "0.0.8" },






On Thu, Sep 18, 2014 at 3:50 PM, Parashuram Narasimhan (MS OPEN TECH) <
panar...@microsoft.com> wrote:

> Also a quick question. Will we be withholding the 3.6.* release till we
> resolve this discussion?
>
> -----Original Message-----
> From: mikeywbro...@gmail.com [mailto:mikeywbro...@gmail.com] On Behalf Of
> Michael Brooks
> Sent: Thursday, September 18, 2014 12:18 PM
> To: dev@cordova.apache.org
> Subject: Re: [DISCUSS] shrinkwrap
>
> Personally, I've never got into shrinkwrap. In my opinion, it's another
> barrier to contribution and another place for mistakes to be made.
>
> I prefer on the old-school "shrinkwrap" approach, which is explicitly
> specifying each dependency version:
> https://github.com/phonegap/phonegap-cli/blob/master/package.json#L29-L40
>
> Discrete and explicit commits mark where and when dependencies are
> upgraded:
>
> https://github.com/phonegap/phonegap-cli/commit/e6d68e47a3a5cf4e9e6308467a6ae7716f6c5f9d
>
> It's clean. It's simple. It's an `npm install` away.
>
> With that said, shrinkwrap can be useful when our projects are using a
> fork of a dependency that hasn't accepted our patch. Do we have that use
> case in Cordova?
>
> In general, I lean the approach that is simpler, less error prone, and
> encourages new contributors.
>
> Thanks for starting this discussion Marcel!
> Michael
>
> On Thu, Sep 18, 2014 at 11:55 AM, Mark Koudritsky <kam...@google.com>
> wrote:
>
> > >
> > >
> > > Mark,
> > >   I want to understand better your statement "resulted in a great
> > > deal of confusion for contributors". Can you give more details about
> that.
> >
> >
> > One simple case I had myself was when debugging a suspected problem
> > with one of dependencies and wasting several hours to only discover
> > that the dependency version setting in package.json was ignored due to
> > presence of npm-shrinkwrap. It's stupid simple, but since shrinkwrap
> > is not a very common tool, people are not aware of it, or just forget
> that it's there.
> > While for us it's the center of this discussion, the average cordova
> > contributor is likely to not even remember what the decision was about
> > which repos should contain it when etc.
> >
>



-- 
Carlos Santana
<csantan...@gmail.com>

Reply via email to