Really? Does it flatten dependencies or will I still have potentially more
than one context package for example?

On Sun, Jul 17, 2016, 00:11 William Madison <wmadison...@gmail.com> wrote:

> FWIW, go build in versions >= 1.6* is basically equivalent to what GB buys
> us just with a different structure for the vendor directory (i.e /vendor vs
> /vendor/src in GB). The gb-vendor plugin is a jewel in its simplicity and
> makes fetching/managing vendored packages very easy, which is what I love
> about GB as a build tool specifically when the end product is a binary. If
> I were authoring a library I'd definitely stick to the go tool chain given
> that GB projects aren't go gettable.
>
> - Will
>
> On Sat, Jul 16, 2016 at 5:44 PM, Henrik Johansson <dahankz...@gmail.com>
> wrote:
>
>> Well they have issues too of course. The most recent left-pad debacle is
>> most striking.
>>
>> In general they do have support for versions all of them. Not all are
>> SemVer, the older seems more fluid on the interpretation of what is a valid
>> version but they have it. There are often many or at least a couple of
>> different tools for each language for example Maven, Gradle, SBT, Ivy etc
>> in the Java landscape. Ruby has a number of such tools as does python. In
>> the static compiled family the two outstanding examples are Haskell and
>> Rust.
>> Cabal has had it's problems but the community seems happy with it. The
>> Rust people are all on board with Cargo it seems and it is afaik the
>> solution that would work best for Go to look at. It is in essence a
>> declarative file with dependencies (and some extra stuff) which would be
>> super easy for Go to adopt. Even having the go tool do it seems very
>> easy. The different tools behave differently in how they work to resolve
>> compatible versions. Some have a range notation, some have default
>> selection and some bail. Bailing or allowing the user to choose seems the
>> best possibly with a range notation.
>>
>> This you are no doubt aware of already, I just wanted to list where I
>> come from when I say that it is considered solved.
>> Not that all possible kinks are hammered out but that it seems to work in
>> a way that a large number of people are OK with.
>>
>> Personally I really like the vendor concept but the thing where one of my
>> deps can have the same type as a dep as I do but from my perspective the
>> types of these two are different when they really are the same seems very
>> fishy.
>> Flattening makes it better but then something can break because the wrong
>> "version" was chosen.
>> Having a common versioning scheme would make this much easier and safer
>> even if we occasionally would run into the diamond problem. At least we
>> would know that there was an issue and can take steps to fix or work around
>> it.
>>
>> Having versions would also not hinder tools to resolve and fetch all deps
>> every time if they want to nor does it stop vendoring. In my mind what we
>> have today is hidden versions without any easy way to see or choose what we
>> want.
>> Having the go tool be version aware may be a too invasive change but it
>> would not be hard.
>>
>> I don't know, I feel as though I am missing something. It feels so
>> obvious to me that when you guys don't see it the same I start wondering
>> what I missed.
>>
>> Hope it makes some sense.
>>
>
>>
>>
>> On Sat, Jul 16, 2016, 19:13 Ian Lance Taylor <i...@golang.org> wrote:
>>
>>> On Sat, Jul 16, 2016 at 5:29 AM, Henrik Johansson <dahankz...@gmail.com>
>>> wrote:
>>> > For repeatable builds there are many ways and tools that work fine, Gb
>>> is
>>> > not unique in this respect.
>>> >
>>> > I don't get why this should be a controversial topic however. It seems
>>> to be
>>> > an issue only in the go community.
>>> > In all the other languages (newer more modern anyway) it is considered
>>> a
>>> > solved problem.
>>> > Sure different tools pop up now and then but they all work in the same
>>> > general way.
>>> >
>>> > I am sure there is a reason but why can't we just settle on the same
>>> idea
>>> > that everyone else is doing?
>>> > Applications and libraries would all then use the same principal way of
>>> > resolving dependencies and different tools could handle conflicts in
>>> > whatever way the author likes. Vendoring or not it would work
>>> regardless.
>>>
>>> My understanding is that what other languages do also has problems.
>>> If there is a clear solution here, I certainly think we should adopt
>>> it.
>>>
>>> Can you explain what it is that other languages do, and how we should
>>> change to do the same thing?
>>>
>>> Ian
>>>
>> --
>>
> You received this message because you are subscribed to the Google Groups
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to golang-nuts+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to