First of all, thank you for helping with Exercism.io!
This contributing guide is specifically about contributing to the exercism.io website codebase. For a guide to the project as a whole check out the finding your way guide in the docs repository.
Help us keep exercism welcoming. Please read and abide by the Code of Conduct.
These instructions should get you closer to getting a commit into the repository.
See the Setting up Local Development guide for more information about how to run exercism.io locally.
- Fork and clone.
- Add the upstream exercism.io repository as a new remote to your clone.
git remote add upstream https://github.com/exercism/exercism.io.git
- Create a new branch
git checkout -b name-of-branch
- Commit and push as usual on your branch.
- When you're ready to submit a pull request, rebase your branch onto
the upstream master so that you can resolve any conflicts:
git fetch upstream && git rebase upstream/master
You may need to push with--force
up to your branch after resolving conflicts. - When you've got everything solved, push up to your branch and send the pull request as usual.
We keep track of bugs, enhancements and support requests in the repository using GitHub issues.
For higher-level discussions about the project as a whole check out the issues in the discussions repository.
We're trying to label issues with "good first patch" if we think that these can be solved without too much context about exercism.io's codebase or functionality. To find them, you can do a search.
We use Rubocop to enforce a few style-related conventions.
Run the command rubocop
to check for any style violations before submitting pull requests.
If you have any JS or CSS changes, please run cd frontend && lineman spec-ci
to check for any problems before submitting pull requests.
When submitting a pull request, sometimes we'll ask you to make changes before we accept the patch.
Please do not close the first pull request and open a second one with these changes. If you push more commits to a branch that you've opened a pull request for, it automatically updates the pull request.
When the pull request is ready to be merged, you will probably be asked to squash your commits.
As with adding more commits, you do not need to close your pull request and open a new one. If you change the history (rebase, squash, amend), and use git push --force to update the branch on your fork. The pull request points to that branch, not to specific commits.
Here's a guide on how to squash commits in a GitHub pull request.
After your pull request is merged, we deploy it. Deploys are done periodically, and it is possible that you won't be able to see your changes on the website right away.
We are currently working on reimagining the Exercism user experience from the ground up.
For details, please see exercism/discussions#113.