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 send mail before
starting work on anything major. Contributors retain their copyright, so we
need you to fill out a short form before we can accept your contribution:
https://developers.google.com/open-source/cla/individual

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

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