
.. _how-to-contribute:

=====================
How To Contribute
=====================

**You are very welcome to contribute!**
PyInstaller is a maintained by a group of volunteers.
All contributions,
like community support, bug reports, bug fixes,
documentation improvements, enhancements and ideas are welcome.

PyInstaller is an free software project that is created and
maintained by volunteers.
It lives-and-dies based on the support it receives from others, and the fact
that you're even considering contributing to PyInstaller is very
generous of you.

Since as of now all core-developers are working on PyInstaller in their
spare-time, you can help us (and the project) most if you are following some
simple guidelines. The higher the quality of your contribution, the less work
we have incorporating them and the earlier we will be able to incorporate them
:-)


If you get stuck at any point you can `create a ticket on GitHub
<https://github.com/pyinstaller/pyinstaller/issues/new>`_.


For more about our development process and methods, see the
:ref:`development guide`.


Some ideas how you can help
==============================

Some ideas how you can help:

* **Answer** |support tickets:|_ Often the user just needs to be pointed
  to the fitting section in the manual.

  .. |support tickets:| replace:: **support tickets:**
  .. _`support tickets:`: https://github.com/pyinstaller/pyinstaller/issues?q=is%3Aopen+is%3Aissue+label%3Akind%3Asupport

* **Triage** |open issues,|_ which means: read the report; ask the issue
  requester to provide missing information and to try with the latest
  development version; ensure there is a *minimal* example; ensure the
  issue-reporter followed all steps in :ref:`When things go wrong`.
  If you are able reproduce the
  problem and track down the bug, this would be a *great* help for the
  core developers.

  .. |open issues,| replace:: **open issues,**
  .. _`open issues,`: https://github.com/pyinstaller/pyinstaller/issues?q=is%3Aopen

* **Help improving the documentation:** There is a list of `documentation
  issues`__ you can pick one from. Please provide a pull-request for your
  changes. :ref:`Read more »» <writing documentation>`

  __ https://github.com/pyinstaller/pyinstaller/issues?q=is%3Aopen+is%3Aissue+label%3Aarea%3Adocumentation

* **Pick an** |pull-request-issue|_ and provide one.

  .. |pull-request-issue| replace:: **issue requesting a pull-request**
  .. _`pull-request-issue`: https://github.com/pyinstaller/pyinstaller/issues?q=is%3Aopen+is%3Aissue+label%3A%22pull-request+wanted%22

* **Review** |pull requests:|_ Are the commit messages following the
  guideline :ref:`Commit Messages`; do all new files have a
  copyright-header (esp. for hooks this is often missing); is the code okay;
  etc.

  .. |pull requests:| replace:: **pull requests:**
  .. _`pull requests:`: https://github.com/pyinstaller/pyinstaller/pulls

* Scan the `list of open issues`__ and pick some task :-)

  __ https://github.com/pyinstaller/pyinstaller/issues

Thank you very much!

If you plan to contribute frequently, just ask for write access to the main
git repository. We would be glad to welcome you in the team!

.. include:: _common_definitions.txt

.. Emacs config:
 Local Variables:
 mode: rst
 ispell-local-dictionary: "american"
 End:
