.. _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>`.

.. TODO: Fix the following talk link once ReST-ified.
.. * :doc:`Talks, Demos, and Publications <community/talks>` (see especially Colt McAnlis' talk on porting C++ games to Native Client).

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).
