...
Module types
The IGB project currently consist of 54 modules, and these modules can be classified into the following groups.contains more than 50 modules. These include:
- Library Modules - modules which are only contributing that contribute "utility" classes for consumption by other modules (e.g. guava, apache commons)
- API Modules - modules which that only contain service interfaces, abstract classes, data model, or similar content. (e.g. the igb-services-api module)
- Implementation Modules - Modules which modules that implement instances of the interfaces/abstract classes contained in API modules. There implementations typically will take the form of a registered OSGi service, requiring none of the internal content of bundle to be exposed.
- Blended Modules - Small modules which may both define API content and publish implementation content within the same module. We do not consider this improper in most cases as long as the package exports are ensuring a proper separation of concerns and not exposing internals. As a rule,
only expose API, utility classes, and data model.
...
- Core Modules - Modules considered to be critical to the core IGB application
- Plugins - Modules providing content which expands the functionality of the core IGB application, but which are not required for its basic operation.
- Default Plugins - Although many plugins are not required, we choose to enable many plugins by default (e.g. weblinks, bookmarks). The line between default plugins and core modules can be fuzzy since many of the functions provided by the default plugins are very important to our application, and the classification system may evolve to eliminate this category
- Optional Plugins - Plugins which are providing useful functionality, but for one reason or another have been deemed to be an opt in feature for users (e.g. 23andMe-snp-converterProtAnnot, igb-command-socket)
- Development Plugins - An opt-in set of potentially incomplete work or functionality not well tested and therefore not released.are available from a development plugin repository not "turned on" by default in IGB
Important IGB modules for external developers
- igb-services-api - An API module containing most of what would be needed by any external contributor. This is the primary API jar of the project.
- igb-swing-ext - A Library module which may be needed by contributors interested in leveraging some of the swing components used elsewhere throughout the codebase.
- common - A Library module which has many useful utilities used frequently in our internal modules.
- genometry - A blended module containing much of the data model used in the project. Admittedly, this As of this writing, the genometry module needs more work and will in the future be reworked into additional modules, but there is a high likelihood developers contributing significant functionality to the project will need to depend on this module.
- genoviz-sdk - A Library module containing many custom components built on by IGB for visualization. Developers working on custom visualizations may have a need to depend on this module.
...