because pretty much all chat software loads your entire roster at boot. they then show you what you have chosen in the preferences, e.x. Show offline users, or not show offline users. In the case of spark this is group or not group offline users. This is standard practice with every protocol I have ever used (AIM, Yahoo, MSN, iChat(xmmp, AIM), etc). You need to load your entire roster in order to know when somebody comes online or goes offline. The status of their presense is linked to the ID loading in the roster. IF the user is not in the roster at the outset the app will not be notified of status changes.
I agree with you. but, in my opinion, that solution does not scale well.
Regarding what you said:
“You need to load your entire roster in order to know when somebody comes online or goes offline. The status of their presense is linked to the ID loading in the roster. IF the user is not in the roster at the outset the app will not be notified of status changes.”
This should not be necessary, linking a user to roster members should be done only in database. The fact that the user receives roster info has nothing to do with the desire of receiving presence notifications (if offline presence display is disabled off course).
I already added a component that is contacted everytime a user logs in and broadcasts its presence to all online users of the same shared group. This was done to try to correct sparkweb not updating new shared group users to already online users.
So maybe ill give it a try this experience to load only online users.
Im very concerned to deploy this and the clients wait forever to load their roster.