The Fedora 3 CMA, as it stands, seems far closer to a mix-in or trait model of inheritance than a static, superclass-based one. But it is incomplete here, as well, since there is no conflict resolution (that I know of) for conflicting service deployments. Incorporating an actual inheritance structure into the content models would increase the potential for collisions, a la multiple static inheritance in other languages.
I think the three-pronged summary of content models Daniel offers is useful. It also makes me wary that a static approach to inheritance moves the focus of content models towards object composition, and I'm not sure that should be prioritized over service binding. I suppose my view of objects tends to be service-oriented, since my reaction to Daniel's comments about plug-ins was first to think object validation is a good plug-in candidate, and the second was to think that perhaps the validation should be bundled into services exposed by another object in the repository... - Ben On Wed, Jul 8, 2009 at 9:20 AM, Daniel Davis<[email protected]> wrote: > I think an approach which is static should be considered. In this > approach, the content models of superclasses are incorporated into the > content models which are stored in objects immediately adjacent to the > data object prior to use (a priori). In some ways this is ORE inspired > where we confine ourselves to aggregations and avoid having to solve > graph closure problems in real time. Using this approach, only one > operation is needed to obtain each adjacent content models which > contains all the inherited information from their superclasses (which > can be combined into one general operation to grab all the models as > suggested by Asger). Using this approach dramatically reduces latency > for getting inheritance information especially if we begin to consider > federation where content model objects (and service definitions) may not > be co-located within the same Fedora repo instance. Update of the > adjacent content models happens only when a change occurs to the > superclasses. This approach would facilitate operation of Fedora > without requiring the use of a triple-store. > > To make the services (disseminations) fast an internal cacheing > mechanism is currently used. Its operation needs to be considered in > the design. Also, content models (with service definitions) serve (or > should serve) several purposes. The first is service binding (most > latency sensitive), second validation (care needs to exercised here > regarding what operations are appropriate within the repository and what > can be done externally), and third object construction (which can > substantially be done outside the repository). When and where these > functions happen need to be considered. > > If possible, adding additional methods can be done by extending system > content models and service definitions putting the operation on the > object rather than extending the APIs. > > This note is just discussion, I am not sure which is the best way to > support inheritance---a static or dynamic approach, with or without > triple-store assistance, and where to put the related methods. But I > certainly support figuring out how to do inheritance. Please consider > when the inheritance occurs, performance impact and how to mitigate > latency concerns, and how to minimize code changes. In particular, I > think the Fedora Repo needs to move to a microkernel architecture where > as many functions as possible are pushed into plug-ins or loosely > coupled service bindings. I hope this helps provoke additional discussion. > > Daniel W. Davis > http://fedora-commons.org > [email protected] > > > > > Asger Blekinge-Rasmussen wrote: >> Hi >> >> We, with the Enhanced Content Models, want to support content model >> inheritance. Due to the freedom for Fedora Content Models we can easily >> define a inheritance relation between content models, and inheritance is >> thus supported. No problem there. >> >> But only applications that understand this inheritance relation, can use >> this inheritance system. And, more importantly, disseminator bindings do >> not understand any sort of inheritance. >> >> I have checked the Fedora code. There are 32 usages of the reference >> Constants.MODEL.HAS_MODEL, to get the content models of a object. To me, >> this feels like something that should be collected in a general method, >> like getContentModels(pid) or the like. >> >> I would like to collect these usages, and make this general method, but >> only if work like this would be interesting to Fedora. This is not >> something that I would like to maintain myself, rather it should be >> integrated into the Trunk when the code have been approved. >> >> If this is a feature the Fedora Developers would like, I will start work >> on it soon. >> >> Regards >> >> >> ------------------------------------------------------------------------------ >> Enter the BlackBerry Developer Challenge >> This is your chance to win up to $100,000 in prizes! For a limited time, >> vendors submitting new applications to BlackBerry App World(TM) will have >> the opportunity to enter the BlackBerry Developer Challenge. See full prize >> details at: http://p.sf.net/sfu/Challenge >> _______________________________________________ >> Fedora-commons-developers mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers >> > > ------------------------------------------------------------------------------ > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited time, > vendors submitting new applications to BlackBerry App World(TM) will have > the opportunity to enter the BlackBerry Developer Challenge. See full prize > details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > Fedora-commons-developers mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers > ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ Fedora-commons-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers
