# Asking Questions

Unlike many projects on GitHub, the Go project does not use its bug tracker for general discussion or asking questions. We only use our bug tracker for tracking bugs and tracking proposals going through the [Proposal Process](https://golang.org/s/proposal-process).

For asking questions, see:

* [The golang-nuts mailing list](https://groups.google.com/d/forum/golang-nuts)

* [The Go Forum](https://forum.golangbridge.org/), a web-based forum

* [Gophers Slack](https://gophers.slack.com), use the [invite app](https://invite.slack.golangbridge.org/) for access

* [Stack Overflow](http://stackoverflow.com/questions/tagged/go) with questions tagged "go"

* **IRC** channel #go-nuts on Freenode

If we closed your question on GitHub, we apologize. Please ask the question on one of the above forums.