c@447: c@447: Contributing c@447: ============ c@447: c@448: The qm-dsp library is maintained in a Github repository at c@447: https://github.com/c4dm/qm-dsp. c@447: c@447: c@447: Reporting bugs c@447: -------------- c@447: c@448: Please use Github issues for bug reports. Try to make them as specific c@448: as possible. For example, describe an input that triggers some c@448: particular behaviour, and tell us how that behaviour differs from what c@448: you expected. c@447: c@447: If your bug can be reproduced by processing an audio file using one of c@447: the QM Vamp Plugins (https://github.com/c4dm/qm-vamp-plugins), which c@447: are built using this library, that might be a good way to illustrate c@447: the problem. c@447: c@447: c@447: Pull requests c@447: ------------- c@447: c@447: We're happy to see pull requests, and can pull them directly in some c@447: circumstances. c@447: c@447: * Please make sure your change compiles without warnings and passes c@447: the existing tests. c@447: c@447: * Please follow the code style guidelines (see below). c@447: c@447: * Please make it as easy as possible to verify the behaviour of the c@447: pull request, for example by adding a new test in the `tests` c@447: directory. This library has only limited test coverage, but we c@447: would like to expand it, and prefer not to make changes unless they c@447: are backed by tests. c@447: c@447: * Please provide your changes under terms which permit Queen Mary c@447: University of London to relicense the code for commercial c@447: purposes. The qm-dsp library as a whole is provided under the GPL, c@447: but QM also make commercial licences available separately, and c@447: cannot accept any pull request whose copyright status would prevent c@447: that. In practice, this means any non-trivial change not c@447: originating from QM must be explicitly licensed using a BSD-like c@447: licence text, either in the source file itself or in an c@447: accompanying file. See `thread/BlockAllocator.h` for an example of c@447: typical language. c@447: c@447: Please note also that fixes which change the behaviour of the existing c@447: QM Vamp Plugins will need particularly close scrutiny - these are c@447: reasonably widely used and, even where they have defects, changes may c@447: cause problems for users and will at least need to be documented with c@447: the plugins. For this reason it may take some time for such changes to c@447: be reviewed or integrated. c@447: c@447: c@447: Code style c@447: ---------- c@447: c@448: * C++ code must compile with the C++98 standard, except for the unit c@448: tests which are C++14 c@447: c@448: * Classes are named `LikeThis` - functions, methods, and local c@448: variables `likeThis` - class member variables `m_likeThis` c@447: c@447: * Indentation is four spaces at a time (no tabs) c@447: c@447: * The opening brace for a block goes at the end of the line, except c@447: at the start of a function or class definition where it gets a line c@447: of its own c@447: cannam@473: * Please use braces around any conditional or loop block that is not cannam@473: on the same line as the test cannam@473: cannam@473: * Please keep lines to no more than 80 characters in length c@447: cannam@500: * Avoid using unsigned int types, unless doing bit manipulation (see cannam@500: http://soundsoftware.ac.uk/c-pitfall-unsigned.html for rationale) c@447: