These packages are part of the Go Project but outside the main Go tree.

They are developed under looser [compatibility requirements](http://golang.org/doc/go1compat.html) than the Go core.

Install them with "go get".

  * [[docs](http://godoc.org/golang.org/x/tools)] [[source](https://code.google.com/p/go/source/browse/?repo=tools)] ` golang.org/x/tools ` — godoc, vet, cover, and other tools.
  * [[docs](http://godoc.org/golang.org/x/mobile)] [[source](https://code.google.com/p/go/source/browse/?repo=mobile)] ` golang.org/x/mobile ` — libraries and build tools for Go on Android.

  * [[docs](http://godoc.org/golang.org/x/crypto)] [[source](https://code.google.com/p/go/source/browse/?repo=crypto)] ` golang.org/x/crypto ` — additional cryptography packages.
  * [[docs](http://godoc.org/golang.org/x/image)] [[source](https://code.google.com/p/go/source/browse/?repo=image)] ` golang.org/x/image ` — additional imaging packages.
  * [[docs](http://godoc.org/golang.org/x/net)] [[source](https://code.google.com/p/go/source/browse/?repo=net)] ` golang.org/x/net ` — additional networking packages.
  * [[docs](http://godoc.org/golang.org/x/sys)] [[source](https://code.google.com/p/go/source/browse/?repo=sys)] ` golang.org/x/sys ` — for low-level interactions with the operating system.
  * [[docs](http://godoc.org/golang.org/x/text)] [[source](https://code.google.com/p/go/source/browse/?repo=text)] ` golang.org/x/text ` — packages for working with text.

  * [[docs](http://godoc.org/golang.org/x/blog)] [[source](https://code.google.com/p/go/source/browse/?repo=blog)] ` golang.org/x/blog ` — the content and server program for [blog.golang.org](http://blog.golang.org).


  * [[docs](http://godoc.org/golang.org/x/codereview)] [[source](https://code.google.com/p/go/source/browse/?repo=codereview)] ` golang.org/x/codereview ` — tools for code review.
  * [[docs](http://godoc.org/golang.org/x/benchmarks)] [[source](https://code.google.com/p/go/source/browse/?repo=benchmarks)] ` golang.org/x/benchmarks `

  * [[docs](http://godoc.org/golang.org/x/exp)] [[source](https://code.google.com/p/go/source/browse/?repo=exp)] ` golang.org/x/exp ` — experimental code (handle with care).

[List of all packages in sub-repositories](http://godoc.org/-/subrepo)

NOTE: On 9 November 2014, Go sub-repositories moved to [new import paths](https://groups.google.com/forum/#!msg/golang-nuts/eD8dh3T9yyA/l5Ail-xfMiAJ).
