Contributing to jsPsych

Contributions to jsPsych are welcome! All of the code is managed through the GitHub repository.

Steps for modifying the code

Discuss the proposed change

If you have a specific modification in mind, open a new issue via GitHub. Describe the proposed change and what problem it solves. If you are interested in adding a new plugin to the library, it helps if you post an example of the plugin in use and describe the different use cases of the plugin.

If the modification you are interested in working on is not quite at the point where you have a specific modification to the code base in mind, then it might be helpful to discuss the issue first on the jsPsych Google group.

Fork the library and modify the code

To make changes to the code, you should fork the jsPsych library via GitHub. Changes should be targeted at the master branch.

Submit a pull request

Once your modification is complete, submit a pull request to merge your changes into the main repository. Pull requests will be reviewed by the project owner.

Writing new plugins

New plugins are welcome additions to the library. Plugins can be distributed independently of the main library or added to the GitHub repository via a pull request and the process described above. If you want to add your plugin to the main library then there are a few guidelines to follow.

Make the plugin as general as possible

Plugins are most useful when they are flexible. Avoid fixing the value of parameters that could be variables. This is especially important for any text that displays on the screen in order to facilitate use in multiple languages.

Use the jsPsych.pluginAPI module when appropriate

The pluginAPI module contains functions relevant to plugin development. Avoid duplicating the functions defined within the library in your plugin. If you have a suggestion for improving pluginAPI methods, then go ahead and submit a pull request to modify it directly.

Document your plugin

When submitting a pull request to add your plugin, make sure to include a documentation page in the same style as the other docs pages. Documentation files exist in the docs directory.

Include an example file

Write a short example file to include in the examples directory. This should demonstrate the basic use cases of the plugin as clearly as possible.

Include a testing file

Automated code testing for jsPsych is implemented with Jest. To run the tests, install Node and npm. Run npm install in the root jsPsych directory. Then run npm test. Plugins should have a testing file that validates the behavior of all the plugin parameters. See the /tests/plugins directory for examples.