Roster items being deleted due to "synching"

Hi,

we tried to migrate a jabberd1 server to wildfire with the IM Gateway plugin (newest beta). Conversion of rosters worked and before registering the icq transport, all (icq/msn/aim)-items could be seen on the roster.

As soon as the ICQ Transport was registered, it started “synching” with the icq server, which deleted up to 50% of the existent icq contacts on the roster because they weren’‘t on the contact list offered by the ICQ server(I guess the old transport didn’'t add roster items to the official icq list).

Could you please stop deleting ANY roster items while “synching” or at least give an option for this? I mean it should be sufficient to add contacts from the icq server to the roster that are not yet on the roster. Since it is jabber the roster should be the authority on this.

regards,

Magnus

The roster is expected to be properly in sync with your server side list at all times so it can properly keep track of things, otherwise there’‘s no point in syncing up rosters. What transport were you using before that was not syncing up things with the server side roster? For all practical purposes, this transport is expecting to claim icq.whatever as it’‘s own and as a “virtual” roster of sorts, so it will always wipe all “real” contacts or else there will start being conflicts. You can set a subdomain to assign the transport something other than the default “icq” if you want it to completely ignore the other transport’'s stuff. (see the wiki)

We are using the JIT that can be downloaded from jabberstudio.com. Well, the synching makes perfect sense, if the roster was in sync before. But you have to admit, that it is a weird behaviour after upgrading. I’'ll have a look at the wiki…

Don’‘t get me wrong, I think the work you’'re doing is impressive! It was just a bit disappointing to see this behaviour after a long process of converting everything…

cheers,

Magnus

As the author of PyICQt, I can tell you that the xmpp roster and the roster as it’'s known by the transport is always a pain in the butt. =/ You often get a lot of problems with either:

Scenario A:

  1. PyICQt wasn’'t running and you deleted 12345

  2. PyICQt roster thinks you know about ICQ buddy 12345

  3. Confusion results as PyICQt doesn’'t know to tell your XMPP server that you really -do- need this buddy

or visa versa, PyICQt won’'t know that you ever deleted 12345 to take care of it for you.

Scenario B:

There’'s an item in your roster that PyICQt never heard about and so it has no idea that it should be caring about this particular item.

Now JIT was supposed to be very focused on keeping things in sync on the server (ICQ) side. However I’‘ve seen even with PyICQt when people convert that there are a lot of leftover ICQ items in the person’‘s XMPP roster that it doesn’‘t know to deal with. So this confuses the hell out of the end users because they think there are people in their roster that never log in, or that there’‘s no reason why they think they need to re-add this person. (when really, they -do- need to readd because ICQ really doesn’'t know a thing about the user)

Take my personal experience migrating to using the plugin. If the plugin, instead of cleaning up my ICQ related roster items, had tried to sync them with the server, I would have had somewhere around 200 extra ICQ items that I would have had to clean up. This is mostly due to cruft leftover from various ICQ transports in the past, including aim-transport, JIT, and PyICQt.

That sad, what behavior would you expect to see, assuming I can’‘t really leave the persistent roster items in place without causing a lot of problems. (persistent is what’'s -really- in your roster, non-persistent are all of the items created by the plugin)

You have a valid point there. I was just commenting from a “new user just switched” perpective and it scared the shit out of me that my roster was crippled after the conversion although I manually checked that all roster items had been transfered.

I can’'t really think of any way to solve this, but deleting items from the roster is somewhat unexpected because it seems like a bug:

Maybe you can either send a message to the user that a certain item has been removed or maybe you could rename roster-items that you would delete otherwise to PLEASE RE-ADD “Nickname”. In may opinion, new users like me will consider this behaviour inconstistent or as a bug and switch back to their old systems without even considering that the icq list is causing the problems…

thanks for the short response times !

brathax wrote:

You have a valid point there. I was just commenting from a “new user just switched” perpective and it scared the shit out of me that my roster was crippled after the conversion although I manually checked that all roster items had been transfered.

I can’'t really think of any way to solve this, but deleting items from the roster is somewhat unexpected because it seems like a bug:

Maybe you can either send a message to the user that a certain item has been removed or maybe you could rename roster-items that you would delete otherwise to PLEASE RE-ADD “Nickname”. In may opinion, new users like me will consider this behaviour inconstistent or as a bug and switch back to their old systems without even considering that the icq list is causing the problems…

I keep sounding negative here, but sending notifications about removing all of them is exactly one of the things that is hateful about standard transports. (In a standard transport, the first time you register you get power flooded with messages asking you to subscribe to each of your contacts, annoying if you have 10, unbearable if you have 100)

As for the nickname thing, I am most certainly doing that! GATE-49 =) Go vote! hehehe “theoretically” an ICQ client is supposed to, after looking up the nickname of a person, store it in the server side contact list. Unfortunately I don’'t think JIT does that. PyICQt only does that after one of the last couple of releases because I had “just found out” how it was done in a real ICQ client. =)

In a real ICQ client it’‘s a little more transparent than that because typically you don’‘t just say “add contact 12345” you said "search for contact 12345 … oh look, 12345 is ninjamaster, yes, that’'s who i want to add" and ICQ wraps a little hug around it to keep track of 12345 being ninjamaster when it adds that to your contact list. =)

Basically the process is fairly simple, every time I see a contact without a nickname, I look up their nickname. I just need to you know… do it. =)

Oh, I misread. You weren’‘t saying that they don’‘t have nicknames, you were saying rename them to please readd. Well… I can’‘t say I like that idea because it makes your roster ugly and would scare a lot of users. "oh my, what are all these “PLEASE RE-ADD ME”’'s???" I mean again, this would have been a pain in the butt for me as an example because then I would have had 200-ish "PLEASE RE-ADD ME"s.

hmmm. I dont see any good solution after you pointed out the problems. The thing is, if we switch to wildfire + IM Gateways we will have tons of users complaining that their roster has been crippled. And honestly, I also have 150+ Items on my roster most of them being icq contacts. For many of those contacts I just have their icq number, and unless I do a backup of my roster, upgrade, manually add all the missing items, those contacts will be gone until they message me.

Anyways, thanks for the great support, and we’'ll have to do some thinking.