Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
This page gives a quick overview of easy ways to help the CasADi project go forward.
We welcome users to fix bugs and - as outlined below - contribute with new features. To do this, fork the project in Github and make a pull request to the
develop branch, which contains the latest development version (note that
master points to the latest release). We are in general very restrictive in accepting any nontrival changes to the core of CasADi (the casadi/core directory), so if you have anything you would like to add to the core, we urge you to discuss this with the developers first to avoid having your pull request rejected. We will also reject pull requests that require a major effort to test or review. In these cases, you are better off maintaining your own fork of CasADi, or enter an academic or industrial collaboration with us. Code committed to CasADi needs to follow the coding standards of the project (often not explicitly written down so look at existing code), must be well commented, pass the unit tests and linter (
make lint performs style checking). Some tests are triggered automatically when submitting a pull request (test may fail in pull requests if they rely on non-freely available components).
Contributing new interfaces or solvers
You are welcome to write or interface your own solvers for e.g. nonlinear/quadratic programming or ODE/DAE integration. Since the internal API of CasADi is still (as of 2017) in flux, new solvers will require continuous maintenance from our part, so we ask you to discuss this with us if you want the solver to become part of CasADi.
Contributing documentation and examples
We particularly welcome contributions to the documentation. This includes illustrative, well-documented examples and improved documentation for existing functions and classes. If you find the documentation for some function, say
vertsplit, lacking, just locate it in our sources and look for a Doxygen comment:
/** \brief Concatenate a list of matrices vertically * Alternative terminology: vertical stack, vstack, vertical append, [a;b] * * vertcat(vertsplit(x, ...)) = x */ inline friend MatType vertcat(const std::vector<MatType> &v);
You can edit that file in your browser. Just add some extra explanation at will.
As a bonus, you can also add python code snippets into that docstrings. See in-documentation-snippets for details.