[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CAP-12-e: TRANSP and -NOCONFLICT changes




Doug replied on 05/27/2004 07:10:11 PM:
> This is NOT a CAP issue, this is an 2445 issue as 2445/2446 objects have
> the exact same
> problem with OPAQUE objects that must be blocked around on pre-CAP
> implementations.

<CAVEAT> This entire first bit has become a digression from the questions but I think that some clarification is in order. </CAVEAT>

Actually it is NOT an issue with the RFCs because they only desribed the data model (RFC 2445) and the workflow model (RFC 2446).  For CAP, we enhanced/extended TRANSP to include new properties and a slightly different usage.  RFC 2445 defined TRANSP simply as:

4.8.2.7 Time Transparency

  Property Name: TRANSP

  Purpose: This property defines whether an event is transparent or not
  to busy time searches.


Note that TRANSP was strictly for transparency on busy time searches and nothing more.  However for CAP we have added new values and extended/changed the meaning.  With CAP, we are dealing with more than just the data and workflow model, we have a client / server model so CAP is the first place the concept of overbookings was addressed:

   Overlapped Booking -  A policy which indicates whether or not
     components with a "TRANSP" property not set to
     "TRANSPARENT-NOCONFLICT" or "OPAQUE-NOCONFLICT" value can overlap
     one another.


This implicitly make TRANSP no longer simply for telling "whether an event is transparent or not to busy time searches", it clearly adds new meaning to TRANSP because it now affects the client / server usage (and hence my questions/confusion).  The change is not implicit, its clearly explicit with text like:

   TRANSP -  This is a modification the [iCAL] "TRANSP" property and it
     allows more values. The new values are related to conflict
     control. (Section 8.37)

In Section 8.37 I see:

   Purpose: This property defines whether an component is transparent or
  not to busy time searches. This is a modification to [iCAL] "TRANSP"
  property in that it adds some values.

This clearly states that TRANSP is still only defined to indicate "whether an component is transparent or not to busy time searches"; there is no mention of being used for "conflict control" as the 1st paragraph stated.  If you read the ABNF comments, you will see that this is just an oversight in our new "Purpose" text.

> The fact that some (or all?) implementations do not have a  button
> performing this
> new user friendly feature does not make CAP broken.


If there is no clear way for simple features to be built in a consistant manner then interoperabilitiy between different CAP CUAs and CSs will be impossible to achieve.  One CUA will do things one way and if the actions are not correctly interperable by another CUA then I claim it is that CAP is broken (or at least highly ambiguous).  After all, the ambiguity is being introduced by CAP changing TRANSP.

It is not just a simple matter of some GUI button to make things work.  The problem is that there is _nothing_ in CAP that even remotely describes how to deal with issues that arise like in the scenarios I gave.  Even if you simplify my scenarios down to 1 day cases ("Im taking next Tuesday off for an extra long weekend.") there is still nothing I can find in CAP or in WG archives as to how to fully deal with the relatively simple examples.  

If I put a VEVENT with TRANSP:OPAQUE on my calendar for Tuesday then everyone can easily see Im not available Tuesday.  I now want to put a Cirque du Soleil performance on my calendar with TRANSP:OPAQUE-NOCONFLICT so that I dont accidentally overschedule myself.   My CUA can see that I have a single VEVENT with TRANSP:OPAQUE on it and so it can see Im busy all day Tuesday.  According to the text in CAP, my CUA cannot save the VEVENT for the Cirque performance because doing so would be prevented by the CS since the new VEVENT has TRANSP:OPAQUE-NOCONFLICT and I have a TRANSP:OPAQUE VEVENT already on my calendar.

A simple way to work around this is to have the CUA find the VEVENT with TRANSP:OPAQUE and split it into 2 separate VEVENTs, each with TRANSP:OPAQUE and that will fill the time on Tuesday before and after the Cirque VEVENT.  However I have question how the CUA knows that its proper to do this splitting.  You would NOT split "Bastile Day" into 2 sub-day VEVENTs would you?  

So what what would allow the CUA to know that Tuesday _is_ splitable?  A GUI button is too simple a means because that is indiscriminate and would allow your CUA to split "Bastile Day" (or "Memorial Day") into 2 sub-day VEVENTs.  If I took the example another step forward, adding another OPAQUE-NOCONFLICT VEVENT for a pre-show meal would further split the TRANSP:OPAQUE VEVENT down into even more fragments.

There is also the case of dealing with rescheduling the OPAQUE-NOCONFLICT VEVENT to a larger or smaller time slot (ie: I factored in too much drive time).  Is the CUA expected to repatch the split VEVENT TRANSP:OPAQUE  to once again abut the changed OPAQUE-NOCONFLICT entry.  If it does not then by shortening the OPAQUE-NOCONFLICT VEVENT I now have a schedulable gap on my Tuesday schedule and thats not good.  If it is supposed to repatch, what information is it to use to tell it "If this VEVENT is rescheduled, dont forget to go update these other VEVENTs so that busytime accurately reflects my availabiltiy"?  You can build this with proprietary extensions or flags but thats not what we want in CAP is it?

If anyone has the answers to these or can point me to the text in CAP-13 that Im missing, please post them as I think they are important for everyone to understand.

<ALTERNATIVE IDEA>
One way to avoid going down some "divide and repatch" rat hole is to have some means for the CUA to tell the CS "Yes I know Bruce is busy at this time but he really wants to put this TRANSP:OPAQUE-NOCONFLICT VEVENT on the calendar anyway so go ahead and do it."  That is, some means for the CUA to convey to the CS my "Yes, go ahead and book this NOCONFLICT entry even if there is a conflicting TRANSP:OPAQUE entry" GUI button selection.  This new mechanism could not be used to overbook other NOCONFLICT entries, merely those with TRANSP:OPAQUE.  

I think this would both make it unambiguous how my scenarios would work and would still allow us to have NOCONFLICT control where needed.  (Yes this would mean a change to CAP as it stands now but it would also mean that we clear up much of the ambiguity related to cases like those I gave...)   This would also have the benefit of not cluttering up the calendar with a bunch of 'sub-day' fragments and the like; its a simple and direct means for the CUA to convey the CU's intentions while still respecting conflict settings.  After all, NOCONFLICT is new to CAP so having a simple and unambiguous means of handling these kinds of scenarios would be good for us all.
</ALTERNATIVE IDEA>

>                                                      It makes it a CUA
> implementation
> feature that can be coded into CUAs with or without CAP using existing
> 2445 and 2446
> objects (METHOD:ADD).

I dont quite follow Doug here but I dont think its relevant to the discussion since TRANSP:OPAQUE-NOCONFLICT is new witn CAP.

> This new feature request (skip over opaque objects and block out a range
> of time) was
> never in the CAP requirements document and is a new feature request.

This is NOT a new feature request.  Its been part of CAP since at least 1999 and Im trying to analyze how it will actually work in common scenarios.  For some cases its pretty straight forward (ie: reserving a conf. room) but not for the ones I listed (ie: managing my personal calendar).  Thats why Im asking for clarification and suggesting an alternative idea.

Bruce
===========================================================================
Bruce Kahn                                INet: Bruce_Kahn@xxxxxxxxxxxxxxxx
Messaging & Collaboration                 Phone: 978.399.6496
IBM Software Group                         FAX: and nothing but the FAX...
Warning: Dates in Calendar are closer than they appear.