OpenMarkov is structured as a set of subprojects. The division has been designed so that dependencies are minimized and the application can be easily extended. Each subproject is stored in a different Bitbucket repository and deployed as a Maven artifact on our Nexus server, as explained below.
At this moment OpenMarkov consists of 44 subprojects that follow the next structure:
The packages "heuristic" and "learning", colored in blue, comprise several subprojects.
"Heuristic" contains all the heuristics implemented in OpenMarkov:
The "learning" package contains the learning algorithms, the metrics, and the graphical user interface for automatic and interactive learning.
Bitbucket is a web-based hosting system, similar to SourceForge, JavaSource, GitHub or Google Code. It offers two control version systems: Mercurial and Git. It also offers wikis, issue trackers, and other facilities.
We use Git to store in Bitbucket a working copy of OpenMarkov's Java source code, as well as this wiki and an issue tracker.
Nexus is an application for managing software repositories.
We use Maven to deploy OpenMarkov's code in our nexus server, nexus.openmarkov.org, in the form of snapshots and stable releases. This repository contains a .jar file for each subproject. The .jar file for the subproject "full" includes all the other .jar files and allows the user to run OpenMarkov's GUI as a Java application. It can also be downloaded from the users' page.