On May 25, 2009, at 4:46 AM, Helge Heß wrote:

a) the default of SCHEDULE-AGENT is changed from SERVER to CLIENT,
  this will make iCal server leave the ATTENDEE intact for
  regular CalDAV clients (if I understood you right)

This removes a very useful feature of scheduling-aware servers, which is that a non-scheduling-aware client can still do simple things like accept a meeting (by changing PARTSTAT) and all the right scheduling magic still happens, because the server takes care of it.

Most of the existing CalDAV (*not* CalDAV scheduling) clients don't need to do anything special to support CalDAV. Kontact, Evolution and Lightning are all based on an iCalendar internally. To support CalDAV, they 'just' need to replace the storage layer. Outlook is somewhat similiar, while the storage layer is pluggable, the whole scheduling part is not pluggable but handled in internal code (it still can be done, but its major work).

They do need to do a lot more to become CalDAV scheduling clients. In fact most plugin architectures do not allow an easy replacement of the scheduling handling. (which is why I don't see this happening soon)

I guess I'm choosing to focus my priorities on scheduling-aware clients, and those that are not can come along for the ride as best as they can.

I'm not sure I believe that they need a lot more to become scheduling clients, but I can see how software that make assumptions in their infrastructure will have challenges when new infrastructure comes into play.

The ATTENDEE property value is a delivery address.

When iCal is used in conjunction with iTIP, yes. If its used as a storage format, the ATTENDEE line represents a contact. And calendaring software rarely lives on its own, but usually integrates with contact management.

  Unless the client sets SCHEDULE-AGENT=CLIENT, iTIP is always in play.

BTW: using CALURI to store the UUID in a vCard is IMHO as questionable as using DIR in ATTENDEEs for that purpose :-) [and has the same id resolution issues attached]

  Agreed.

It tells the server who needs to be notified of changes to a meeting. Your proposal to add an X-parameter (or DIR) with the authoritative delivery address does not comply with the spec, which requires that we use the value of the property.

Fair enough, though only relevant for CalDAV-Sched clients.

  …if they set SCHEDULE-AGENT=CLIENT.

The only interesting argument I'm hearing against using a URN is that the client can't resolve that to something useful. This is why our server is diligent about filling in the CN param regardless of whether it is provided, as well as added an X-param with the email address that you think is the best way to identify a user (we provide it so you can send email to the user, but you may use it as you wish).

The X-APPLE-EMAIL thing does not help much (well, it does help me in Outlook ...). My whole point is about not breaking existing things. The X- thing just makes it slightly easier. Maybe spec an EMAIL attribute then, similiar to DIR and CN?

Yes. We've decided to change the name of the X-APPLE-EMAIL parameter to EMAIL and plan to register it after the iCalendar spec update goes in. (We're making the change prior to registration so we don't have to figure out how to migrate from one to the other later; I'm hard-pressed to think of why anyone might propose an EMAIL parameter that isn't an email address.)

I would also like to point out that I do NOT think that the email is the best person/group/resource identifier per-se, its just the only one which is reasonable interoperable.

  Understood.

Now, MIT tells me I can't keep my email address after more than a decade past graduation

Thats the email stability issue. That an email address is reassigned is obviously as an edge case as it can get (one in a million?). That an email address is not working anymore isn't a big issue, its still a valid identifier.

Whoah. That is not nearly the edge case you think it is. At MIT I recall that it happened fairly regularly while I was around, in fact.

Note that the server might still rewrite the email to its new email based on the UUID. (iCal contains the pkey, but the directory updated the email. Hence, on the next GET, the server might deliver a new email).

  This is correct.

Also note that UUIDs also have their own 'stability' issues. Eg if a server is reinitialized, UUIDs become meaningless, while email addresses will still work.

Sure. If you mis-configure or delete data on your server, bad things happen.

[Another thing which will (often!) happen in the real world is that a CalDAV server sends out iMIP messages but the replies will bypass the CalDAV server. Hence the client needs to remap the iMIP attendee info to the CalDAV attendee.]

On our server, the replies come back to the server. The only case where it does not is SCHEDULE-AGENT=CLIENT where the client does the iMIP scheduling.

Anyways, all that is nitpicking, it does not bring us anywhere.

  Well, it may clarify some requirements.

This is clearly a violation of the spec, and is not what the client asked me to do. The client is asking me to use wsanc...@mit.edu as an attendee. Let's say that following the spec is not all that important, because we are very smart and know better, so I notice that the email address is not in the directory, but my ID in there, so I delivery it to the new record, and perhaps I even update the property value to have the new email address. Is this what you suggest?

Yes, thats the additional smartness thing you might want to do. I don't really suggest it though, I suggest to use email addresses, always. Maybe give the user a chance to resolve it, if it can't be found in the directory anymore.

I don't consider that viable. For one thing there is no way to ask the user to do anything except via the protocol. There is no way in the protocol to specify that a client should ask for conflict resolution from the user, and I imagine that doing so property is more than a little bit of work. Even assuming that, it requires that the server wait for a reply from the user, which could never come, before it continues with event processing.

[reassigned email]
Here's a simpler case: the server supports server-side iMIP (and hey, by coincidence, ours does). Should we send an iMIP message to wsanc...@mit.edu as we normally do for which ATTENDEEs we don't provide CalDAV delivery, or stick with the X-ID, or emit an error?

Don't know, very edgy edge case. Fact is, that the whole iMIP part breaks in this case anyways. Other iMIP clients will still have the old iMIP address and will deliver messages incorrectly. Which makes this one a non-point actually.

It's "very edgy" because you aren't writing the server. For me, it's a case I have to deal with.

Why would it ignore the change? It can perfectly detect that the client *wants* to change the email. How thats implemented in the server, is the servers choice. It could attempt to update the directory (often inappropriate, might depend on the server type). I guess I would rather have an email address field kept with the ID. NULL means, derive from directory, set means, use what the client did provide. Another option would be to switch from SCHEDULE-AGENT=SERVER to CLIENT. Or emit an error which tells the client its need to switch to perform the change.

Or I can expect clients to abide by the protocol spec and do what I'm doing now.

As my conclusion so far, consider my points a) and b) at the top of the email. I have the impression that this would be an acceptable compromise? A client which is sched-aware could use b) to do the addressbook integration stuff.

I'm not inclined to push for (a) as I mentioned above, but I agree about (b).

Anyways, iCal server does not honour SCHEDULE-AGENT=CLIENT, it always replaces the ATTENDEE with the UUID.


  That should be fixed now.

        -wsv

_______________________________________________
calendarserver-dev mailing list
calendarserver-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/calendarserver-dev

Reply via email to