diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..f48bc2b51 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,68 @@ +# How to contribute to the GA4GH reference implementation + +Thank you for taking the time to contribute. We appreciate it! + +There are two ways to contribute to this effort. The first way is to use this +project's [Issues Page](https://github.com/ga4gh/server/issues), which we +use as a forum to discuss both major and minor issues related to developing +the GA4GH reference implementation. See the [Issue Resolution](#issue_resolution) +section below for specifics on how issues are resolved by the community. + +A second way to contribute to the project is to directly contribute +development effort. Please refer to the next section, +[Contributions and Pull Request](#pull_request), for more details. + + +## Contributions and Pull Requests + +GitHub pull requests should be used to contribute development effort +and code to the project. GitHub provides a nice +[overview on how to create a pull request](https://help.github.com/articles/creating-a-pull-request). + +Some general rules to follow: + +* [Fork](https://help.github.com/articles/fork-a-repo) the main project + into your personal GitHub space to work on. +* Create a branch for each update that you're working on. These branches + are often called "feature" or "topic" branches. Any changes that you + push to your feature branch will automatically be shown in the pull request. +* Keep your pull requests as small as possible. Large pull requests are + hard to review. Try to break up your changes into self-contained and + incremental pull requests. +* The first line of commit messages should be a short (<80 character) summary, + followed by an empty line and then any details that you want to share about + the commit. +* Please try to follow the existing syntax style + +When you submit or change your pull request, the Travis build system will +automatically run tests to ensure valid schema syntax. If your pull request +fails to pass tests, review the test log, make changes and then push them +to your feature branch to be tested again. + + + +## Issue Resolution + +Once a pull request or issue have been submitted, anyone can comment or vote +on an issue to express their opinion following the Apache voting system. +Quick summary: + +- **+1** something you agree with +- **-1** if you have a strong objection to an issue, which will be taken very + seriously. A -1 vote should provide an alternative solution. +- **+0** or **-0** for neutral comments or weak opinions. +- It's okay to have input without voting +- Silence gives assent + +A pull request with no **-1** votes is ready to be merged. The merge should be +done by someone from a different organization than the submitter. + +If an issue gets any **-1** votes, the comments on the issue need to reach +consensus before the issue can be resolved one way or the other. There isn't +any strict time limit on a contentious issue. + +In case a merge happens too quickly, closed pull requests can also get +**-1** votes, which will always need to be resolved. + +The project will strive for full consensus on everything until it runs into +a problem with that model.