.. _help:

##############
Help with NaCl
##############

Check the documentation resources below for help with common issues and
problems. For additional questions, reach out to the Native Client
community in the forums below. You can also :ref:`report new issues
<report_issue>` using the Native Client issue tracker.

Documentation
=============

* :doc:`Release Notes <sdk/release-notes>`.
* :doc:`FAQ <faq>`.
* `Talks, Demos, and Publications
  <https://devsite.googleplex.com/native-client/community/talks>`_ (see
  especially Colt McAnlis' talk on porting C++ games to Native Client).

.. TODO: Fix the talk link once ReST-ified.

Forums
======

* For new Native Client developers: `Stack Overflow
  <http://stackoverflow.com/questions/tagged/google-nativeclient>`_ is a
  great resource --- check this forum first for answers to your
  questions.
* For in-depth technical discussions: `native-client-discuss mailing
  list <https://groups.google.com/group/native-client-discuss>`_ is a good
  group for detailed technical discussions about bugs and other Native Client
  issues.  * For announcements, follow the `native-client-announce mailing list
  <http://groups.google.com/group/native-client-announce>`_.
* For 140 character goodness follow `@nativeclient
  <https://twitter.com/nativeclient>`_ on Twitter.

.. _report_issue:

Issue tracker
=============

To report a new issue:

#. Go to the `Native Client issue tracker
   <https://code.google.com/p/nativeclient/issues>`_ for a Native Client
   bug, or the `Chromium issue tracker
   <https://code.google.com/p/chromium/issues>`_ for a Chrome/Chromium bug.
#. Before you report an issue, search to see if your issue has already
   been reported. You can add a comment to an existing issue if you have
   additional information.
#. To report a new issue, fill out the Summary and Description fields on
   the issue form and click the "Submit issue" button. You can report:

   * A `Native Client defect
     <https://code.google.com/p/nativeclient/issues/entry?template=Defect%20report>`_.
   * A `Native Client security issue
     <https://code.google.com/p/nativeclient/issues/entry?template=Security%20Bug>`_
     (only visible to the security team).
   * A `Native Client + Chrome integration issue
     <https://code.google.com/p/chromium/issues/entry?template=NaCl%20Issue>`_.
   * A `Native Client + Chrome integration security issue
     <https://code.google.com/p/chromium/issues/entry?template=Security%20Bug>`_
     (only visible to the security team).
