[Design] Re: [Chandler-dev] Reengineering stamping

John Anderson john at osafoundation.org
Thu Mar 16 09:18:18 PST 2006



Ted Leung wrote:
> [ in an effort to reduce the number of cross posts, I'm just replying 
> to chandler-dev, since this is more about the implementation than the 
> design, at least in my mind ]
>
> Alec Flett wrote:
>> I think part of the issue is that there are key differences between the
>> design and implementation of these relationships - from my perspective,
>> what jeffrey described is the domain model relationships and how they
>> might affect the implementation of the UI, and what you've described is
>> more about the design relationships and how you would design the UI to
>> model them.
>>
>> (and I think threads are orthogonal to the implementation details that
>> Jeffrey is trying to work out)
> +1
>>> I get 1(Identiy coupling) and 3 (Loose coupling), I see the point of 
>>> 2, though I'm not sure we need to address this use case in the 
>>> short-term. But I think there's a missing relationship type: Threads.
>>>
>>
>> At the moment, we've tightly matched the design relationships (i.e.
>> "stamping") all the way down through the domain model (i.e. so
>> "stamping" == "identity") and I think that is why there has been so much
>> resistance to stamping from those implementing it. The implementation of
>> stamping-as-kind-morphing has caused us some serious headaches and the
>> 0.7+ plans are looking even worse as long as we continue with our
>> current implementation. I'm sure it made sense at the time, but I think
>> the design of the product has become more concrete and it doesn't make
>> sense anymore.
> There might be other ways to preserve item identity if that was what 
> we wanted, such as Annotations.   However, I think I agree that the 
> kind morphing that we are doing now is problematic.
Can someone summarize the implementation headaches with stamping as now 
implemented.
>>
>> In my mind, the crux of the matter is whether identity coupling is truly
>> necessary all the way down in the domain model.
> I think the answer to this question lies in whether we are a talking 
> about stamping as a UI/display characteristic or not.   For example, 
> when we share, we use the item cloud notion to mark out a bunch of 
> items that must be treated as a unit in order for sharing to work 
> correctly.   So if something is stamped in the end user/design sense, 
> what do we expect it's sharing behavior to be?   Another are where 
> this might matter is searching.   If you do a search/filtered 
> collection do you expect to see the rest of the stamped items in the 
> result of the search?
>>
>> If the intent of the design is to make it look like, for example, a
>> calendar event is on my task list, there are other ways to implement
>> that beyond the identity mapping that we currently do.
> Agreed.
>>
>> I think frankly, it would behoove us to separate out the design notion
>> of an "Item" from the implementation notion of an "Item" because when
>> you (Mimi) say "An Item should have these properties and behave this
>> way" we're trying to match that too exactly in the domain model. (though
>> there is some irony that many people correctly point out that a "design
>> Item" is usually composed of many "implementation Items")
> If we can do that without problems for sharing or searching, then I'd 
> agree with this.
>
>>>
>> 3. Loose coupling is simply having attributes on an item point to 
>> another item. ie. Jeffrey in the To: field points to a Contacts item 
>> for Jeffrey Harris.
>> In the design sense, this is absolutely true. In the implementation,
>> there is little or no distinction between Tight and Loose coupling
>> besides perhaps the name of an attribute (for instance, tightly coupled
>> items may simply be related because their "tightlyCoupled" attributes
>> point to one another and loosely coupled items use "looselyCoupled")
> In the implementation we have 3 mechanisms, possibly 4, available for 
> relating items.
>
> 1. attributes whose values are scalars
> 2. attributes whose values are other items
> 3. kind morphing
> 4. annotations
>
> I think it's pretty clear that there are problems with using #3 to 
> implement the stamping design that Mimi is after.   Since all problems 
> in CS can be solved with indirection, I'm pretty sure there's a way to 
> solve our problems using #2, but I have a feeling this might be more 
> complicated than we think it will be.    Since #4 works on a per class 
> basis, it also feels like the wrong solution, since stamps aren't 
> applied to all items of a kind/class.
>>
>> [and yes, those are terrible names.. and that may not even be the
>> "right" way to implement it]
>
> Using a naming convention is certainly one way of implementing it.  
> The usual problem with naming conventions is name clashes or 
> misspelling of names.
>
> On the whole, I'm in agreement with a lot that Jeffrey and Alec said, 
> but there are still some things that trouble me and I need some more 
> time to ponder.  I just wanted to add a few thoughts while I had them.
>
> Ted
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "chandler-dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/chandler-dev


More information about the chandler-dev mailing list