Hi, Brian

Thanks for the detailed questions, and sorry it's taken me a while to get back to you: I've been busy with α3 stuff in the interim. My answers, or initial thoughts more than answers, are inline below.

--Grant

PS: Believe it or not, that's the first time I've seen that pun on 'bailiwick', really. Maybe in the past I've tended not to associate with people who use such fancy words :)

On Jun 12, 2006, at 13:13, Bryan Stearns wrote:

Grant,

I made the list below while trying to figure out upcoming tasks related to stamping and the dashboard in the UI... I'm not sure in whose bailliewick these reside, but I thought I'd bring them up with you to see if you'd considered them, or had opinions...

* What's the state of the discussion about whether we should use annotations for stamping?

Well, that's being explored. I wrote some very simple code to implement what was discussed on chandler-dev@, but hadn't gotten as far as converting over any of the existing mixins. For the next week or so, this is mostly on hold: my main focus right now is recurrence work for 0.7α3.

(many subquestions here: How do I know what stamps an item has?

You can just ask an item for its stamps (as in pje's email <http:// lists.osafoundation.org/pipermail/chandler-dev/2006-May/ 005911.html>): Something like

     Stamp(item).stamps

should be what works.

How will the attribute editor mechanism need to change? The attribute editor mechanism decides how to present an attribute based on its schema type; this attribute is specified as a simple name ("startTime") in definitions of instances of AEBlocks (detail view) and Columns (tables). Is it enought to simply change to a dotted python class name (eg, "osaf.pim.CalendarEventMixin.startTime"?)

A dotted attribute name should work, although maybe it'll be worth thinking about having another way. (i.e. maybe the dotted name is exposing an implementation detail of annotations).

* What of attribute redirection remains at the domain-model level? The dashboard spec calls for editing of attribute-redirected columns like Who and Date - how is this implemented in a world where duck-typing no longer works for stamped attributes?

I believe we're moving away from redirected (and duck-typed) attributes, i.e. fixing which attributes are displayed in which views (à la <http://lists.osafoundation.org/pipermail/chandler-dev/2006- March/005388.html>, and related). However, this raises a different question, which is that if, as suggested in that thread, we move to using onValueChanged() to update various UI-related attributes (e.g., "DashboardWho"), and we have stamping as annotations, then some onValueChanged() implementation needs to iterate over stamp classes.

* Does column sorting always imply another repository index on each user-visible collection? It seems like either the comparison function needs to take into account all the possible conditions that affect sorting (so the function for the communications column needs to consider whether the item is stamped as communications, and if it is, read/unreadness, draft-ness, inbound/outbound-edited/ outbound-queued/outbound-sent, whether it needs a reply, whether it's first-time or updated, error state, and triage status; the Date column depends on tickler time and condition, start & end datetime if stamped as event, date last modified, date sent if stamped as comm, and date created), and the index needs to be updated (and collection notifications need to fire) if any of these underlying conditions change. (Having date-last-modified in this list means there are going to be a lot of potential index updates happening!)

As I understand it, sorted tables require an index (or would be cripplingly slow for large collections). But, cases like this (and some of the subsequent) lead me to think we maybe need the ability to index (and update) computed attributes (the repo version of Python properties). Something else to think about is that maybe we could leverage subindexes in some way: i.e. have a master index for all table-sortable properties of all items, and have the different table views use subindexes. That said, I know little enough about subindexes that I don't know if they will be a magic bullet here.

* The Dashboard spec says the triage column is sorted Now, Later, Done, and within Done by the date that the Done status was set. (This implies a triageValueChangedDate attribute - is there a way to get the repository to enforce updating this value when the triage attribute is changed -- I'm guessing we'll need some similar repository-level mechanism to set and update the date-created and date-last-modified attributes.

I don't know of an 'update attribute x when any of y, z, ... has changed' mechanism, other than hand-coding an onValueChanged() in the Python class. (I guess monitors could do this, but certainly having a monitor per ContentItem is overkill).

* Further, the triage-status column isn't supposed to have user changes take effect until the user hits a Purge button; this seems to imply that we'll need a separate attribute to store the pending triage state, and copy it to the real triage attribute when the user hits the button. Are there issues around conflicts that we need to deal with here? (What happens if triage status changes automatically between the user's edit and the user's Purging?)

Hmm.... I hadn't seen the Purging feature: That looks pretty tricky in our current auto-reindex-columns paradigm.

In the event-updates realm, I'm not sure how to address how to address a couple of requirements: * When the user edits a received emailevent, the Send button is supposed to be enabled. At what level should this happen? (It seems bad to require that anything that changes an item attribute also consider whether that change constitutes a sendable update, but I'm not sure we'd implement it at the repository level, either, given that selecting an item in the UI currently changes it.)

The information as to what attributes contribute toward sendability should live at the domain model layer, but it doesn't seem right to be tracking changes in sendability for all items. Could the UI (detail view) attach a monitor if it's a communication item?

* The stamping spec implies that the user-visible To/From/CC fields aren't necessarily the To/From/CC fields in the RFC822 message (though it seems to imply that the Sender attribute is the From on the email)... How are these fields managed for items that could be coming & going at the same time?

I'll have to get back to you on that one after I go through that part of the stamping spec in more detail...

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

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

Reply via email to