At 04:30 PM 3/15/2006 -0800, Ted Leung wrote:
Alec Flett wrote:
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.

Ironically, I see the Annotation approach and the "universal attributes" approach I prototyped in Spike, as both being attempts to *better* match the design relationships in the UI in the implementation model than the kind-morphing approach.

You see, when you stamp something, you're not really changing the kind of the item, any more than sticking a note on your calendar changes the nature of the thing you're scheduling. So, the annotation and universal-attribute models simply make it possible for you to *record additional facts about something*, which is all that stamping is - recording a set of related facts about a thing that is not truly changing in its nature.


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.

This is where I disagree; annotations are simply facts recorded about an item. I'm not saying that means we *have* to use annotations, just that I don't think that your feeling should stop us. ;) Note that the purpose of annotations is to add the *ability* to record additional facts about some kind of item. It is not a *requirement* to record them. In a relational system, it would be like adding an extra table that doesn't need to have rows for everything in the base table. It is normal and expected that the presence of an annotation does not require recording information for that annotation on all items of that kind. In fact, it should be an error for an annotation to define required fields.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev

Reply via email to