On 10/5/11 2:11 PM, Mike Wacker wrote:
> On 10/4/2011 10:14 AM, Peter Saint-Andre wrote:
>> On 10/3/11 5:11 PM, Mike Wacker wrote:
>>> Hello,
>>>
>>> One of the tenets of XEP-0045 is backwards-compatibility with groupchat
>>> 1.0.
>> Additional features do not necessarily introduce incompatibility. The
>> old "Groupchat 1.0" protocol had very few features.
> Yes, a feature, for example, to request a unique nick would not create
> an incompatibility since old clients wouldn't use the feature. If you
> still let the client use any nick, it's backwards-compatible.
>
> But if you locked down nicks and required the client to use the nick
> returned by the feature, you would impact a pre-existing scenario,
> entering a room.
>>> I was wondering if reserved nicks break this tenet. XEP-0045 says
>>> clients SHOULD first try to discover a reserved nick, if any, before
>>> entering a room. However, the server MAY lock down nicks and return an
>>> error if the reserved nick is not used. If it does lock down nicks, then
>>> the client actually MUST (not SHOULD) check for a reserved nick before
>>> entering the room, since using any other nick would cause an error.
>> Rooms with nick lockdown are typically deployed in very controlled
>> environments (e.g., military systems where each person must be
>> identified exactly as they are registered or authenticated).
> Or an easy way to avoid dealing with nick conflicts. If you locked down
> nicks, you could also have a predetermined 1:1 mapping between nicks and
> bare jids that can be calculated either way with O(1) space. While there
> always expected use cases, I find it's generally not good to assume a
> feature would only be used in a certain way :)
>
> But since the server can rewrite nicks, is it safe to say the client
> MUST gracefully handle this scenario? The one area where that causes
> concern for me is existing groupchat 1.0 clients, I obviously do not
> know how they would handle a nick rewrite.
>
>>> I used the Wayback Machine to look at the old page about the groupchat
>>> 1.0 protocol and early versions of JEP-0045, and none of them indicate
>>> support for discovering reserved nicks, meaning the client has to set
>>> the nick instead.
>> Correct.
>>
>>> Thus, it seems like older clients, including
>>> groupchat, would actually break if the server locked down nicks and
>>> returned an error if the reserved nick was not used to enter a room.
>> So you couldn't join the room. Again, such rooms will be deployed in
>> very controlled environments.
>>
>>> (Though I don't know the history of groupchat other than what old docs
>>> said, so someone can correct me if there's some missing piece here not
>>> mentioned in the docs.)
>>>
>>> RC7 for XEP-0045 1.25 allows servers to rewrite nicks. If a nick rewrite
>>> does not break old groupchat clients, perhaps we should say the server
>>> MUST rewrite the nick instead of returning an error if the nicks are
>>> locked down and a nick other than the reserved one is used to enter the
>>> room.
>> I do think that such an approach is more consistent with Postel's Law,
>> so I'll adjust the text accordingly.
Thinking about this further, it strikes me that old groupchat 1.0
clients will not know anything about the 210 status code, so in that
case it would be better for the service to return an error. Note that
the service knows which clients support groupchat 1.0 and which clients
support MUC, so it can send an error to the former and a nick change to
the latter.
/psa