## Contributing Kurt Griffiths (kgriffs) is the creator and current maintainer of the Falcon framework. Pull requests are always welcome. Before submitting a pull request, please ensure you have added or updated tests as appropriate, and that all existing tests still pass with your changes on both Python 2 and Python 3. Please also ensure that your coding style follows PEP 8 and doesn't cause pyflakes to complain. You can check all this by running the following from within the falcon project directory (requires Python 2.7 and Python 3.3 to be installed on your system): ```bash $ tox -e py27,py33,pep8 ``` ### Code style rules * Docstrings are required for classes, attributes, methods, and functions. * Docstrings should utilize the [napolean style][docstrings] in order to make them read well, regardless of whether they are viewed through `help()` or on [Read the Docs][rtd]. * Please try to be consistent with the way existing docstrings are formatted. In particular, note the use of single vs. double backticks as follows: * Double backticks * Inline code * Variables * Types * Decorators * Single backticks * Methods * Params * Attributes * Format non-trivial comments using your GitHub nick and one of these prefixes: * TODO(riker): Damage report! * NOTE(riker): Well, that's certainly good to know. * PERF(riker): Travel time to the nearest starbase? * APPSEC(riker): In all trust, there is the possibility for betrayal. * When catching exceptions, name the variable `ex`. * Use whitespace to separate logical blocks of code and to improve readability. * No single-character variable names except for trivial indexes when looping, or in mathematical expressions implementing well-known formulas. * Heavily document code that is especially complex and/or clever. * When in doubt, optimize for readability. ### Commit Message Format Falcon's commit message format uses [AngularJS's style guide][ajs], reproduced here for convenience, with some minor edits for clarity. Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes a **type**, a **scope** and a **subject**: ``` ():