See http://home.earthlink.net/~ajregier to learn more about me.
I am now planning to work on the ClassRepository, since no one else seems to be stepping up to do this particularly important piece of work. I will start with Requirements, then Analyses, then Design, instead of Coding first like is the norm. :)
In my job I have been responsible for writing several API's which are the programming interfaces for generalized processes which might have many very different implementations. If done right, an API can be programmed to in such a way that the application need not even be recompiled if the implementation of the API changes.
(Here, I mean the API to be synonymous with a set of interfaces or base classes which are compiled. The implementation comes in the form of implementing the interfaces or subclasses the base classes. In this case, in order to use an implementation, the programmer of the application will still need to know the names of the subclasses which implement the functionality of the API in order to use them. Thus when the implementation of an API may need to be switched, all of the applications which use the API will need to be updated, recompiled, and reinstantiated. There are ways to get around this such that the application never needs to know the implementation which it is using and it is actually up to the API itself to choose its own implementation. Usually this can be done by the API checking either a Property or maybe consulting a registry of some kind. This is how I propose we architect the device drivers.)