Just a thought about the roster, is it true?

Hi everyone,

I’'ve been reading, and reading for hours lately, maybe I misread something. The thing is as follows:

It seems to me that it isn’‘t possible to have a group in your roster with no contacts in it. I found out about this, just because I wanted to have a few groups, for later jabber-contacts. Does anyone know why they have chosen not to have empty groups in the XMPP-protocol? Or isn’'t this a rule in the protocol at all?

I think this is anoying, because I want to have a few groups for the contacts I hope I’'m going to get there in just a few months (family, collegues, friends, and some Club members).

And has anyone read all those protocol papers yet? I think they aren’'t being read very easy. Maybe they should let a professional writer write those ;).

Regards,

Mark Monster

Hi Mark,

Groups are not stand alone entities and there’'s no way to “create” a group outsize of the context of a roster entry. They are merely “tags” for roster enties. They are more like categories than groups the way they are used in XMPP.

In your applicate, you could simulate the effect of groups being separate. Since groups aren’'t separate entities, you could store the group definitions using your local prefs file or with “private storage” on the server.

As for the writing skills of the protocol papers, you have to remember that they are more like RFC’‘s. They aren’'t meant to be tutorials, just highly detailed technical documents. Plus it has the added bonus that people like Iain can write books about them

Take care,

John

Alright, but what about the internal structure on the servers. There should be some sort of database on the server or not? Is this database also based on this flat principle? I should think it has to be a relational database, and in that case it isn’'t even in the 2nd Normal Form, this while Boyce-Codd is prefered.

That highly depends on the server. For example, the jabberd server by default stores user info in XML files. Here is an entry from my server:

<query xmlns=’‘jabber:iq:roster’’ xdbns=’‘jabber:iq:roster’’><item jid=’‘insurgent@jabber.org’’ name=’‘insurgent’’ subscription=’‘both’’>default<item…etc

You’'ll notice that the storage is pretty much the same as what goes over the wire.

Also,there is nothing in the protocol to enumerate just “groups”.

Smack provides “createGroup” and other group-related roster operations as a convenience to the developer as most roster displays are organized by groups.

But if you look at the Jive Messenger schema, there is a “jiverostergroups” table.

Maybe this will change later on…

Take care,

John