.. _contribute:

Contributing to the project
=====================================

PsychoPy is an open-source, community-driven project. It is written and provided free out of goodwill by people that make no money from it and have other jobs to do. The way that open-source projects work is that users contribute back some of their time.

Why make it free?
---------------------
It has taken, literally, thousands of hours of programming to get PsychoPy where it is today and it is provided absolutely for free. Without someone working on it full time (which would mean charging you for it) the only way for the software to keep getting better is if people contribute back to the project.

**Please, please, please** make the effort to give a little back to this project. If you found the documentation hard to understand then think about how you would have preferred it to be written and contribute it.

How do I contribute changes?
-----------------------------
For simple changes, and for users that aren't so confident with things like version control systems then just send your changes to `the PsychoPy forum <https://discourse.psychopy.org/>`_.

If you want to make more substantial changes then it's often good to discuss them first on the `developers section of the forum <https://discourse.psychopy.org/dev>`_.

The ideal model, is to contribute via the repository on github. There is more information on that in the :ref:`developers` section of the documentation.

.. _Sphinx: http://sphinx.pocoo.org

.. _contribForum:

Contribute to the Forum (mailing list)
----------------------------------------------------------

The easiest way to help the project is to write to the forum (mailing list) with suggestions and solutions.

*For documentation suggestions* please try to provide actual replacement text. You, as a user, are probably better placed to write this than the actual developers (they know too much to write good docs)!

*If you're having problems*, e.g. you think you may have found a bug:
    - take a look at the :ref:`troubleshooting` and :ref:`gotchas` first
    - submit a message with as much information as possible about your system and the problem
    - please try to be precise. Rather than say "It didn't work" try to say what specific form of "not working" you found (did the stimulus not appear? or it appeared but poorly rendered? or the whole application crashed?!)
    - if there is an error message, try to provide it completely
    
*If you had problems* and worked out how to fix things, even if it turned out the problem was your own lack of understanding, please still contribute the information. Others are likely to have similar problems. Maybe the documentation could be clearer, or your email to the forum will be found by others googling for the same problem.

To make your message more useful you should, please try to:
    - provide info about your system and PsychoPy version (e.g. the output of the sysInfo demo in coder). A lot of problems are specific to a particular graphics card or platform
    - provide a minimal example of the breaking code (if you're writing scripts)
    
