For most open source projects, integration of patches provided by willing users if not an easy task and it often falls behind. The burden of patches is both on the user himself and on the project member doing the integration.
Generating a patch is not straightforward for the user (he needs to compare with the original version if he still has it) and worst, he doesn’t get the benefits of version control systems.
On the other side, the project member integrating the patch has to find the correct version against which the patch applies, he has to fight with the line breaks if the patch was submitted by email.
The more obvious solution is to give access to the version control system to the potential contributors: this way, they can fully contribute and the integration is easy. But that raises another question: do you really want anybody to be able to put his/her contribution without any check? Sometimes, the contribution could break another capabilities, sometimes a different solution to fix the problem might be more appropriate, sometimes, this is not the time to integrate risky modifications… That the case why in most open source projects, the core team of people with commit access is limited.
With the availability of distributed VCS (mercurial, git, bazar), part of this problem disappear: the user can work locally and benefit from the VCS, it also makes the patch generation easier. But there is still the problem of sharing. The main argument of the DVCS is that a contributor can go out and say “hey guys, here is my cool version, come and pull from it”, but that involve him setting up a public repository. Unlikely if he is just interested in using the program and on his way fixed a bug.
To make this process easier, we’ve just created a “sandbox” repository for OTB which works as a testing environment that isolates untested code changes and outright experimentation from the production environment or repository. Here is how it works:
Clone the main OTB repository:
hg clone http://hg.orfeo-toolbox.org/OTB
as normal
Set up your mercurial identity, in Linux, edit the ~/.hgrc and put the following lines:
[ui]
username = Your Name <email-where-we-can@contact.you>
work as usual, commit locally as you would do for your own project
when you are happy, push to the sandbox
hg push http://hg.orfeo-toolbox.org/OTB-SandBox
If necessary, use the -f option (we will sort out the mess). When ask for the login use “anonymous” with the password “otb”.
We will be informed that something new is in the sandbox, but you can also drop a mail at otb-users@googlegroups.com to provide more explanations.
We will then review the corrections, test them and then merge them into the main repository.
This way, the fix, the new capability, etc will be maintain in the upcoming version of OTB. And also, the user will have the chance to appear in our latest codeswarm.
When working on a project on a day to day basic, it’s hard to get the big picture. To check the organic organisation of open source project, the codeswarm video is gaining an increasing popularity. On these videos, created from the source control system of the project, each file (represented by a dot) flies to the developer who just modified it. Each developer also tends to move towards other developers working with him.
Here is the latest codeswarm of OTB covering 4 years of history including the recent Monteverdi:
As you can see, the development is steadily increasing and there is much action at the end with a strong effort on Monteverdi and the java bindings: we even barely distinguish the Christmas break now… You can also note that external contributors are coming strong with the OTB-Qgis plugin effort done 100% outside of any contract…
We are happy to announce a new OTB release. This is version 3.2, code name 62°38′35″S 60°14′31″W. Simultaneously, we are releasing the first stable version of Monteverdi, the all-in one user-friendly graphical tool for remote sensing image processing.
This Monteverdi version includes modules for image ortho-rectification, registration, radiometric calibration, supervised and unsupervised classification, segmentation, filtering, feature extraction and change detection.
These are the new main add-ons to the library:
Support for TerraSarX, Quickbird and Spot5 radiometric calibration
Support for Aeronet files
Various filters for Object Based Image Analysis based on LabelObjectMaps
Support for RPC sensor model estimation from a set of Ground Control Points
Support for SVM cross-validation and parameters optimization
Box and Whisker filter to detect outliers on VectorImages
Enhanced SOM algorithm taking into account invalid or missing values
Experimental Wavelet transform classes
Filters for GIS database interaction (postgis database)
Support for a variety of vector file formats (based on GDAL/OGR)
Use of a configuration file to change some parameters without recompiling
Experimental support for internationalization
Monteverdi can be considered ad the successor of the OTB-Applications package, but since some of the legacy applications are not yet integrated in Monteverdi, we are also shipping a 3.2 version of the applications. For MS-Windows users (XP/Vista/Seven) there are binary auto-install packages for both Monteverdi and OTB-Applications.
Monteverdi is the new OTB’s killer application. The main strength of Monteverdi is its modular architecture, which allows, as a typical plug-in structure, to enrich the application features.
The problem we have now, is that there are so many interesting things in OTB, that we would want them all to be available as Monteverdi modules. Since you can compile Monteverdi with the set of modules of your own choice, the more modules you have, the more chances you have to be able to build a customized Monteverdi which suits your particular needs.
Building a Monteverdi module is really easy when only simple graphical user interface (GUI) interaction is needed. If the only thing you need for a module is select the input data and some parameters, the module creation is really straightforward. You can take as an example the Algebra module, which takes 1 or 2 images as input and applies very simple filters (addition, subtraction, etc.). This module can be used as an example in order to provide most of OTB/ITK image filters as Monteverdi modules.
In some cases, you may want to have a preview of the results to see the influence of a given parameter. One example of this is the Mean Shift module. The source code is more complex and we use the MVC (model, controller, view) design pattern in order to have a nice architecture. However, if you want to have the same kind of module but for other kind offilters, you can start from here and just change the filter in the pipeline.
The OTB development team, would like to have some help in the task of creating new modules for Monteverdi. This help can take several forms: just giving suggestions of modules, porting existing applications to modules or creating new modules.
We have set up a wiki page so you can participate easily.