Development - 3dct/open_iA GitHub Wiki

Here you can find info on some aspects of developing in the open_iA framework.

How to start contributing to open_iA development

The easiest way to start developing with open_iA is to write your own module. First, make sure you have a working build environment set up for open_iA.

It might also help to familiarize yourself with our Coding Guidelines and our Branching Strategy.

For starting module development, we have the following tutorials available at the moment:

  1. Developing a simple module
  2. Developing a filter module

API documentation

We use doxygen for documenting the code we write; we provide an API documentation of code in the core libraries (residing in the subfolders of the libs folder) as well as the include-only stuff (in the Toolkit folder) in our API documentation.

Automated testing

We are still in the process of setting up more automated testing:

We are always looking to extend our automated tests, this is a great way to learn open_iA's structure!

Code structure

At the core of open_iA are several libraries providing basic functionality (located in the libs subfolder): open_iA library details

"Public" connections mean that the library exposes this dependency, i.e. all implementations from a dependency are also available for consumers of the connected library. A "private" link means that the library does not expose this dependency to its consumers.

As noted above, open_iA can be extended through modules; these modules (located in the modules subfolder), as well as the graphical user interface executable (in the gui subfolder) and the command line executable (in the cmd subfolder) build upon the functionality provided by the core libraries: open_iA library details

At this point, the open_iA_cmd executable still links to the guibase lib. We are in the process of refactoring code so that in the future it will only need to link to the base lib.

Note: What's described here has been changed in the past, and is subject to change in the future; we describe the structure of the current develop branch here. Other branches and old versions deviate from this structure; for example, before version 2021.08, there was only a single core library.