In a mobile client, it often makes sense to provide access to the user’s roster even when there is no connectivity available, e.g. to read up a conversation or to write (and queue for transmission) a response.
The Roster API is the most elegant way to access the roster, but it is only available after a connection was successfully authenticated and the roster was loaded (from the server or from a RosterStore). This is a big problem when the user re-starts the client after a phone restart / OOM condition.
Using the RosterStore API (or directly accessing the underlying SQL/file/whatever backend) means that the mobile client needs to wrap every single roster access through a switch depending on whether Roster has been loaded, and to mock the respective Roster API otherwise.
It would be awesome if we could load the RosterStore data into Roster even when no connection was made yet, and make it accessible to the application. Once a connection is established and the actual roster is loaded, a reset/delta operation would have to take place.