Contribution

From Bio++ Wiki
Jump to: navigation, search


How to make your Bio++ code available to others?

Several possibilities exist for that purpose, and several factors are to be considered to answer this question. The best solution depends on the answer to all these questions.

Does your code address a general problem or is it specific to a certain task?

If your code is generic enough, it might be worth integrating it in the libraries so that many other can re-use it. If it is specific, it is usually better to keep it separate so that the main libraries do not become overloaded with classes and functions that will not be used by most of the users.

Can your parts of your code be re-used in other analyses ?

If yes, then the code should be designed as a library, otherwise, as a standalone program. Library components can be integrated in existing library, or in a new library in the project. The number of available libraries in Bio++ has increased over time, with the apparition of more specific libraries dedicated to genomics (e.g. bpp-seq-omics), database access (bpp-raa) or graphical interfaces (bpp-qt).

Will your code be maintained ?

The code integrated in the Bio++ libraries need to be maintained, either by you or someone else. This is another reason why highly specific code, only used by one developer, is usually not integrated in the main libraries.

Is your code based on a published algorithm?

Unless it addresses a trivial task, we tend to include only published algorithm in Bio++, with appropriate references, so that the user always know what he is using. This is particularly important for new models.

Does your code depends on external library ?

The Bio++ main libraries (bpp-core, seq, phyl, popgen) depend only on the C++ STL library. If your code contains other dependency, it has to be in a separate library/program. Within the Bio++ project, the bpp-raa library for instance depends on zlib, and bpp-qt on the Qt library. As all classes and function are in the bpp namespace, the Bio++ libraries cansafely be used together with other libraries such as libSequence, SeqAn or boost.


How can I ensure my program will always work with Bio++ ?

The Bio++ libraries are under active developments, and is some cases, despite our effort to maintain backward compatibility, your code will have to be updated to work with the newest version of the libraries. While we expect that you will always benefit from the use of the latest developments, we understand that this might be a source of inconvenience for the maintenance of some projects. Therefore, a "stable" version of Bio++ is released roughly every year. These versions have frozen code, with documentation and downloadable packages. Once your program as reach stability, it is therefore a good idea to compile it against the latest stable version of Bio++ available at that time, and to refer to it. Therefore your users will always be able to compile your program by downloading the pappropriate version of the Bio++ libraries.