OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Contributing

Table of contents

Contributing code

We use the version control system git and the repository is available on github:

https://github.com/OpenANN/OpenANN

Contributing code to OpenANN usually works as follows:

Directories

Improving the code quality

There is always a lot of work that can be done to improve the quality of code, e.g.:

Those tasks are great entry points to contribute to the library and we are glad to receive any improvements.

Coding Style

We have a coding style. To apply that style automatically, you can use the tool Artistic Style. You can run the following command in the OpenANN main directory:

astyle --options=.astylerc --recursive "OpenANN/*.h" "src/*.cpp" "examples/*.h" "examples/*.cpp" "benchmarks/*.h" "benchmarks/*.cpp" "test/*.h" "test/*.cpp"

Test Suite

To build the OpenANN test suite you have to build the target TestSuite:

make TestSuite

You can run the tests with

test/TestSuite

or

test/TestSuite -qt

The latter will only work if Qt and the Qt headers are installed. Usually all tests should be succesful.

FAQ

What can I do to contribute to OpenANN?

There is a list of open issues at our github page: issues.

How can I verify my contribution?

  1. Write unit tests.
  2. Use Cppcheck:
    cppcheck -q --enable=all <files> 
    .
  3. Maybe add an example or a benchmark for major components like a new type of learner.
  4. Use valgrind to check for memory leaks etc.

How can I minimize the time that is required to switch between different build types (Debug and Release)?

Both build types can be maintained simultanously:

mkdir build/Debug
mkdir build/Release
cd build/Debug
cmake -D CMAKE_BUILD_TYPE:String=Debug ../..
make
cd ../Release
cmake -D CMAKE_BUILD_TYPE:String=Release ../..
make