# Have you ever contributed to an Open Source project? Your first contribution can be a bit intimidating, but feel free to give it a try. If you get stuck, don't hesitate to ask for help in our [developer forum](https://discourse.psychopy.org/c/dev). This is also a good place to pitch your idea. Next up: * **I won't program it myself.** Please file a [GitHub issue](https://github.com/psychopy/psychojs/issues). * **I'd like to take a shot.** Read on to find out how! # How to contribute Contributing to PsychoJS consists of four steps: 1. Getting your own copy 2. Making your changes 3. Committing your changes 4. Submitting a Pull Request ## 1. Getting your own copy of the PsychoJS codebase To be sure your improvements can easily be integrated, follow these steps: 1. **Make a [fork](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) of the [PsychoJS repo](https://github.com/psychopy/psychojs).** This provides you with your own copy of the PsychoJS source code. 2. **Inside your fork, make a new [branch](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-branches) for the feature you've got in mind.** Base your new branch on the *main* branch. We tend to name branches after the feature we're building. For example `olfactory_component`. 3. **Clone your fork to your hard drive.** Next, switch to the new branch and you're all set up! ## 2. Making your changes To help you get started with modifying PsychoJS, we've a couple of [developer guides](https://psychopy.org/online/index.html). To try out your modified PsychoJS, consider [creating and running some tests](https://github.com/psychopy/psychojs_testing). ## 3. Committing your changes Once you're happy with your changes, commit them to your GitHub repo. Please use the tags below in your commit and add an informative message. - **BF:** bug fix - **RF:** refactoring - **ENH:** enhancement (such as a new feature) - **DOC:** for all kinds of documentation related commits ## 4. File a Pull Request Once you're done, it's time to add it to the central PsychoJS source code. File a [Pull Request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) from your own fork and branch to the *main* branch in the PsychoJS repo. Thanks for contributing!