The Problem
Wait, is there a problem?
Many projects should just use the go tool.
- A dependency breaks
- A dependency disappears
- A dependency moves
Prior Art
- CPAN
- Bundler
- Leiningen
- many more…
Many Solutions
gonuts
goven
johnny deps
gopin
rx
git submodules
envie
gob
gopack
gopm
gvm
and more…
Godep
Started last May.
Nothing like it at the time.
Goals
- Reproducible builds
- Small surface area + mechanism
- Keep smooth workflow
- Easy to join a project
-
Bonus: seamless on Heroku
Anti-Goals
-
More indirection
- Central repo
- Parse version strings
- Fancy constraints
Basic Principles
Record exact dependencies.
Check in the code too!
Resolve only at the top.
Run the go tool with a modified GOPATH.
Future Work
Generalize.
Fix bugs.
Add a very few glaring missing features.