I've been working on understanding users, groups, and rosters in OpenFire. If I understand correctly, the subscription status between two users (viewable in the user roster admin panel) ought to always be symmetric: e.g. if Alice has a subscription to Bob, then Bob has a subscription from Alice.
However, it is very easy to use shared groups to construct situations where this is not the case. If you create a group G, enable contact list sharing for G, then add Alice and Bob to G, you wind up in a situation where Alice has a subscription to Bob of type both and Bob has a subscription to Alice of type to. This seems wrong; if either one of these is both, then shouldn't both be both? I am especially convinced it should act this way since this is how it works if you set G to enable contact list sharing AFTER adding Alice and Bob as members.
Steps to reproduce in the admin panel:
1. create a group G
3. create users A and B
4. look at rosters for A and B (both are empty)
5. set G to "enable contact list group sharing" but NOT "share group with additional users"
6. add A and B to G
7. observe that A and B have asymmetric rosters
(Also, very strange behavior: if you skip step 4, the rosters behave as expected, with A and B both having both subscriptions to each other.)