[Dev] Re: Recurrance discussion
Phillip J. Eby
pje at telecommunity.com
Wed May 11 10:21:38 PDT 2005
At 09:30 AM 5/11/2005 -0700, Katie Capps Parlante wrote:
>Bryan has a good list below, of requirements for occurrence objects.
>
>Perhaps a next step is to agree on the contract (including API) that the
>view will expect from the model. The views that are important for 0.6 are
>the CPIA views (Detail View, Summary Table View, Calendar View). The model
>is the content model and modelling layer below, which includes occurrence
>objects as well as the ways that we find/create occurrence objects --
>queries, item collections, etc.
>
>Once we agree on the contract, perhaps we can think of the
>transient/persistent issue as an implementation issue, where we might make
>one choice for 0.6 and another choice in the future. Of course, we need to
>be thoughtful about implementation issues (as you all have been) as we
>arrive at the contract.
>
>These requirements seem not especially controversial:
>+ Occurrence items need to show up in item collections (and as results of
>queries).
>+ Occurrence items need to support Item's introspection apis
>(getAttributeAspect, etc. -- perhaps good to make an explicit list here)
>
>We certainly need to be able to handle notifications for changed
>occurrence items -- that is a requirement. If I understand correctly, that
>currently implies this requirement:
>+ Occurrence objects should respond to repository monitors
(Note: Neither of the proposals below is complete in itself; I'm dealing
here only with the issue of generating occurrence objects, *not* with the
masters vs. occurrences debate or other information sharing and duplication
parts.)
Strawman proposal 1: implement occurrences as real items, created when the
rule is modified. Require users to *always* include an explicit end date;
i.e., no unbounded recurrences.
Pros: extremely simple to implement, with clear and explicit behavior that
allows the user to trade off performance and convenience. If the user
wants 100 years worth of birthdays, more power to 'em. If they want 100
years worth of daily exercise classes, they'll have to wait a while for
events to be generated and modified, and this should probably be an
acceptable tradeoff for 0.6.
Cons: Slow when creating or modifying large numbers of recurrences, but
this will get faster "for free" as the repository gets faster. The more
important "con" is that a user might set up five years of daily exercise
and then be puzzled five years later when the occurrences stop
appearing. While it'd be trivial to click on the last occurrence and
change the end date, it's possible you might not think of doing it. And
for more infrequent things like birthdays and the like, the lack of
repetition past a certain point might be non-obvious and therefore more
problematic.
Strawman proposal 2: The same as proposal 1, but allow users to not set an
end date. If no end date is supplied, generate a *fixed* number of
repetitions using a heuristic based on the frequency of occurrence. For
example, for annual occurrences you could schedule 10 or 12 years in
advance, while we might limit daily occurrences to a year's worth. This
caps the cost of generating occurrences, but increases complexity by
requiring the heuristic logic, and by requiring an alarm or something of
that sort associated with each recurrence to automatically add one *more*
occurrence each time one is consumed, thereby keeping the "sliding window"
always the same size.
Proposal 1 could be implemented for 0.6, with the more sophisticated
version in proposal 2 being added in a later version as an additional feature.
More information about the Dev
mailing list