Guidelines for contributing to OpenCMISS

The following sections outline the three equally important aspects of contributing to OpenCMISS. Anyone can contribute code and functionality. The following criteria are essential requirements to achieve before contributed work can be accepted.

  • The submitted code passes our functional tests
  • The documentation is updated/added appropriately

Code

The OpenCMISS codebase is entirely hosted on GitHub. On GitHub, the most effective and integrated way of contributing code is via pull requests. This essentially means you have a modified version of any OpenCMISS component and asks us to examine the work and merge those changes into our own codebase.

Testing

Testing is the most essential tool to ensure software quality - having trust in scientific results obtained with OpenCMISS is of greatest importance! In order to check and verify the functionality of OpenCMISS components, we use functional tests. Those tests can not only be run at your local OpenCMISS installation, but are also used as the benchmark for contributions to be accepted. Our continuous integration tools (we use Jenkins integrated with GitHub) enable the testing of outstanding pull requests across a variety of platforms and reports the status of the testing to the pull request thread.

This makes testing of your code across multiple operating systems very easy, as all you have to do is create a pull request to our respective source repository.

Documentation

The global system to provide documentation for OpenCMISS is reStructuredText (.rst files) along with the Python-based generator Sphinx. Any downloadable documentation files and the OpenCMISS website are generated with this technology.

If you change or add code, always keep the documentation in sync and add new documentation for new functionality. All the OpenCMISS components have a /docs folder at the project root, which is the top level entry point for the respective component documentation. The /docs/index.rst file is the entry point. Any documentation you place within the components you are working on (Iron/Zinc/..) is automatically pulled into the overall documentation project and included in the OpenCMISS website.