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

Re: Status of the CALSCH working group (CALSCALE)




Doug wrote on 11/07/2003 04:14:11 PM:
> > CALSCALE -- I would like to either see us add a capability
> > specification for calendar scales and a special error code for
> > unsupported calendar scales, or I would like someone to convince me
> > that the absence of such scales isn't really a problem for future
> > extensions. What we have right now tells us that there might be other
> > calendar scales, but doesn't really tell an implementation how to
> > behave if it encounters one.
>
> iCAL can do a 'REQUEST-STATUS:3.1;Invalid property value;CALSCALE:foo'
> now and
> seems the correct choice for an unknown CALSCALE.

That is the incorrect value to return for REQUEST-STATUS.  CALSCALE is NOT invalid!  The property is 100% legal on nearly all messages or components where a new calendar would use it (ie: for VCARs "Invalid Property" would be correct but on new VEVENTS is is _valid_).  The real 'error' is that the property _value_ is not supported by the recipient.  There is a big difference!

Unfortunately the new REQUEST-STATUS codes (Section 10.15 Response Codes) are not well organized so its hard to tell exactly what should be sent back.  Section 10.15 should define a class of "5.xx" values generically and then fill in as needed.  Unfortunately CAP defines some 6.x examples without clearly defining what the 6.xx class actually is (iTIP added the 5.xx class but we didnt define it in iCalendar).  The same goes for 7.xx thru 10.xx classes.  Heck, CAP decided 10.xx was so important that it skipped 10.0 thru 10.3 and started off with 10.4.

A while back the issue of defining the classes was raised and Doug took the task of reorganziing the REQUEST-STATUS values to be more hierarchical rather than flat.  After all why do we need 5 new root level classes of errors when we havent even defined them.

In response to a CALSCALE:Foo property I would think the CS would send back a:

REQUEST-STATUS:3.13;Unsupported component or property found;CALSCALE\:Foo is unknown

3.13 is defined in iTIP and since iCalendar defined CALSCALE as:

     calscale   = "CALSCALE" calparam ":" calvalue CRLF

    calparam   = *(";" xparam)

    calvalue   = "GREGORIAN" / iana-token


the CALSCALE:Foo example _IS_ valid since Foo would be classed as an iana-token.  It may not be a known token but it is one so "Foo" is NOT invalid, its UNKNOWN.  There is a distinct difference.

> Until someone proposes a new CALSCALE I do not think we can pre-specify
> any behavior.

Specifying no behaiviour is likely to get us into the same predicament as we found ourselves in with multiplart MIME in iCalendar.  iCalendar didnt directly address it nor did iTIP or iMIP so some CUAs do not support iCalendar/iTIP if its NOT the sole MIME body part in a message.  Playing osterich is never good; expectations should be clearly descirbed so the path going forward is not left to the imagination.

> Currently there is no way to specify in a request the desired CALSCALE.

Um, unless you removed CALSCALE from the payload there certainly is.  Any CUA can put in CALSCALE:JAILAI in a REQUEST is sends; thats part of iCalendar & iTIP and thus it better be in CAP too.

>                                                                        Easy
> to add, but not something that can break existing CUA's.


We are talking about how CAP CUAs should be built.  Currently since CAP is not done there are no CAP CUAs or CSs out there to worry about breaking.  Currently iCalendar/iTIP have a defined mechanism for conveying CALSCALE.  CAP has it too but its NOT clear how each side in the CS / CUA model should behave in some cases when determining supported abilities.  Thats the ponit of this discussion I think; to codify the behaviour so that future changes or updates will have a predictable outcome with older implementations.

>                                                            We could add
> text that
> says something like 'if you get a CALSCALE that you can not handle in
> the CAPABILITY
> reply, drop the connection as you can not do anything anyway...' .
> However that
> is true of (and the point of) the CAPABILITY reply, to find out if you can
> interoperate.

If you find the other side supports no CALSCALE values that you do, what can you do?  Do you ignore it and try to send stuff in an unsupported CALSCALE?  Or do you fail gracefully and notify the CU?  Or something else?  What should a CAP implementation do when someone ignores CALSCALE settings and tries to send something it may not be able to support?  We have no defined course of action or value for REQUEST-STATUS.

CAP currently says NOTHING on the subject and I think that is a mistake.  Sure, there are no current proposals for any new scales now but that is no reason to not take a few minutes to precisely define the expected behaviour going forward.  Tim suggestion has merit even if we have nothing on the table now.  The blanks in CAP regarding this should be filled in so its not left to future debate over the correct course of action when faced with an unknown CALSCALE will be necessary.

Bruce
===========================================================================
Bruce Kahn                                INet: Bruce_Kahn@xxxxxxxxxxxxxxxx
Messaging & Collaboration                 Phone: 978.399.6496
IBM Software Group                         FAX: and nothing but the FAX...
Standard disclaimers apply, even where prohibited by law...