Orfeo ToolBox 5.0 is out!

We are very pleased to announce that Orfeo ToolBox 5.0, codename “Chalcidinae” is out! After Orfeo ToolBox 4.0 which brought the support of latest ITK, we feel this should be a new major release since it involves in-dept changes in the way Orfeo ToolBox is organized and builds. The focus for this release is therefore not on new functions, but changes are non-the-less important: easier build, better code organization, easier contributions …

Modularization: a big step forward

The 2988 source files composing Orfeo ToolBox are now organized into a set of 146 modules, folded into 16 groups, using ITK new code organization and CMake scripts. Modules are self-contained: headers, code, tests and applications are located in the module, it is therefore much easier to find your way in, since related files are now located close to each other. Modularization also brought a better documentation (our API documentation is now organized by modules) and Testing (tests can be filtered by module on our Dashboard).

CMake scripts ensure dependencies tracking between module : each module can be deactivated, which will in turn deactivate any dependant module. As third party software are also handled by dedicated modules, we were able to make almost all of them optional (and OFF by default): a minimal OTB can be built with only ITK and OSSIM.

You can find more information on how to construct an OTB module here.

Third party policy reviewed

As part of this refactoring, we also reviewed our third party policy: by the past, code from third party software use to be included in Orfeo ToolBox source code for the sake of a simpler building procedure for users. However, since many dependencies are now completely optionnal (and since we now have a superbuild procedure, which I will describe later in this post), this is no longer needed. We therefore removed all third party code from OTB, with the notable exception of 6S, SiftFast (no package available on any system whatsoever) and ossimPlugins (a lot of code contributed by Orfeo ToolBox in this one). We also removed a lot of third party software which were not needed anymore (expat, edison, openthread …).

Superbuild comes to rescue you

If all third party software are removed from Orfeo ToolBox source code, it does not mean Orfeo ToolBox is more difficult to build: it is actually quite the opposite thanks to the Superbuild feature, a CMake project allowing to download, build and install all required dependencies with controlled version and configuration, and then build Orfeo ToolBox on top of it. With this way of building Orfeo ToolBox, a very small set of pre-installed software is actually required before you can build a fully fonctional and  complete Orfeo ToolBox, as explained in this blog post.

A new way for code contribution

Modularization also brought a new way for code contribution : remote modules. You can actually write a module of your own, publish it on a git repository somewhere, and have it referenced through an option during Orfeo ToolBox cmake configuration. When turning this option ON, cmake will checkout the module code in Orfeo ToolBox source tree and build it as a regular module. And yes, it means we could provide dashboard testing and packaging for those external module as well. You can therefore contribute to Orfeo ToolBox without actually chaning a single line of code in Orfeo ToolBox. And you get to author, host and manage the source code of your contribution. A list of existing remote modules is maintained here.

Bugs hunt

We actually fixed quite a lot of bugs during the last weeks of the release preparation, and 10 more were fixed between the release candidate and the final release. Check them out in the release notes, some very annoying one now belong to the past!

Get OTB 5.0 and Monteverdi2 0.8.1

As usual, sources (OTB, Monteverdi2) and binary packages (Monteverdi2 for Mac OS X and Windows) can be downloaded on Sourceforge. For Linux users, new version will be soon available for update through your favorite package manager software. We are maintaining now a list of OTB binary packages available where you will find supported platforms and package versions.

We welcome your feedback and request, and encourage you to join the OTB community and mailing list.

OTB Dev Team