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

Reply via email to