This page contains a list of tools for managing Go packages and their dependencies. The tools are divided into categories based on their approach to version management.

GO15VENDOREXPERIMENT

As of June 19th, 2015, the Go toolchain includes an experimental vendoring flag, GO15VENDOREXPERIMENT. This is now part of the Go 1.5 release and represents the Go team's recommended approach to vendoring dependencies. You can read more about how this environment variable works in the Go 1.5 documentation and the original design document. For a more detailed explanation, check out this post by @freeformz or this short explainer from Engineered Web.

Tools supporting this feature include:

Pkg copy, built using GOPATH modification, supports fetching specific version

Copy packages locally. When building modify the GOPATH or use the GO 1.5 GO15VENDOREXPERIMENT to reference the local package store. Not only records specific version, but also fetches specific version.

glidehttps://github.com/Masterminds/glide
TitleLightweight Vendor Package Manager
AuthorMatt Butcher and Matt Farina
CategoriesRetrieve and manage packages in your vendor/ directory using the GO15VENDOREXPERIMENT.
gopmhttps://github.com/GPMGo/gopm
TitleTool for search, install, update, share packages in Go
AuthorAm Laher
CategoriesRevision Locking (git, mercurial, bazaar). Copies into “.vendor/src”.
gomhttps://github.com/mattn/gom
TitleGo Manager - bundle for go
AuthorYasuhiro Matsumoto
CategoriesVendoring/Bundling. Copies into “_vendor/src”
bunchhttps://github.com/dkulchenko/bunch
Titlenpm-like tool for managing Go dependencies
AuthorDaniil Kulchenko
CategoriesVendoring/Bundling/Revision Locking. Copies into “.vendor”. Does NOT fully support windows.
goophttps://github.com/nitrous-io/goop
TitleA dependency manager for Go (golang), inspired by Bundler.
AuthorNitrous.IO
CategoriesVendoring, Revision Locking. Copies into “.vendor/src”. Does NOT fully support windows.
govendhttps://github.com/gophersaurus/govend
TitleA simple tool to vendor dependencies
AuthorJack Spirou
CategoriesVendor and lock revisions of packages in vendor/ via the GO15VENDOREXPERIMENT.

Pkg copy, build using GOPATH modification

Copy packages locally. When building modify the GOPATH to reference the local package store.

godephttps://github.com/tools/godep
TitleHelps build packages reproducibly by fixing their dependencies
AuthorKeith Rarick
CategoriesVendoring, Version Recording. Copies into “Godep/_workspace/src”.
wgohttps://github.com/skelterjohn/wgo
TitleManaged workspaces on top of the go tool
AuthorJohn Asmuth
Categorieslocal GOPATH can be configured.
gbhttp://getgb.io/
TitleProject-based workspaces and dependency management
AuthorDave Cheney
CategoriesProject-based workspaces, vendoring, version locking. Manages dependencies in /vendor/src

Revision Locking

Package source control versions are recorded. Versions are updated into the GOPATH package tree. Requires switching GOPATH for every project.

glockhttps://github.com/robfig/glock
TitleLock dependencies to specific revisions.
AuthorRob Figueiredo
CategoriesRevision Locking (git)
gobshttps://bitbucket.org/vegansk/gobs
TitleBuild system and package manager for go language
AuthorAnatoly Galiulin
CategoriesRevision Locking (git). Requires bash, no Windows support.
godepshttps://launchpad.net/godeps
TitlePrint, fetch and update dependencies with care. In production use by Canonical. The first tool with this name!
AuthorRoger Peppe
CategoriesRevision Locking (git, mercurial, bzr)
gopackhttps://github.com/d2fn/gopack
TitleDependency management for go inspired by rebar
AuthorDietrich Featherston
CategoriesRevision Locking (git)
gopinhttps://github.com/laher/gopin
TitleExperimental go-get fork with support for tags and alternative repos
AuthorGo Package Manager
CategoriesRevision Locking (git)
gigohttps://github.com/LyricalSecurity/gigo
TitleHelps provide go get support for private repositories, pip for golang
AuthorLyrical Security
CategoriesVendoring, Revision Locking (git). Does not appear to copy files.

Pkg copy with import path re-write (As of Go 1.5, this is no longer the recommended practice)

Vendoring with import path rewriting takes the 3rd party source code that is referenced in your project and makes a copy of that code inside a new folder within the project. It re-writes the import paths so there is a single copy of all packages. GOPATH is not modified at any time.

partyhttps://github.com/mjibson/party
AuthorMatt Jibson
CategoriesVendoring, Copies into “_third_party”. Does not analyze dependencies first. No inspection.
govendorhttps://github.com/kardianos/govendor
TitleCopy, re-write, and list dependent package status.
AuthorDaniel Theophanes
CategoriesPkg Copy,Import rewrite, record VCS version. Copies into “internal” or “vendor”.
vendorizehttps://github.com/kisielk/vendorize
AuthorKamil Kisiel
CategoriesVendoring. Copies into “3rdparty”.
nuthttps://github.com/jingweno/nut
AuthorJingwen Owen Ou
CategoriesPkg Copy & Import rewrite. Copies into “vendor”.

Vendor Utilities

Not full vendor tool, but may still provide value.

prewritehttps://github.com/dmitris/prewrite
AuthorDmitry Savintsev
CategoriesImport re-writer, add or remove specified prefix

Import Proxies

Import Proxies act as a man in the middle between the Go tool and the VCS. It parses the data stream while the repository is being cloned.

gopkg.inhttps://gopkg.in
TitleRedirect the go tool onto well defined GitHub repositories. Versioning with tags and branches or the repository name.
AuthorGustavo Niemeyer
CategoriesImport Proxy (GitHub)

Go Version Managers

Go Version Managers allow you to have multiple versions of Go installed on your machine. It allows you to switch between those versions.

goenvhttps://bitbucket.org/ymotongpoo/goenv
TitleGo environment manager
AuthorYoshifumi YAMAGUCHI
CategoriesGo Version Manager

Client App Test Packages

Here is a list of packages that authors can use to test their tools against.

beego-mgohttps://github.com/goinggo/beego-mgo
AuthorBill Kennedy
DescSample Application For Using the Beego web framework with MGO
revel-mgohttps://github.com/goinggo/revel-mgo
AuthorBill Kennedy
DescSample revel project with mgo support

Abandoned Tools

Not Written in Go

These tools are recorded for completeness, but it is suggested not to use them as they are platform specific.