I've been using go modules in my company for several months now. Everything has "just worked." It's at least 1 order of magnitude faster than dep.<p>It's worth noting that go modules use a novel dependency resolution algorithm which is extremely simple to reason about/implement, fast, and produces more reliable builds than npm/bundler/cargo. That's why I was excited about it, anyway. It removes the ever-present NP-complete assumptions in this space, so from a computer science perspective it's extremely interesting.
I am eagerly awaiting the arrival of the module system, but please note, that it's still experimental, so not all fun and rainbows. As of now, the Go issue tracker still has 53 open issues with the "modules" label[1], and Go 1.11 should ship around August. The system works well for most cases, but there are still rough edges, especially around vendoring, undocumented or not-so-well documented behaviours, and features which may or may not be "in the scope" for the module system.<p>Overall, I am trying to be optimistic about the future of Go dependency management, but I am not planning to switch the projects I work on in my company from dep to Go modules until most of those rough edges are either smoothed, or officially recognised as "works as intended", with viable workarounds.<p>[1] <a href="https://github.com/golang/go/issues?q=is%3Aissue+is%3Aopen+label%3Amodules" rel="nofollow">https://github.com/golang/go/issues?q=is%3Aissue+is%3Aopen+l...</a>
Given it's 18.04, you could've `snap install go --channel=edge` to get go from master.<p>(all praise mwhudson for maintaining the Go snaps -- `snap info go` for the whole story).
I recently started to learn Go and everything has gone smoothly... except the bizarre, unfriendly GOPATH and forced project structure.<p>It was not fun when VS Code (with the Go plugin) would automatically remove my imports every time I saved the file because it couldn’t find it.
I haven’t followed the history of the feature, but could anyone explain why we had to wait until version 11 to be able to build a project from any location we wanted ? I’m having a hard time believing it’s purely for technical reasons, but then i don’t understand either what has changed that makes it a desirable feature now rather than before.
Go is forever changing the pathing and configuration. Even here we have:<p>> Very nice, go build ignored the vendor/ folder in this repository (because we’re outside $GOPATH)<p>and<p>> Oddly these are stored in $HOME/go/src/mod not the $GOCACHE variable that was added in Go 1.10<p>Maybe Go 2.0 will be stable.