[Standards] Proposed XMPP Extension: MUC Auto-Join
Rachel Blackman
rcb at ceruleanstudios.com
Fri Jun 1 18:19:19 CDT 2007
>> [Different Client Options for Joining a Room]
>
>> Since the room invites the user to the conference,
>> shouldn't this not be a client configuration/customization ?
>
> I don't think this is a room level thing - I think it's a client
> thing.
> The room may be configured to allow all sorts of things, but it's
> up to
> me which options I want.
>
> Other examples include a calendar function, "Auto-join this room
> Monday-Friday" or "Only join if the time is between 8AM and 5PM".
> (Similar to the way a recurring meeting setup works in Outlook).
In my opinion, anything that gets into that sort of complexity should
be stored client-side entirely. We don't need to get into the
business of defining a full scripting language to attach to roster
items.
It might be nice to be able to say 'join this room and bring it to
the front under this nickname Monday-Friday between 8am and 5pm,
unless I'm coming in from this IP in which case make it under this
other nickname, but join it under this other nickname and minimize it
upon join any time outside of those business hours' or whatever...
but really, that's a client-specific thing, and I don't think we need
to start trying to define a generic event-scripting system as part of
XMPP itself... much less as part of the /roster/. :)
The advantage to the auto-invite-on-presence is that it will work
with EVERYTHING. Hands-down. Anything which supports MUC invites
will just /work/, right out of box, no worries about whether or not
they add support for auto-join. Given how long it can take us to
roll out a protocol, the value of that should not be underestimated;
an old copy of Exodus will support this method just as well as some
new as-yet-unreleased supercool telepathic XMPP client down the road,
or whatever. Even without my suggestion of an added 'category' field
in roster stuff, this solution is valuable specifically because of that.
The category field is mostly only useful so that you can recognize
those items /right away/ (before getting entity caps, or in case the
service is offline) to categorize them as gateways, or chatrooms, or
whatever else. Then I can make it so if there's a chatroom in my
roster, it gets sorted into a 'chatrooms' group automatically, and
clicking on it presents the join dialog (or just outright joins). Or
so that a chatroom automatically has a little 'chatroom' avatar. Or
so that it gets sorted into a 'favorite chatrooms' tab or whatever
else my client-developer heart desires.
Storing preferred nickname, all that sort of stuff, sure, I'm fine
with that. But I don't know that it needs to be /right in the roster
item/. There's a huge difference between adding a single bit of data
('category') which provides a very general but useful class of
information, and overloading the roster to store large quantities of
arbitrary data.
>> Does this need to go into roster ? Maybe in client's config
>> settings ?
>
> I don't really see where else it would go. I certainly want it stored
> somewhere on the server, so that it works with all my clients.
Client-specific stuff stored server-side belongs in iq:private, or in
whatever the successor to iq:private is, I think. Rather than
cramming it into the roster.
I mean, if people decide that it's fine for arbitrary client-specific
data to go in the roster, I'll go right ahead and add support for
cramming Trillian Astra's metacontact state data (priority/position
of a contact within the overall cross-network metacontact), since
that'd be useful to me. But it doesn't seem to me under the current
XMPP philosophy that such data belongs in the roster, since it /is/
client-specific and probably not to useful to others.
Conversely, a category field is a very general bit of data, is
generally useful (determine that a given contact is a gateway you're
subscribed to, for instance, and since the category marks it as such,
offer 'Unregister' or 'Disconnect from Gateway' options on it in the
client UI) without the overhead of disco probes or requiring that all
services support entity caps when in a roster, and is something all
clients (at least, all clients that understand disco identity values)
will understand already.
PLUS, it's easy to automate; add a JID, and the server does a quick
disco probe for the identity field. The category value comes back
right then and there; clients are 'client' and chatrooms are
'conference' and search services are 'directory' and so on. So then
as soon as you get the roster, you have all the information you need
to know that 'users.jabber.org' in your roster is a directory search
service, display a little Yellow Pages icon beside it, and make the
double-click action pop open the appropriate search window, but that
'jdev at conference.jabber.org' is a chatroom, show a little chatroom
icon, and have double-click join you to it. :)
Anyway, there's my $0.02 on the whole thing, either way.
--
Rachel Blackman <rcb at ceruleanstudios.com>
Trillian Messenger - http://www.trillianastra.com/
More information about the Standards
mailing list