News for hackers. Stuff that matters.
Re:The vgo proposal is accepted. Now what? by kibwen on Tuesday May 29, 2018 @10:59PM (#17184701)
> The standard answer is lock files which is extra bloat and leads to merge conflicts.

Bloat how? A lockfile is a handful of bytes. A thousand lockfiles could fit in the space of a single Go hello world binary. And I've never heard of a merge conflict from a lockfile. What are the actual arguments against lockfiles?

Re:The vgo proposal is accepted. Now what? by jasonwatkinspdx on Tuesday May 29, 2018 @11:37PM (#17184867)
There are situations where lock files, as implemented in some languages, can generate conflicts. Honestly I consider this a benefit, because I'd like to know about different expectations as early and explicitly as possible.

The bloat argument seems frankly absurd to me.

Re:The vgo proposal is accepted. Now what? by blaisio on Tuesday May 29, 2018 @11:54PM (#17184927)
It's pretty easy to get a merge conflict from a lock file. If two developers add a dependency and then try to merge their changes together, it can happen easily.
Re:The vgo proposal is accepted. Now what? by kibwen on Wednesday May 30, 2018 @12:08AM (#17184998)
In that scenario, you're going to get a merge conflict anyway in your manifest (e.g. in go.mod).
Re:The vgo proposal is accepted. Now what? by grahamedgecombe on Wednesday May 30, 2018 @05:28AM (#17186300)
It's probably easier to manually merge the manifest (as they're much more human-readable) than a lock file though.
Re:The vgo proposal is accepted. Now what? by steveklabnik on Wednesday May 30, 2018 @05:55AM (#17186400)
Lock files are easy enough to resolve that npm, in newer versions, will do it for you automatically, if you ask it to.
Re:The vgo proposal is accepted. Now what? by Groxx on Wednesday May 30, 2018 @06:51PM (#17192585)
That's correct behavior though - you can't merge "upgrade A" and "upgrade B" in isolation with literally any confidence that it works.
Re:The vgo proposal is accepted. Now what? by amasad on Tuesday May 29, 2018 @11:16PM (#17184784)
More things, more state = bloat. Don't you agree that if you can do something without holding state it's invariably simpler? That's what MVS does.

There's also cases where your lock file and manifest are not in agreement. e.g. https://github.com/rust-lang/cargo/issues/4100

Re:The vgo proposal is accepted. Now what? by kibwen on Tuesday May 29, 2018 @11:48PM (#17184910)
> Don't you agree that if you can do something without holding state it's invariably simpler?

Only if the two solutions under consideration are really solving the same problems. Sam Boyer alludes to this very thing in his discussion of MVS:

"If there are two algorithms that satisfy the same requirements, and only one is NP-complete, you pick the other one. That’s axiomatic. Moreover, if you have only an NP-complete algorithm for a particular problem, finding a less complex alternative that does the same job is an electrifying discovery. When such an alternative algorithm is proposed, however, the inevitable question to be answered is whether it actually does meet the original requirements. [...] But, in avoiding SAT, MVS also cuts out some of the complexities that I believe are essential to the domain. Being essential, the problems don’t go away when MVS ignores them. Instead, they’re redistributed into other, often less obvious places. If reading the vgo blog posts gave you a general sense of unease that you couldn’t put your finger on, that might’ve been you intuitively sensing some of these redistributions." https://sdboyer.io/vgo/intro/