Joel Andersson edited this page Nov 3, 2017 · 4 revisions

This page gives a quick overview of easy ways to help the CasADi project go forward.

Contributing code

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.

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.