Hi Ian, all,
I'm sure the official docs for the 1.11 release will make all of this much easier to consume, but I still suspect there is an opportunity to help the early adopters with a lightweight wiki page?
In the interests of possibly helping others, I tried just now to put together a DRAFT / WIP of a possible wiki page that I just recommended in my prior post to this thread ...
I'm not an expert here, but rather this is the type of info I'd personally like to see, and I suspect might help others (IF someone more knowledgeable than me was to tweak, correct, and/or completely re-write this draft ;-) and hopefully it is lightweight enough that it is not too burdensome to create?
The biggest thing I'm actually making up in this draft below is the advice of whether or not right now it is better to use vgo vs. tip vs. beta2, but I'm hoping someone could comment on that.
Much of rest of the text in 'Advice for package maintainers' section is cribbed from tip documentation, and obviously what I put in this draft below is much (much!) shorter than the full doc, but my section below ends with a pointer back to tip documentation for full documentation. The intent of including that material is to give someone a flavor of what they would need to do, which hopefully leads to a feeling of "this doesn't seem to be too burdensome; let me try this out or learn more"... but without overwhelming them with all the details (and the full doc can cover more details).
In general, I tried to sprinkling in a few phrases along lines of "as of date X" to slightly help a future reader be more suspicious of older info (and to slightly increase the odds of triggering someone to delete stale info or update with more recent info).
In any event, here is a quick/rough DRAFT of a possible wiki page for comments (including perhaps "we don't need this", or whatever other feedback people might have):
###########################################################################
== Advice for early adopters of vgo / versioned Go modules ==
=== Introduction ===
Package versioning in Go is a rich topic, and this wiki page is intended to just give:
* a very brief introduction
* a statement of which software is currently recommended as the typical choice for an early adopter (vgo vs. tip vs. betaN, etc.)
The recent work by the Go team on versioned Go modules started outside of the main repository with the vgo tool, but as of 2018-07-12 support for versioned Go modules has landed in the official main go repository [1].
As of 2018-07-12, there are various minor known issues, but quite a lot works very well.
=== Which software should I use? ===
Now that modules have landed in the main go repository, vgo is no longer recommended.
As of 2018-07-20, the recommendation instead is to please _get 1.11 beta2_ [2]. Alternatively, you can build from tip. [3]
=== Brief advice for package maintainers ===
The most important pieces of advice for package mainters:
1. Please start tagging your packages with release tags that follow semantic versioning
2. Add go.mod files if that makes sense for your project. Today's go.mod files will be understood by any future tooling.
Go 1.11 includes experimental support for Go modules, including a new module-aware 'go get' command. We intend to keep revising this support, while preserving compatibility, until it can be declared official (no longer experimental).
The quickest way to take advantage of the new Go 1.11 module support is to check out your repository into a directory outside GOPATH/src, create a go.mod file, and run go commands from within that file tree.
To start a new module, simply create a go.mod file in the root of the module's directory tree, containing only a module statement. The 'go mod' command can be used to do this:
In a project already using an existing dependency management tool like godep, glide, or dep, 'go mod -init' will also add require statements matching the existing configuration.
Once the go.mod file exists, no additional steps are required: go commands like 'go build', 'go test', or even 'go list' will automatically add new dependencies as needed to satisfy imports.
For more information, please see the full godoc documentation at tip [4] and the output of 'go help modules'.
== Some Additional Resources ==
_List of open Go modules bugs_
_Submitting a new Go modules bug_
###########################################################################
END DRAFT
###########################################################################
--thepudds