powered by Jive Software

Shared roster


I’'m currently working on presence management, and I read that xmpp did well in that area. I need to add presence in a phone book, so that you can know if the person you want to call is available or not. I thought I could set up a presence server like jive, as I saw it managed shared roster.

My question is : how does shared roster work ? Does everyone have the same roster (what I want) or does everyone belong to the same group, which is replicated in each user’'s roster ?

If the group is replicated in each roster, i think it would be less efficient, because in a phone book everyone has the same contacts and therefore the same contact list would be replicated x times !

I’'m new to the world of xmpp/jabber, thanks for your help !

you can set up your shared rosters like you want to have them. here in the company we set up several usergroups and they all can see eachother in the shared roster but it depends on what you want.

Actually, what I want is one shared roster for everybody, not a shared group which would be added in everyone’'s roster. Is that possible ???

Nobody can answer ?? Please… :-\

I’'d like to know too.

Shared roster is important for me.

Jive Messenger treats all users with the ability to have their own roster. If you created a single shared group visible to all users, that group would be would be sent each user along with any custom groups they may or may not have setup.

That’‘s what I thought, but I wasn’'t sure… :-\

But is there a possibility to set up a shared roster for a group of people rather than a shared group which is included in everyone’'s roster ?

Yes. You can create whatever groups you want and not all of them have to be shared with anyone. Each group has the option of being shared to (1) only the members of that group, (2) only the members of specific groups, (3) all users.

So, you can create your groups and share them however you want to. It’'s all group-to-group sharing, though, not group-to-user sharing.

But is there a possibility to set up a shared roster

for a group of people rather than a shared group

which is included in everyone’'s roster ?

this sounds like equal to me. Shared roster is a group of contacts, shared group it’'s a group of contacts too. Unless you want every user to have self on roster.

I’‘m not sure you understood me. My aim is to set up a presence service for a phone book. That means everybody’‘s got the same contact list (the phone book). I thought it would be more efficient to have just one roster which would be used by everybody (a unique roster with a unique id which would be associated to all users), than to set up a shared group containing all users, and which would be loaded in everyone’‘s roster and implies (if there’'s x users) to load x rosters in memory. Did I make it clear ?

Sorry if I didn’'t make it clear in my initial question, and thanks for your answers !


Hey Olivier,

Is your question related to the server implementation? IMHO, I think that shared groups is what you are looking for. When you define a shared group the server will not keep a copy of the group in each user but it will compose dynamically the roster of the user with his local contacts plus the shared groups that the user may see. So if you modify the shared group then all the users that have that shared group in their rosters will be notified of the new changes.

Is the shared group functionality not matching to what you are looking for?


– Gato

You’‘re right, my question is perhaps more related to the server implementation… Actually the shared group functionality kind of match what I’‘m looking for, but I don’‘t know if it’'s going to be really efficient in my case.

I’‘ll try to explain more clearly what I’'m looking for :

I have a static list of people (the company’‘s employees). I want to build an app which would allow every employee to see others’’ presence. I thought setting up a presence server could match what I want, but I realized that presence servers set up a roster for every user. I’‘m wondering if it’'s not redundant (for my specific needs) to have a roster for each user, which would be updated every time a user change his presence state, than to have a unique roster, shared by everybody.

Here’'s my view of how it works :

  • jive messenger has a shared group functionality. If I have x users, it will set up a shared group in its database, and then copy it in each roster. I have then x rosters in memory, containing the same x items, and which will be updated at every change.

  • What I want is to set up just one roster, with the x users in it, and which will be associated to every user (that is to say, the roster has an id, and every user will have the same roster id). Every time a presence information is changed, the roster is updated and that’'s all!

Once again, I’‘m new to the world of presence and xmpp, so if I’‘m wrong, don’'t hesitate to correct me and tell me how it really works !!

Hey Olivier,

I see your point. The server will have the shared group users replicated in each roster that has been loaded into memory. You are correct in that this is replicated data that can potentially be optimized but remember that each user may rename the contact to a more appropriate name as well as adding it to other local groups. IMHO, before going into fine levels of optimizations I would say give it a try and let us know if you are having scaling issues.


– Gato

That’'s what I thought then.

Actually my aim is to use presence in a corporate phone book, in which people wouldn’‘t be able to modify anything but search for a contact (and find his presence state as well as his phone number). That’‘s why I thought it was a bit “heavy” to load all this replicated data in memory. I may have 10 000 to 50 000 contacts in the phone book so I don’'t know how it will work…

By the way, can jive messenger support so many connections ??