presence spec
Phillips, Matthew
Matthew.Phillips at dsto.defence.gov.au
Wed Oct 17 16:45:16 EST 2001
Hi David, all.
Finally found the time to do David's comments justice:
> - section 3.1, says that the name and domain are case *in*sensitive
> strings. are we sure that ignoring case differences are the best
> thing to do here? it works for English, but i'm not sure how other
> languages/cultures deal with this.
I've added a note on the reasons behind this. Essentially, standardising on
case-insenstive groups, domains and user names avoids the confusion of not
seeing people just because you got the case of the username or group wrong.
It does make the subscriptions a little cruftier, but I think it's
manageable.
> if we're to ignore case, all the example subscriptions later in the
> spec are incorrect, since they're not using the fold-case() sub-lang
> function.
Corrected.
> - in section 3.2, i think the first paragraph could use some
> re-wording to make clear that the user's domain is their default
> group. Matthew? if you'd like me to send you some text, let me
> know.
I left this out as I think this is more of a client policy thing than a spec
thing. Eg I don't think a presence client should force you to be in the
'0x1.org' group just because you are d at 0x1.org. In Sticker I do intend, by
default, to put the user in a group that the same as their domain, but they
could later remove that group and add others.
> - throughout the document, i think we would do well to adopt the
> IETF's terminology for requirements, as specified in RFC-2119. i
> think this would help clarify statements of expectation from
> requirements of the spec, etc.
>
> see: ftp://ftp.ietf.org/rfc/rfc2119.txt
Good idea, I have revised some wording in light of this and added a note at
the top.
> - i think some explanation of the requirement for Status-Duration
> rather than a timestamp would be worthwhile. the rationale of
> machines with broken clocks and timezone challenges is fine, but it
> should be in the document.
Note added to description of Status-Duration.
> - section 3.4, step 1 of Frodo's client's actions. the subscription
> shown does not illstrate the use of groups in addition to the
> default domain-group, nor direct subscriptions to a specified user.
>
> it'd be good to have an example of this more complete subscription
> in the spec. one from epm --
>
> require(Presence-Info) && ( \
> contains(Groups, "|listen-group-1|") || \
> contains(Groups, "|listen-group-2|") || \
> contains(Groups, "|example-domain|") || \
> User == "extra-user at domain" \
> )
>
> note that this is a case-sensitive subscription!
Agreed, but I want to start with a simple example to avoid freaking people
out with complicated expressions. I've added section 3.5 that has a more
complex example.
> - in section 3.4, in the Presence-Request event, the 'Groups' field is
> mandatory.
>
> when requesting information about a non-group buddy, what should i
> put in the 'Groups' field? i could put the domain part of the user
> name, but that seems redundant?
Good point - in this case the Groups field is irrelevant, so I guess we use
"*".
> - in section 3.4, in the Presence-Request event, the 'User' field is
> singlular.
>
> this means that i need to send one request for each of
> my non-group buddies.
>
> if the 'User' field were to become 'Users' with the same list syntax
> as the 'Groups' field, a starting presence client would only need to
> send 3 notifications: request for groups, request for users, and its
> own new status.
Agreed, spec duly updated.
> - in section 3.4, in the Presence-Request example subscription, the
> 'User' field does not contain the domain part of the user's name.
> elsewhere in the spec, all 'User' fields contain the fully-qualified
> user name.
>
> in epm, i used the fully-qualified name here.
Yes, that was a typo - the full name should always be used.
> - in section 3.4, in the Presence-Request example subscription, the
> 'User' field is conjoined with the 'Groups' field. this means that
> the example subscription will not receive requests for a non-group
> user.
>
> in epm, i altered this subscription to be
>
> require(Presence-Request) && ( \
> User == "user at domain" || ( \
> User == "*" && ( \
> contains(Groups, "|domain|") || \
> contains(Groups, "|member-group-1|") || \
> contains(Groups, "|member-group-2|") || \
> contains(Groups, "|member-group-3|") \
> ) \
> ) \
> )
The examples have been updated for the change from User to Users. One
impact of this is that clients no longer need to check for "*": they just
check to see if either they are in the requested user set, or one of their
groups is in the requested group set.
> - in section 3.4, in the sample Presence-Info reply, the value of the
> Presence-Info field contains both the word 'reply' and the unique
> reply tag.
>
> do we need the word 'reply' here? i know it's easy enough to match
> using contains(unique-tag), but is a simple equality test better?
>
> this would require that the unique tag never be 'initial' or
> 'update', which is faily easy to implement.
I have no strong feelings on this, and I guess an equality test is
marginally faster to match on the server, so I am happy to ditch it.
> - in section 3.5, the 'User' field specification has issues as
> described above.
>
> - in section 3.6, the 'User' field definition does not require the
> @-sign or domain to be included. this should be clarified and made
> explicit.
Done.
> - in section 3.6, the 'Status-Text' field definition doesn't
> explicitly state whether the example values must be supported by a
> client.
>
> as suggested in section 4.1.3, it might be useful to split the
> status into a semantic flag, and a displayed text. this would
> possibly help with multi-lingual clients also, where, for example,
> the use of "Unavailable" as the status might be meaningless.
>
> i'd like to discuss this further.
Your point about other languages is the decider on this one. I've added a
Status field as well as the Status-Text field, which no longer has any
conventional meaning and can be any text.
I've also added an optional Requestor field to Presence-Request (see notes).
Phew, another major email epic completed. Many thanks for your incisive
comments David. Stay tuned for the 0.3 draft.
Matthew.
More information about the ticker-dev
mailing list