blob: 9e1c7ffa1b2bd28fe3489b5882ebe708f2cc70ad [file] [log] [blame] [view]
Florin Pățanc3caba32018-02-24 22:07:48 +00001## Table of Contents
2
Florin Pățane7177be2018-02-24 22:31:52 +00003* [Initial paper](#initial-paper)
Florin Pățande0605e2018-02-24 22:39:47 +00004* [Current state](#current-state)
Florin Pățanc3caba32018-02-24 22:07:48 +00005* [Comment Threads](#comment-threads)
6* [Blog posts](#blog-posts)
Florin Pățan7687a8e2018-03-17 09:43:18 +00007* [Presentations](#presentations)
Florin Pățanc3caba32018-02-24 22:07:48 +00008* [Videos](#videos)
9* [Questions](#questions)
Nathan Kerr09db81c2018-03-21 16:22:46 -070010* [Projects Related to vgo](#projects-related-to-vgo)
Florin Pățanc3caba32018-02-24 22:07:48 +000011
Bryan C. Millsc9dcff92018-07-16 23:14:52 -040012This document collects thoughts and notes about versioned Go modules from the Gophers [#vgo](https://gophers.slack.com/messages/vgo) channel. Invites to Gophers Slack from [here](https://invite.slack.golangbridge.org/).
Florin Pățanabf2c9c2018-02-24 21:51:56 +000013
Florin Pățane7177be2018-02-24 22:31:52 +000014### Initial paper
Florin Pățanabf2c9c2018-02-24 21:51:56 +000015
Florin Pățane7177be2018-02-24 22:31:52 +000016The **initial paper** can be read here [https://research.swtch.com/vgo](https://research.swtch.com/vgo).
Florin Pățanc3caba32018-02-24 22:07:48 +000017
Florin Pățan67d80332018-03-20 20:20:43 +000018The **proposal** can be found here [https://github.com/golang/go/issues/24301](https://github.com/golang/go/issues/24301).
19
Florin Pățane7177be2018-02-24 22:31:52 +000020The **reference implementation**: [https://go.googlesource.com/vgo/](https://go.googlesource.com/vgo/) and mirrored on Github here: [https://github.com/golang/vgo](https://github.com/golang/vgo).
Florin Pățanfffd9742018-02-24 22:19:59 +000021
Bryan C. Millsda6dd572018-07-16 23:14:28 -040022The **[Go issue tracker](https://golang.org/issues)** is used to track bugs/feature requests. Issues should have the label `modules` and titles starting with `cmd/go` so that they can be automatically categorized. You can read the [existing issues here](https://golang.org/issues?q=is%3Aopen+is%3Aissue+label:modules).
23
24**Note**: The reference implementation was named `vgo`, but support for modules is being integrated into the `go` command itself. The feature within the `go` command is called versioned Go modules (or “[[modules]]” for short), not vgo”.
Florin Pățanfffd9742018-02-24 22:19:59 +000025
Florin Pățancb7780e2018-02-24 22:59:06 +000026***
27
Florin Pățancc6d77e2018-02-24 22:39:11 +000028### Current state
29
Bryan C. Millsda6dd572018-07-16 23:14:28 -040030Currently, module support is in active development in the main `go` repository, with changes mirrored back to the `vgo` repository. Module support still has some rough edges. You are encouraged to [[try it|Modules]] and give your feedback, share your experience with it, and contribute to it.
Florin Pățancc6d77e2018-02-24 22:39:11 +000031
32For any production workloads, use [dep](https://github.com/golang/dep), or migrate to it if you have not done so already.
33
Daniel M. Capellaa3d1ac12018-10-05 19:21:04 +000034The proposal has been accepted and vgo was merged into the Go tree in version 1.11.
Florin Pățancc6d77e2018-02-24 22:39:11 +000035
teddywing4c3adf72018-10-25 15:04:21 +020036You will be able to experiment with the module workflow from Go 1.11 as it is included as an experiment in this release.
Florin Pățan14b7a462018-05-24 13:45:25 +030037
Florin Pățancb7780e2018-02-24 22:59:06 +000038***
39
Florin Pățanc3caba32018-02-24 22:07:48 +000040### Comment Threads
Florin Pățanabf2c9c2018-02-24 21:51:56 +000041
Bryan C. Millsda6dd572018-07-16 23:14:28 -040042These are threads that have been created from the initial reference manifest:
Florin Pățanabf2c9c2018-02-24 21:51:56 +000043
Nathan Kerrdad3a932018-03-21 16:17:14 -070044- **golang-nuts ML:** [Go += Package Versioning](https://groups.google.com/forum/#!topic/golang-nuts/jFPz5yZCPcQ)
Damian Gryski0699cf92018-02-27 01:40:05 -080045
Nathan Kerrdad3a932018-03-21 16:17:14 -070046- **golang-dev ML:** [Go += Package Versioning](https://groups.google.com/d/topic/golang-dev/MNQwgYHMEcY/discussion), [vgo & semantic import versioning](https://groups.google.com/d/topic/golang-dev/Plc42fslQEk/discussion), [vgo and vendoring](https://groups.google.com/forum/#!topic/golang-dev/FTMScX1fsYk)
Florin Pățanabf2c9c2018-02-24 21:51:56 +000047- **HackerNews posts:** https://news.ycombinator.com/from?site=swtch.com
48- **Reddit:** https://www.reddit.com/domain/research.swtch.com/
49
Florin Pățan04e7bcd2018-03-19 20:20:36 +000050- **vgo & vendoring:** https://groups.google.com/forum/#!topic/golang-dev/FTMScX1fsYk
51- **vgo & semantic import versioning** https://groups.google.com/forum/#!topic/golang-dev/Plc42fslQEk
Florin Pățan14362c42018-03-19 20:19:54 +000052
Florin Pățanc3caba32018-02-24 22:07:48 +000053***
54
Florin Pățanabf2c9c2018-02-24 21:51:56 +000055### Blog posts
56
Florin Pățan9ced1762018-05-22 11:38:19 +030057- [A Proposal for Package Versioning in Go](https://blog.golang.org/versioning-proposal)
Florin Pățanb5099b02018-02-24 22:22:32 +000058- [Exploring vgo](https://www.calhoun.io/exploring-vgo/)
Florin Pățan3df89672018-02-24 22:46:09 +000059- [Semantic Import Versioning in the wild](http://blog.ezyang.com/2018/02/semantic-import-versioning-in-the-wild/)
Nathan Kerr5c0db902018-03-21 15:57:44 -070060- [Diving into vgo from the Golang project](https://www.wolfe.id.au/2018/03/01/diving-into-vgo-from-the-golang-project/)
Paul Jollycff68592018-04-09 06:30:02 +010061- [Notes on migrating to a Go mono repo](https://github.com/myitcv/x/wiki/Notes-on-migrating-to-a-Go-mono-repo)
Florin Pățan9ced1762018-05-22 11:38:19 +030062
Florin Pățanc3caba32018-02-24 22:07:48 +000063***
64
Florin Pățanbc2d8762018-03-17 09:44:22 +000065### Presentations
Florin Pățanabf2c9c2018-02-24 21:51:56 +000066
Brian Ketelsen9e7348d2018-08-14 12:30:10 -040067- [Repeatable Builds with vgo](https://talks.bjk.fyi/gcru18-vgo.html#/)
Florin Pățan7687a8e2018-03-17 09:43:18 +000068
69***
70
71### Videos
72
Florin Pățana93d68d2018-05-07 11:23:43 +030073- [Opening keynote: Go with Versions - GopherConSG 2018](https://www.youtube.com/watch?v=F8nrpe0XWRg)
Brian Ketelsen1da12672018-03-29 17:07:15 -040074- [1-Using vgo for Go Dependency Management](https://www.gophersnacks.com/programs/using-vgo-for-go-dependency-management) by Brian Ketelsen
75- [2-Adding External Dependencies with vgo](https://www.gophersnacks.com/programs/adding-external-dependencies-with-vgo)
Florin Pățan7edd71f2018-02-28 20:16:34 +000076- [Building Predictability into Your Pipeline](https://www.youtube.com/watch?v=sbrZfPgNmfw) with Russ Cox, Jess Frazelle, Sam Boyer, Pete Garcin.
Florin Pățanabf2c9c2018-02-24 21:51:56 +000077
Florin Pățanc3caba32018-02-24 22:07:48 +000078***
Florin Pățanabf2c9c2018-02-24 21:51:56 +000079
Bryan C. Millsda6dd572018-07-16 23:14:28 -040080### Projects Related to module support
Nathan Kerr09db81c2018-03-21 16:22:46 -070081
Bryan C. Millsda6dd572018-07-16 23:14:28 -040082- [Athens](https://github.com/gomods/athens) - A proxy server for Go modules
83- [vgo-docker-example](https://github.com/elithrar/vgo-docker-example) - An example of how to use modules + Docker together.
84- [`myitcv.io/cmd/modpub`](https://github.com/myitcv/x/tree/master/cmd/modpub) - a tool to help create a directory of modules from a git repository
85- [JFrog Artifactory](https://jfrog.com/artifactory) - A universal artifact repository with module support.
Nathan Kerr09db81c2018-03-21 16:22:46 -070086
87***
88
Florin Pățanc3caba32018-02-24 22:07:48 +000089### Questions
90
Florin Pățanb9ccd872018-02-24 22:08:47 +000091| Question | Answer |
Florin Pățanc3caba32018-02-24 22:07:48 +000092| ------------- | ------------- |
93| Hitting GitHub API rate limits? | Create a token and add it to .netrc, see [related issue](https://golang.org/issues/23955) |
Florin Pățanbed91c62018-02-26 22:52:48 +000094| How does vgo handles dependencies of older, discarded versions [link](https://gophers.slack.com/archives/C9BMAAFFB/p1519493604000033)? | [https://github.com/zeebo/vgo-test-version-selection](https://github.com/zeebo/vgo-test-version-selection) |
Daniel Jay Haskine4cee862018-02-26 16:27:45 -070095| Why are major versions in import paths? | https://groups.google.com/forum/#!topic/golang-dev/Plc42fslQEk |
96| How to `go get` so that I can run a program, not download a library? | https://gophers.slack.com/archives/C9BMAAFFB/p1519687366000101 |
Nathan Kerr09db81c2018-03-21 16:22:46 -070097| What's the best way to maintain a package repository that have the major version in the import path? | https://groups.google.com/d/topic/golang-nuts/nS6ST60dwF8/discussion, https://groups.google.com/d/topic/golang-nuts/VREgKrQRFcY/discussion |