All submissions, including submissions by project members, require review. We
use GitHub pull requests for this purpose. Consult
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
information on using pull requests.
### Contribution philosophy
* Prefer small changes, even if they don't implement a complete feature. Small
changes are easier to review and can be submitted faster. Think about what's
the smallest unit you can send that makes sense to review and submit in
isolation. For example, new modules that are not yet used by the tools but
have their own unittests are ok. If you have unrelated changes that
you discovered while working on something else, please send them in a
different Pull Request. If your are refactoring code and changing
functionality try to send the refactor first without any change in
functionality. Reviewers may ask you to split a Pull Request and it is
easier to create a smaller change from the beginning.
* Describe your commits. Add a meaningful description to your commit message, explain what you are changing if it is not trivially obvious, but more importantly explain *why* you are making those changes. For example "Fix
build" is not a good commit message, describe what build and if it makes sense
why is this fixing it or why was it failing without this. It is very likely
that people far in the future without any context you have right now will be
looking at your commit trying to figure out why was the change introduced. If
related to an issue in this or another repository include a link to it.
* Code Style: We follow the [Google C++ Coding
Style](https://google.github.io/styleguide/cppguide.html). A