Inspired by/copied shamelessly from React's contribution guide.
We have adopted the same Code of Conduct as Facebook that we expect project participants to adhere to. Please read the full text so that you can understand what actions will and will not be tolerated.
All work on NUSMods happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.
We practice trunk-based development and do deployments from the master
branch, which is the only stable and long-lived branch around. We will do our best to keep the master
branch in good shape, with tests passing at all times.
We are using GitHub Issues for our public bugs. Before filing a new task, try to make sure your problem doesn't already exist.
Simply open up the bug report form and fill in the given template.
We can be reached via the following methods, in order of preference.
- Telegram: https://telegram.me/nusmods
- Messenger: https://www.m.me/nusmods
- Facebook: https://www.facebook.com/nusmods
- Twitter: https://twitter.com/nusmods
- Email: [email protected]
If you intend to make any non-trivial changes to the UI or implementation in any of the projects, we recommend first filing an issue. This lets us reach an agreement on your proposal before you put significant effort into it.
If you're only fixing a bug, it's fine to submit a pull request right away but we still recommend to file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue.
Working on your first Pull Request? You can learn how from this free video series:
How to Contribute to an Open Source Project on GitHub
To help you get your feet wet and get you familiar with our contribution process, we have a list of good first issues that contain bugs/enhancements that have a relatively limited scope. This is a great place to get started.
If you decide to fix an issue, please be sure to check the comment thread in case somebody is already working on a fix. If nobody is working on it at the moment, please leave a comment stating that you intend to work on it so other people don't accidentally duplicate your effort.
If somebody claims an issue but doesn't follow up for more than two weeks, it's fine to take over it but you should still leave a comment.
The core team is monitoring for pull requests. We will review your pull request and either merge it, request changes to it, or close it with an explanation.
Before submitting a pull request, please make sure the following is done:
- Fork the repository and create your branch from
master
. - Run
yarn
in the root of the project that you are working on (/www
,/export
,/api
or/packages/nusmoderator
). - If you've fixed a bug or added code that should be tested, add tests! We ask that you write tests if your feature contains non-trivial logic. Tests can be omitted for minor layout or stylistic changes (or simply generate a snapshot).
- Ensure the test suite passes (
yarn test
). Tip:yarn test:watch
is helpful in development. - Run
yarn run ci
which runs the linting, testing and building steps. This is the command that is run on our CI system. There should not be errors shown. Alternatively, you can run the linting, testing and building step separately viayarn run lint
,yarn test
andyarn run build
respectively. - There might be project-specific contribution details. Please read the README of the respective projects.
- You have Node installed at v8.0.0+ and Yarn at v1.2.0+. We recommend using nvm to manage your Node versions.
- You are familiar with Git.
Refer to each project's README for development instructions on the specific project.
By contributing to NUSMods, you agree that your contributions will be licensed under its MIT license.