This project is the source for http://godoc.org/

[![GoDoc](https://godoc.org/github.com/golang/gddo?status.svg)](http://godoc.org/github.com/golang/gddo)

The code in this project is designed to be used by godoc.org. Send mail to
golang-dev@googlegroups.com if you want to discuss other uses of the code.

Feedback
--------

Send ideas and questions to golang-dev@googlegroups.com.
Request features and report bugs using the
[GitHub Issue Tracker](https://github.com/golang/gddo/issues/new).

Contributions
-------------

Contributions to this project are welcome, though please
[file an issue](https://github.com/golang/gddo/issues/new).
before starting work on anything major.

**We do not accept GitHub pull requests**
(we use [an instance](https://go-review.googlesource.com/) of the
[Gerrit](https://www.gerritcodereview.com/) code review system instead).

To get started contributing to this project,
clone the repository from its canonical location

	git clone https://go.googlesource.com/gddo

or update the `origin` of your existing clone

	git remote rm origin
	git remote add origin https://go.googlesource.com/gddo

then read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
to learn how to send patches using Gerrit.

More Documentation
------------------

More documentation about this project is available on the [wiki](https://github.com/golang/gddo/wiki).
