This page is used as a starting point for contributing to the development of the iDynTree library.
If you would like to contribute to the development of iDynTree, please get in contact with the development team using GitHub issues.
The easiest way to contribute is to pick an issue and try to solve it. If you want to get an easy issue to solve for a beginner to the library, just ask to the development team .
If you need a new feature or to fix a bug, please fill a GitHub issue describing the feature or the bugfix you would like to implement.
We are not currently enforcing a specific style for the code in iDynTree, but if you modify a file, please be consistent with the style of the file.
The contribution follows the classical GitHub stages:
- open an issue (so we can discuss the problem and possible solutions);
- develop the changes;
- fork the project and submit the pull request.
Development of new features follows the GitHub Flow ( also know as Feature Branch Workflow ).
In a nutshell, development of new features/bugfixes happens in separated branch. When you believe your contribution is stable you can open a pull request against master, where your code will be review by other contributors prior to merging it.
We use [https://en.wikipedia.org/wiki/Continuous_integration](Continuous Integration) to make
sure that proposed changes in the library do not cause regression. In particular we use
Travis for Linux/OS X and AppVeyor for Windows.
In all this build systems the compilation of the tests is enabled by setting to true
the IDYNTREE_COMPILE_TESTS
CMake flag.
All the dependencies (also the optional one) are enabled in the Travis build.
Furthermore on Linux builds the IDYNTREE_RUN_VALGRIND_TESTS
flag is enabled, to
run all the tests also under the valgrind
tool, to spot
any memory-related error, suck of use of initialized memory or memory leak.
You can find the specific iDynTree configuration used in the AppVeyor build in the .travis.yml
file.
For the time being AppVeyor is just building the iDynTree parts that don't depend on KDL, YARP or icub-main.
You can find the specific iDynTree configuration used in the AppVeyor build in the appveyor.yml
file.