Would you feel differently if the annotation and attribute had different names that didn't imply "hint to layer above me", but made it clear that the annotation belonged to the view layer?

    class GenericViewAnnotations(schema.Annotation):
        """
        Annotate the kind class with default detail view mapping,
        used by the generic branch point.
        """
        schema.kindInfo(annotates=schema.Kind)
        defaultDetailView = schema.One(Block.Block)

or

    class ScaryViewAnnotations(schema.Annotation):
        """
        Annotate the kind class with a "scary" detail view mapping.
        Some custom branch point will pick this view on halloween.
        """
        schema.kindInfo(annotates=schema.Kind)
        scaryDetailView = schema.One(Block.Block)

Can't we still think of the view code as annotating the model code and owning that annotation, thereby not polluting the layers? Some view parcel could provide only the annotation to some existing model, for example.

I'm not necessarily arguing we should do this (especially not in 0.6), but it doesn't seem fundamentally unclean to me.

Cheers,
Katie

Alec Flett wrote:
I personally I don't see annotations as an excuse to start blurring different layers of the application, but I obviously think it has its place. In the case of collections colors I view that as a piece of code saying "I need to remember some of my own proprietary information about this object" whereas I think the ViewableKind thing is more the other way around - a kind saying "I'll provide a hint to the layer above me, in case it needs it"

So annotating 'Kind' would make more sense if the detail view or trunk parent block were attaching information to the kind like "Oh, next time I display this kind, I'll need this information.." - but if it is used that way, where does it get that information to begin with?

If anything its like the way 'color' is still an attribute of AbstractCollection - its relying on some base type to provide an attribute, and hoping there is some specialized use of the base case that will make use of the attribute.

So I think it comes down to semantic ownership. Annotation is, for me, for allowing the owner of some data to attach that data to something else that it doesn't own. Like if you came to a party and I asked you to wear a name tag calling you "Phillip with two L's" - that name has little or no meaning for you, but I can use it to distinguish you from related people I know like "Philippe with Two P's and an E"

I feel like the ViewableKind annotation is more like if you made and wore your own name tag with a pronunciation guide in Cyrillic, assuming that anyone who needs to pronounce your name will know Cyrillic.

Alec

My question is entirely independent of the discussion at hand; I want to learn more about how people perceive the annotations concept, whether they perceive it as good or bad. The fact that you seem to see it as both simultaneously makes you an especially good person for me to learn something interesting from. :)


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

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

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

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

Reply via email to