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