[Dev] Services, CPIA, Content Model intercommunication

Brian Kirsch bkirsch at osafoundation.org
Tue Nov 9 10:49:28 PST 2004


Comments inline

Brian Kirsch - Email Framework Engineer
Open Source Applications Foundation
543 Howard St. 5th Floor 
San Francisco, CA 94105 
(415) 946-3056 

On Nov 8, 2004, at 1:23 PM, Ted Leung wrote:

> Brian,
>
> One other issue that I just thought of is that we'll probably end up 
> with more attributes on items than we would if we didn't use queries 
> -- examples of this would be the various status flags that are used to 
> determine which query/item collection an item would be in.
>
> Ted
>

At first glance as long as their are not too many additional attribute 
require it does not seem like a substantial performance hit. If we used 
a Notification Manager there would be performance issues their as well 
with the registering and unregistering of listeners and the callback 
iterations.

Am I correct in assuming that the additional attributes will take up 
more disk space in the Repository but will not
adversely effect performance?



> On Nov 8, 2004, at 12:08 PM, Brian Kirsch wrote:
>
>> Ted,
>> Perhaps I misunderstood but I thought the Query notifications were 
>> separate from any work we are talking about on
>> Notification Manager. My understanding was that I could ask to be 
>> notified by your code when a change occurs in an item collection 
>> (adding / removing of Mail). My question was do you see any issues 
>> with using your Query notifications as the
>> main mechanism for inter-layer communication? This would be 
>> independent of any Notification Manager. And in fact if we use item 
>> collection notifications  then the role and need for a dedicated 
>> Notification Manager would need to be revisited.
>>
>>
>>
>> Brian Kirsch - Email Framework Engineer
>> Open Source Applications Foundation
>> 543 Howard St. 5th Floor 
>> San Francisco, CA 94105 
>> (415) 946-3056 
>>
>> On Nov 8, 2004, at 11:33 AM, Ted Leung wrote:
>>
>>>
>>> On Nov 8, 2004, at 11:21 AM, Brian Kirsch wrote:
>>>
>>>> Ted,
>>>> Thanks for the feedback.
>>>>
>>>> As the Query owner do you see any issues or drawbacks to using 
>>>> query notifications as the means of inter layer communication?
>>>
>>> The big issue that I see is the performance of notification.  You're 
>>> looking at substantial overhead vs just calling a method (or a few 
>>> methods).   The big advantage is that use of notification allows us 
>>> to decouple components from one another as long as the subscription 
>>> names are well known.  If subscriptions are items, then we could 
>>> store them in the repository and you could query for the appropriate 
>>> subscription.  This would take the place of looking for a particular 
>>> service via some kind of name service (think of using JNDI to lookup 
>>> the implementations of various functionality in a J2EE context).
>>>
>>> Since we are also considering extending notification to allow 
>>> asynchronous processing of notifications and cross thread 
>>> notification, there may be some additional benefits.
>>>
>>>>
>>>> I agree with you that although the original suggestion of using 
>>>> queries was made to solve the Mail dependencies we are
>>>> really talking about fundamental architecture design that will be 
>>>> the pattern that other Chandler services and Third party parcels 
>>>> will implement. I am more than happy to do the write up but I will 
>>>> need some participation / feedback from yourself and Bryan 
>>>> regarding the CPIA / Query language portions of the write up.
>>>
>>> I'm happy to contribute -- I think it would be good to have Bryan 
>>> take a crack at things first, and then I can review/fix what he 
>>> does.  I'd like to get Bryan's feedback/insights/etc before he gets 
>>> totally brainwashed ;-).   Bryan if you're not comfortable with 
>>> that, just say so, and I'm happy to get involved as necessary.
>>>
>>> Ted
>>>
>>>>
>>>>
>>>>
>>>> Brian Kirsch - Email Framework Engineer
>>>> Open Source Applications Foundation
>>>> 543 Howard St. 5th Floor 
>>>> San Francisco, CA 94105 
>>>> (415) 946-3056 
>>>>
>>>> On Nov 8, 2004, at 11:09 AM, Ted Leung wrote:
>>>>
>>>>> Brian,
>>>>>
>>>>> Thanks for summarizing our meeting -- it's really helpful.   I 
>>>>> wanted to add/accentuate 2 points:
>>>>>
>>>>> 1. It seems to me that Bryan's suggestion for using query 
>>>>> triggered notifications for inter layer/inter parcel communication 
>>>>> is a fundamental architectural pattern for Chandler.  This is 
>>>>> something that hasn't quite sunk into our thinking -- most of us 
>>>>> were familiar with the general notions (especially having been in 
>>>>> the meeting on notification), but it still didn't leap to mind as 
>>>>> the first solution (at least for me).  So I think it's worth 
>>>>> stating/re-stating this principle, as well as documenting it.
>>>>>
>>>>> 2. There's a bit of squishiness in our discussions regarding where 
>>>>> certain kinds of functionality should live.  Taking the example of 
>>>>> Mail, there were questions about where particular parts of the 
>>>>> Mail functionality should live: in the content model, in the 
>>>>> services layer, etc.   We should really be looking at this closely 
>>>>> (We'll probably run into the same issues with ZaoBao, at least) 
>>>>> and try to distill out some guidlines for how this should be done.
>>>>>
>>>>> Other than that, I think that this was a good set of thinking, and 
>>>>> that Brian ought to go ahead on a writeup.
>>>>>
>>>>> Ted
>>>>>
>>>>> On Nov 5, 2004, at 12:34 PM, Brian Kirsch wrote:
>>>>>
>>>>>> Hello,
>>>>>> Ted, John, Bryan, Donn, and myself had an informal meeting 
>>>>>> yesterday to discuss the best way to ensure proper division 
>>>>>> between the CPIA, Services, and Content Model layers. This 
>>>>>> discussion was driven by Donn and my work on mail in .4. We found 
>>>>>> with the current architecture that dependencies arose across 
>>>>>> layers. The Content Model imported code from the CPIA and 
>>>>>> Services layers. The Services layer imported code from the CPIA 
>>>>>> layer.  This is not a good thing and should be addressed in the 
>>>>>> .5 release.
>>>>>>
>>>>>> Based on the meeting we determined that Content Model items 
>>>>>> should have some basic knowledge of how to perform operations on 
>>>>>> themselves. For example, an EmailAddress should be able to format 
>>>>>> and validate itself.
>>>>>>
>>>>>> And that the services layer should know how to take action on a 
>>>>>> Content item. For example, the mail service should  know how to 
>>>>>> convert messages to and from MailMessage items and send and 
>>>>>> receive those items via SMTP  and IMAP (with POP to come in a 
>>>>>> future release).
>>>>>>
>>>>>> Bryan came up with a very good suggestion to use ItemCollections 
>>>>>> and Ted's Query language as the communication mechanism between 
>>>>>> the layers.
>>>>>>
>>>>>> In the case of mail, there would be an In item collection and Out 
>>>>>> item collection for each IMAP and SMTP account. When a user sends 
>>>>>> mail the CPIA layer places the MailMessage in the appropriate Out 
>>>>>> collection. The mail service would register as a listener to the 
>>>>>> Out item collection via Ted's Query API.  The mail service would 
>>>>>> be notified when that MailMessage  was added to the Out 
>>>>>> collection. The mail service then sends the MailMesage item via 
>>>>>> SMTP  and moves  the MailMessage from the Out collection to the 
>>>>>> Sent collection. The CPIA layer gets notified of addition of the 
>>>>>> MailMessage to the Sent collection and displays a status message 
>>>>>> such as 'Your message was sent'. This is a very clean model for 
>>>>>> services / CPIA communication and can be applied to all Chandler 
>>>>>> services (webdav etc).
>>>>>>
>>>>>> This change will require some significant re-factoring of the 
>>>>>> Mail code which will take some time (2 weeks?) to do.
>>>>>>
>>>>>> Another good suggestion was made that perhaps sharing would be a 
>>>>>> good first candidate for implement this new design since much of 
>>>>>> sharing is being reworked anyways and it does not have the 
>>>>>> complex dependencies the mail service does (Twisted, Threaded 
>>>>>> commits,  Repository view setting and unsetting).
>>>>>>
>>>>>> Thoughts on the proposal?
>>>>>>
>>>>>> If everyone agrees this is a good way to go the next step is to 
>>>>>> get a formal write-up together for review.
>>>>>>
>>>>>>
>>>>>> Brian Kirsch - Email Framework Engineer
>>>>>> Open Source Applications Foundation
>>>>>> 543 Howard St. 5th Floor 
>>>>>> San Francisco, CA 94105 
>>>>>> (415) 946-3056 
>>>>>>
>>>>>>
>>>>>> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>>>>>>
>>>>>> Open Source Applications Foundation "Dev" mailing list
>>>>>> http://lists.osafoundation.org/mailman/listinfo/dev
>>>>>>
>>>>> ----
>>>>> Ted Leung                 Open Source Applications Foundation 
>>>>> (OSAF)
>>>>> PGP Fingerprint: 1003 7870 251F FA71 A59A  CEE3 BEBA 2B87 F5FC 4B42
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>>
> ----
> Ted Leung                 Open Source Applications Foundation (OSAF)
> PGP Fingerprint: 1003 7870 251F FA71 A59A  CEE3 BEBA 2B87 F5FC 4B42
>
>




More information about the Dev mailing list