| # Contributing | |
| Below you will find a collection of guidelines for submitting issues as well as contributing code to the Caffe repository. | |
| Please read those before starting an issue or a pull request. | |
| ## Issues | |
| Specific Caffe design and development issues, bugs, and feature requests are maintained by GitHub Issues. | |
| *Please do not post installation, build, usage, or modeling questions, or other requests for help to Issues.* | |
| Use the [caffe-users list](https://groups.google.com/forum/#!forum/caffe-users) instead. | |
| This helps developers maintain a clear, uncluttered, and efficient view of the state of Caffe. | |
| See the chapter [caffe-users](#caffe-users) below for guidance on posting to the users list. | |
| When reporting an issue, it's most helpful to provide the following information, where applicable: | |
| * How does the problem look like and what steps reproduce it? | |
| * Can you reproduce it using the latest [master](https://github.com/BVLC/caffe/tree/master), compiled with the `DEBUG` make option? | |
| * What hardware and software are you running? In particular: | |
| * GPU make and model, if relevant, | |
| * operating system/distribution, | |
| * compiler; please also post which version (for example, with GCC run `gcc --version` to check), | |
| * CUDA version, if applicable (run `nvcc --version` to check), | |
| * cuDNN version, if applicable (version number is stored in `cudnn.h`, look for lines containing `CUDNN_MAJOR`, `CUDNN_MINOR` and `CUDNN_PATCHLEVEL`), | |
| * BLAS library, | |
| * Python version, if relevant, | |
| * MATLAB version, if relevant. | |
| * **What have you already tried** to solve the problem? How did it fail? Are there any other issues related to yours? | |
| * If this is not a build-related issue, does your installation pass `make runtest`? | |
| * If the bug is a crash, provide the backtrace (usually printed by Caffe; always obtainable with `gdb`). | |
| * If you are reporting a build error that seems to be due to a bug in Caffe, please attach your build configuration (either Makefile.config or CMakeCache.txt) and the output of the make (or cmake) command. | |
| If only a small portion of the code/log is relevant to your issue, you may paste it directly into the post, preferably using Markdown syntax for code block: triple backtick ( \`\`\` ) to open/close a block. | |
| In other cases (multiple files, or long files), please **attach** them to the post - this greatly improves readability. | |
| If the problem arises during a complex operation (e.g. large script using pycaffe, long network prototxt), please reduce the example to the minimal size that still causes the error. | |
| Also, minimize influence of external modules, data etc. - this way it will be easier for others to understand and reproduce your issue, and eventually help you. | |
| Sometimes you will find the root cause yourself in the process. | |
| Try to give your issue a title that is succinct and specific. The devs will rename issues as needed to keep track of them. | |
| ## Caffe-users | |
| Before you post to the [caffe-users list](https://groups.google.com/forum/#!forum/caffe-users), make sure you look for existing solutions. | |
| The Caffe community has encountered and found solutions to countless problems - benefit from the collective experience. | |
| Recommended places to look: | |
| * the [users list](https://groups.google.com/forum/#!forum/caffe-users) itself, | |
| * [`caffe`](https://stackoverflow.com/questions/tagged/caffe) tag on StackOverflow, | |
| * [GitHub issues](https://github.com/BVLC/caffe/issues) tracker (some problems have been answered there), | |
| * the public [wiki](https://github.com/BVLC/caffe/wiki), | |
| * the official [documentation](http://caffe.berkeleyvision.org/). | |
| Found a post/issue with your exact problem, but with no answer? | |
| Don't just leave a "me too" message - provide the details of your case. | |
| Problems with more available information are easier to solve and attract good attention. | |
| When posting to the list, make sure you provide as much relevant information as possible - recommendations for an issue report (see above) are a good starting point. | |
| *Please make it very clear which version of Caffe you are using, especially if it is a fork not maintained by BVLC.* | |
| Formatting recommendations hold: paste short logs/code fragments into the post (use fixed-width text for them), **attach** long logs or multiple files. | |
| ## Pull Requests | |
| Caffe welcomes all contributions. | |
| See the [contributing guide](http://caffe.berkeleyvision.org/development.html) for details. | |
| Briefly: read commit by commit, a PR should tell a clean, compelling story of _one_ improvement to Caffe. In particular: | |
| * A PR should do one clear thing that obviously improves Caffe, and nothing more. Making many smaller PRs is better than making one large PR; review effort is superlinear in the amount of code involved. | |
| * Similarly, each commit should be a small, atomic change representing one step in development. PRs should be made of many commits where appropriate. | |
| * Please do rewrite PR history to be clean rather than chronological. Within-PR bugfixes, style cleanups, reversions, etc. should be squashed and should not appear in merged PR history. | |
| * Anything nonobvious from the code should be explained in comments, commit messages, or the PR description, as appropriate. | |