Welcome back Alec!

On Jun 23, 2005, at 10:46 AM, Alec Flett wrote:

Hey Ted -
I'm catching up on things and I finally got a chance to read over this, I definitely have a few questions/issues - hopefully stuff that just needs to be clarified in the spec but I think there are things that are not completely flushed out to the application level. I think one simple issue with the whole spec is that it assumes some deep background knowledge or implies an obvious implementation but it isn't always obvious to the reader :)

Part of the problem is that we don't yet have a technical portion of the sidebar spec, which would tie some of these areas together.
Mine/Not Mine: what is this? r8 doesn't really explain it - Are you just saying you can flag an Item Collection with arbitrary attributes and Mine/Not Mine is an example? What would be the specific application use of "Mine"/"Not Mine" in the context of chandler? Is this distinguishing Sidebar collections from internal collections?
Mine/Not Mine is a feature of the sidebar. See section 5 of <http:// svn.osafoundation.org/docs/trunk/docs/specs/rel0_6/Sidebar-0.6.html> You don't flag an Item Collection, you flag attributes and a rule on the item collection causes those items to be included in the item collection. It doesn't have anything to do with Sidebar collections versus internal collections
you start talking about the pros and cons of Extents without really explaining what they are? I'm sure you and Andi have your heads wrapped around them, but fill me in :)
An extent is a set that represents all the items of a particular kind. Think of it as the result of a kind query or a 'for i in // <KindName> while True" query in the existing system. The issue is that the existing query system does most queries against (conceptually) the set of all items of a kind. Now we need an explicit way to do that. I think that we have a solution for this, and when the prototype settles down (in a few days I hope) I'll rev the spec to include the details
The stuff regarding the detail view seems like its beyond the scope of ItemCollections and I'm guessing its there due to the 0.5 notification system. I have a new idea on that though, that I'll offer in another e-mail to you and Andi.
Yes, the stuff for the detail view is related to notification.
I'm concerned that the "filtering" system is not really flushed out. I understand the application level use of filtering from a user's perspective, but I don't understand how it really gets reflected at the ItemCollection level. There are no good use cases in the spec for how it would actually be used in conjunction with the app bar. I mean: When an ItemCollection is "filtered" what does that mean for the collection? How does an app developer know when to "filter" a collection, and what is the result of the filter? Is a new "dependent" collection created (as we do in 0.5) or is the existing collection changed in some way? When the app "turns off" a filter, do dependent collections go away? if not, are they updated automatically?
When you filter, you apply a boolean condition to each element of a set, " retaining" those items which match the collection. You filter a set by creating a filtered set, just like creating a union or intersection. That filtered set is then the thing that you interact with. You still have access to the set that the filtered set is based on. The filtered set is dependent on the original set, and changes to the original set will cause the contents of the filtered set to update. If the app wants to turn off the filter, it can go back to referencing the original set.


What are the implications for sharing, etc. i.e. if I'm sharing a filtered collection, am I sharing a dependent collection, or am I sharing a subset of an existing collection?
As far as you are concerned you only ever deal with a set/list of items. The sharing code does not know about rules or compositions (unions, intersections, etc) of sets, or whether sets are implemented as dependent or not.. You are just sharing the items.
What are the implications when adding new items such as when you create a new item and put it in the collection? If it doesn't match the filter (i.e. adding a CalendarEvent to an ItemCollection filtered on Tasks) does it get added to "inclusions"? does it appear to be in the filtered collection or not?
If you want to add an item which doesn't match the rule then you will need to add it to inclusions explicitly. When you do this, it will appear to be part of the contents of the item collection because we take the items that match the rule, union them with the items in exclusions, and then remove any items in exclusions.
When an application creates a new event but is dealing with a filtered collection, can it be added to the filtered collection, or should it be added to some parent collection? (similar to the previous question)
If you have a collection based on a rule/filter then creating items that match the rule is sufficient to get them into the collection. Most of the time, you shouldn't need to worry about where to add stuff, you should let the rules and extents do that work for you. You need to know if you are going to add to inclusions or exclusions because there you are overriding the rules.
John and I have discussed, for months now, the idea of associating some metadata with an ItemCollection - I don't see that addressed here, though John and I have some ideas. An example of this would be, if a collection is displayed with a particular color in the calendar, where do we store that color? Its calendar-specific information, but it should be associated with an ItemCollection, so that the calendar code doesn't have to do housekeeping to make sure that the metainformation gets cleaned up when an ItemCollection goes away. And again, what are the implications for sharing? Should this metadata be shared or not, and is there a way to indicate that?
If you want to associate metadata with ItemCollection then we should have an Item Collection kind where that data can live. If you add the metadata as attribute of the ItemCollection kind, then the usual sharing mechanisms (clouds, etc) apply. I'd be interested in seeing your ideas for how to do this. I've been focusing mostly on straightening out the basic semantics, and I haven't gotten any other feedback about metadata.

Ted

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

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

Reply via email to