Re: Status of the CALSCH working group (CALSCALE)

[email protected]
Newsgroups gmane.ietf.calendar
Message-ID <OF014B8E9E.42AE5F94-ON85256DDA.00516F08-85256DDA.0055B9EF@notesdev.ibm.com>
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: 
[email protected]
Messaging & Collaboration                 Phone: 978.399.6496
IBM Software Group                         FAX: and nothing but the FAX...
Standard disclaimers apply, even where prohibited by law...
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.