Hey everyone. Sorry, this is my first post and hopefully no one will kill me for this. I’‘ve been following the development of Wildfire for awhile now and I’‘ve noticed that shared roster groups have been a nightmare for just about everyone attempting them. I’‘m currently running an ejabberd installation (http://ejabberd.jabber.ru) and they, too, have their share of issues with this feature. (Visit the site and you’‘ll see I’'m partially responsible for a note on the main page regarding a bug in their implementation.)
So it was with high hopes that I decided to test Wildfire 3.0.0. Now I won’‘t bore you with details on the why’‘s/wherefor’‘s of running ejabberd over Wildfire in the first place/etc., but let’‘s just say I was blown away by Wildfire’'s installation/setup. The admin console. Wow. What a beautiful interface. And in general the entire installation process. Anyway, just wanted to get that in there before digging in. You guys have done a wonderful job from a UI perspective, and with this project in general. Please keep it up.
Now as shared roster groups and proper basic presence/IM functionality are key to us, I thought I’‘d begin testing Wildfire to see how it held up vs. ejabberd. In short, shared roster groups appear to be a real headache for developers. I’'ve found almost identical issues with respect to shared roster group usage in Wildfire as occurs in ejabberd. I suspect it revolves around handling the subscription settings, pushing the rosters down to clients, etc., because so far no one seems to have this working as one might hope.
However, in the process of my testing, I did start building a test case for the developers which I HOPE will at least give them an indication as to where to look. The following instructions are with regard to a basic setup (no LDAP, no fancy configs) and are reproducible EVERY TIME. Except where noted in square brackets, the results were identical between Wildfire 3.0.0 and the nightly build wildfire_2006-07-11. If there is anything else I can do, please let me know. I apologize in advance for the length of this message, but the test case should help track down some of the remaining issues.
FYI: Yes, you have fixed at least a few of the issues (see lines below in square brackets), but by no means is presence being handled properly at the moment. See the lines which say [BUG] at the end. For a product touting itself as an enterprise IM solution and offering paid support services, this is simply unacceptable. It may, at least for the time being, be advisable to do as the ejabberd folks have done and warn your users/customers that shared rosters do funny things to presence notifications/etc.
Final comment: In ejabberd, one of the other issues involving shared roster groups was what happened if a client renamed a roster entry that was part of a shared roster group. Basically, renaming a user could make them simply disappear from the roster (e.g., renaming ‘‘usera’’ as ‘‘Frank’’ on userb’‘s roster). However, a quick check of Wildfire at the end of the steps below shows I was able to rename users to my heart’'s content in any of the four clients I used, even shutting down/starting Wildfire, and all ran beautifully. So kudos on that! I am very impressed with how Wildfire is progressing.
SETUP
-
Windows XP SP2 with all updates through 11 July 2006
-
Sun Java JDK/JRE v1.5.0_07
-
Wildfire v3.0.0 (and nightly build)
-
Pandion v2.5 Windows client (usera)
-
Exodus v0.9.1.0 Windows client (userb)
-
Psi v0.10 Windows client (userc)
-
JAJC 0.0.8.114 Windows client (userd)
All client connections are done from the same box running the server, though NOT using the loopback (127.0.0.1) address, but rather a fully qualified domain name (FQDM), as one would do in a production environment. This means results should be the same regardless of whether clients connect from the local box or around the world. To make it possible to test easily from one box, I used four (4) different XMPP clients, one for each test account used below.
Reproducible steps to show presence/shared rosters not working properly:
INSTALLATION OF WILDFIRE
- Copy wildfire_3_0_0.zip to C:\Program Files\wildfire
WHEN TESTING NIGHTLY BUILD:
1.1. Rename ‘‘wildfire’’ directory to ‘‘wildfire_2006-07-11’’
1.2. Decompress wildfire_2006-07-11 nightly build on top of 3.0.0 install
1.3. Rename ‘‘wildfire_2006-07-11’’ back to ‘‘wildfire’’
INITIAL CONFIG
-
Execute C:\Program Files\wildfire\bin\wildfire.exe
-
Once initialized, click [Launch Admin].
-
Choose Language: (*) English, [Continue]
-
Domain: set to test box FQDM, [Continue]
-
Select (*) Embedded Database, [Continue]
-
Set
Admin Email Address:
New Password:
Confirm Password:
and [Continue]
This brings up the admin console webpage.
-
Click ‘‘Login to the admin console’’
-
Login with username ‘‘admin’’ and password set in step #7.
-
Leave all server settings at default. (Presence issue seems to apply regardless)
-
Click ‘‘Users/Groups’’ tab
-
Click ‘‘Create New User’’
-
Username: usera (fill in rest as you like), [Create & Create Another]
-
Username: userb (same), [Create User]
[NOTE: For testing, I tend to create users with passwords set the same as the username. To usera has password usera, userb has password userb, etc. Makes testing go quicker.]
-
Verify users exist by clicking ‘‘User Summary’’
-
Login with XMPP client as usera to verify account active/working. (I used Pandion 2.5 in my case)
-
Login as userb with another client to verify account active/working (Exodus 0.9.1.0 in my case)
-
Back in admin console, click ‘‘Sessions’’ tab to verify accounts logged in.
-
Logout of both accounts/quit clients for now.
-
Refresh ‘‘sessions’’ page & verify users logged out.
-
Click ‘‘Users/Groups’’ tab
-
Click ‘‘Group Summary’’ to verify no groups exist yet
-
Click ‘‘Create New Group’’
Group Name: group1
Initial Member(s): usera,userb
(*) Enable sharing group in rosters
Group Display Name [Test Group]
(*) Show group in all users’’ rosters.
[Create Group]
-
Click ‘‘Group Summary’’ to verify group created.
-
Login as usera. No ‘‘Test Group’’ appears, no userb in roster. [BUG]
-
Login as userb. ‘‘Test Group’’ appears in roster, with usera showing as online.
-
Logout usera. On userb’'s roster, usera remains showing as online. [BUG]
-
Logging back in/out as usera has no effect; usera does not get ‘‘Test Group’’ and userb does not see usera presence accurately. [BUG]
-
With usera logged in, logout userb.
-
Log back in userb. usera shows as online and stays that way even if you logout usera. [BUG]
-
Logout both usera and userb.
-
Login userb. usera does not show (as expected)
-
Login usera. In userb roster, usera STILL does not show. [BUG]
-
Logout usera and userb.
-
[Stop] Wildfire server. [Start] Wildfire server.
-
Login to admin console and verify users and groups are intact.
-
Login usera; NOW you get ‘‘Test Group’’ in usera’'s roster.
-
Login userb; NOW presence works as expected.
-
Try various logins/logouts of usera and userb; all works now.
-
In the admin console, click ‘‘Users/Groups’’ and ‘‘Create New User’’
Username: userc
-
Login userc (Psi 0.10 in my case) to verify acct. userc roster shows ‘‘Test Group’’ and both usera & userb; both show online, but presence doesn’'t change even if usera or userb sign off. [BUG]
-
Logout all users. [Stop] Wildfire server. [Start] Wildfire server.
-
Login userc.
-
Login usera. userc does not see usera [BUG: FIXED in 2006-07-11 nightly]
-
Login userb. usera sees userb and vice versa; userc sees NEITHER [BUG: FIXED in 2006-07-11 nightly]
-
Logout/login userc. Now both usera userb show online; but logout usera or userb and they show online. Once again userc not getting presence properly. [BUG: FIXED in 2006-07-11 nightly]
-
Logout all users. [Stop] Wildfire server. [Start] Wildfire server.
-
Login users; even now userc does not get correct presence. [BUG: FIXED in 2006-07-11 nightly]
-
In admin console, add userc to group1. The moment you do, all of a sudden usera and userb see userc in their roster.
-
Logout/login usera. userc does not see presence; and usera loses sight of userc. [BUG]
-
Logout/login userc. usera still does not see userc; userc sees both usera and userb online. userb never saw userc go offline. [BUG]
-
Logout/login userb. usera and userb see each other just fine, but userc does not. And now userb does not see userc. [BUG]
-
Logout all users. [Stop] Wildfire server. [Start] Wildfire server.
-
Login userc.
-
Login usera. NOW userc sees usera properly and vice versa.
-
Login userb; NOW userc sees userb properly and vice versa.
-
Logout/login usera. All works well now.
-
Logout/login userb. All works well now.
-
In the admin console, create userd and immediately add to group1.
-
Login userd (JAJC in my case). All users see each other.
-
Logout usera. All but userd see usera logout. [BUG: FIXED in 2006-07-11 nightly]
-
Login usera.
-
Logout/login userd. userb and userc see userd; usera does not. [BUG: FIXED in 2006-07-11 nightly]
-
Logout userb. All but userd see userb logout. [BUG: FIXED in 2006-07-11 nightly]
-
Login userb. Again, userd has disappeared. [BUG: FIXED in 2006-07-11 nightly]
-
Logout/login userd. Now usera and userb do not see userd. [BUG: FIXED in 2006-07-11 nightly]
-
Logout userc. All but userd see userc logout. [BUG: FIXED in 2006-07-11 nightly]
-
Login userc. userd has disappeared from userc’'s roster. [BUG: FIXED in 2006-07-11 nightly]
-
Logout/login userd. userd now effectively invisible. [BUG: FIXED in 2006-07-11 nightly]
-
Logout all users. [Stop] Wildfire server. [Start] Wildfire server.
-
Login all users. Everyone sees everyone.
-
Logout/login usera. Everyone sees usera logout/login.
-
Do same for userb, userc, and userd. Everyone see presence properly now.