The Go maintainers have conflated what a library is and where a library is. That's an important distinction that should not be glossed over like this.
The Go maintainers have conflated what a library is and where a library is. That's an important distinction that should not be glossed over like this.
Since day one we have forked every (external) package dependency in production code to our own github account and for all the constant complaining I hear, it has been very little heartache for us.
This has worked great, we periodically update our forks from upstream, once or twice a year need to fixup our code to match, run our unit tests an integration tests, do a little manual testing and call it good.
I wish the go get tool would download to the vendor folder when using GO15VENDOREXPERIMENT
I'm not the parent but your question is completely valid -- trying to get dependencies of dependencies sends us down a very deep rabbit hole.
This is usually where dynamic linking and shrinkwrapping[1]/vendoring[2] start entering serious discussions.
[1] http://blog.goguardian.com/nerds/shrinkwrap-not-just-for-mur...
Unless there is a bug, or new feature we needed, we often just update this stuff when we update the Go release we are using.
My thoughts; KISS until more complexity is actually needed.
Well, isn't that exactly what this artice is about…?
I think this depends on whether GitHub treats URLs as just URLs, or more generally as URIs. Based on their documentation [0], they refer to them as URIs, which means they are intended to represent both Location and Identity [1]. The domain represents the "where", the repository path is the "what".
They should be able to change their URL schema relatively easily, by including the appropriate redirects - a mapping from the old schema to the new. Which is exactly the strategy they discuss in the HTTP Redirects section.
(edit) Formatting
[0] : https://en.wikipedia.org/wiki/Uniform_Resource_Identifier
repositories { ... }
block and then specify (with maven naming scheme) dependencies { compile "group:name:version" }
where group might be something like org.apache, name might be apache-commons and version might be 2.5.On the positive side, some of the complexity comes through enforcing some standards about what packages go into central - in particular you must have a properly declared license, developer contact information, and GPG sign your releases. Which are things other language ecosystems would do well to enforce.
If by "standard" you meant "default", like Maven Central is the default in Maven, here I have some news for you as well. Bintray is the default in Mac OS' Homebrew, Android Studio, Groovy's @Grab, and first class citizen in Gradle, Ivy and SBT.
I can kind of understand the Go devs' POV which is that basically at Google all source code vendored under one giant tree, but that's just not how not-Google companies operate.
Rust is looking really attractive to me lately, as soon as I figure out lifetimes and the borrow checker completely....