Frequently Asked Questions about mpiBLAST-2.0
- Why are mixin layers being used? And what are they?
- If this is an open-source project, why wasn't I consulted on the design?
Why are mixin layers being used? And what are they?
The long response to this question can be found in A Maintainable Software Architecture for Fast and Modular Bioinformatics Sequence Search. The short answer is that mixin layers provides for a modular design while preserving high-performance. Because mixin layers uses templates to form the inheritance hierarchy, the abstraction layers are resolved at compile time.
A mixin is an abstract subclass through which one can extend the behavior of a variety of superclasses[G. Bracha and W. Cook. Mixin-based inheritance.]. A mixin layer is a flexible mixins-like design for implementing collaboration-based designs by assembling software modules in layers where each successive layer is represented as a collection of inner classes[Y. Smaragdakis and D. Batory. Implementing layered designs with mixin layers].
If this is an open-source project, why wasn't I consulted on the design?
In an attempt to fast-track the development and release of mpiBLAST-2.0, as well as avoid the issues with "decision by committee", the design of mpiBLAST-2.0 was started and completed in the summer of 2006. In those three short months, 5 different designs were evaluated, with the current design ultimately chosen. For details, please see, A Maintainable Software Architecture for Fast and Modular Bioinformatics Sequence Search. The satisfaction of the current design will be evaluated in the coming months as developers and users begin to use the current design, and if it doesn't satisfy the needs and goals of the project, a new design will be created. For now, let's see how well the new design works and defer discussion about a future design until later.