You see this for Java projects where the whole source code is nested half a dozen folders deep (src/com/foo/bar/baz/myproject/...) so i don't think it's unfamiliar.
Some tools are fundamental. A tool to solve the problem of executing dependant tasks is one of them.
Solutions to these fundamental problems tend to be implemented early on. Some of those early solutions were poor, and have fallen out of use. Some of them were good, and have been refined in the intervening years, and hence are still with us.
A good tool to solve a fundamental problem is still useful, no matter how old it is.
I understand it'd be a pain to have Go setup, but once it is setup, it is great, When I write Go programs
I do
`$ cd /go/src/github.com/thewhitetulip/Tasks` `$ Tasks go build -o tasks` `$ Tasks ./tasks`
Go allows you to do a go get reponame and it'll do the git clone stuff for you.
that is nothing short of amazing as far as code management is concerned. I love it.
You can feel free to have any repo path you want :D
You obviously didn't vendor your dependencies in your project's vendor directory.
https://golang.org/cmd/go/#hdr-Vendor_Directories
I think the example there is hard to follow. Perhaps with more standard package names, such as golang.org/x/net or a popular github.com package, instead of the made up foo, baz, quux and so on it would be easier to understand exactly what advantages vendoring gives you.
You shouldn't have to!
A good dependency management system will produce reproducible builds via dependency versioning without any need to "vendor" anything.
It would be better if Go just downloaded all `go get` packages to some default fixed directory (%appdata%/go or whatever), and then the code the people manually download/write could live anywhere.
Otherwise you can write the other language code in the $GOPATH itself.
We had a small benchmark tool written in Go. And people simply couldn't build it, they always came to me after banging their head trying.
This is basically what all of them did:
And obviously it failed because it wasn't in a "src" folder (it was in a git, projects or code folder) nor had the $GOPATH environment variable set. But worst was probably the missing import path structure, i.e. "github.com/<company>/<repo>" that people simply just didn't get.They just want to clone anywhere and run "go build".