There is a marker interface Parametered which is used to provide some kind of documentation for command line applications. Being applicable to applications, this interface is rightly in mahout core.
This interface is on DistanceMeasure and thus on all distance measure implementations. This means that all of the distance measures cannot be in math since core depends on math and math (rightly so) doesn't say anything about how you should be building user interfaces. This means that very simple mathematical constructs like a base clustering algorithm can't be in math. This is wrong. In my humble opinion. Soooo..... What would folk say about doing the job of Parametered using dependency injection of some kind. Or a table driven approach with a static initializer that puts all of the appropriate classes into the table? That would make Mahout more configurable and would allow the use of non-Mahout classes as if they are Parametered.
