Chapter 32
Contributors Guidelines

This chapter is concerned with the contributor guidelines. Here, you can find useful information about:

A wiki page is also available here :

32.1 How to Contribute


Contributions through Remote Modules is the preferred way if your contribution is about adding new classes or application to bring new features to OTB. Please also refer to ITK guidelines for remote modules (

32.2 What are remote modules?

Remote modules are just like regular modules, except they are not distributed inside OTB source code.

In the Modules/Remote folder of the OTB sources, you can add any number of directories containing valid modules. You will then be able to activate those module through CMake configuration, and build them.

But there is more. Let assume that you have a valid remote module, hosted somewhere on a Git repository. We can add a special CMake file in the Modules/Remote that will tell CMake that this remote module is available, and can be activated during CMake configuration. Upon activation, CMake will first checkout the remote module source code into Modules/Remote, and then build it as a regular module.

But there is more. Once the CMake file describing your module is added into Remote/Modules, you can benefit from OTB development services just like any other module: dashboard build, packaging, doxygen documentation ...

To make it short, by contributing a remote module:

32.3 How to get your remote module inside OTB?

If accepted, your CMake file will be placed into the Modules/Remote folder inside OTB source tree.

During the OTB release process, all module complying with the remote module release policy will be packaged along with standard modules.

A remote module can be removed from Modules/Remote (this only requires to remove the CMake file describing it), if:

32.4 Remote module acceptance policy

So as to get your module accepted as an official remote module, you should comply with the following:

An internal module should never depend on a remote module whatsoever.

32.5 Remote module release policy

During the OTB release process, a remote module will be included in source and binary packages if:

Developers will notify remote modules authors of existing issues at Release Candidate. If by 3 day to the final release dates, some issues listed above still exist, the remote module will be removed from the release source and binary packages.

Moreover, remote module bringing in new third party dependencies will not be included in binary packages.