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) [![Build Status](https://travis-ci.org/golang/gddo.svg?branch=master)](https://travis-ci.org/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).
