[jdev] File Transfer Interoperability

Alex Wenckus alex at jivesoftware.com
Mon Aug 6 13:18:30 CDT 2007

In Spark we made the changes as we found XEP-0096 deficient in several respects, its support for file transfer fail-over being one of them. A solution we hit upon for this was to allow clients to specify multiple methods of transfer during the negotiation process; unfortunately since PSI and iChat are strict in their interpretation of the received data from this causes file transfer to break. XEP-0096 and the related stream XEPs are deficient in several other regards which causes a poor file transfer experience.

We have been reluctant to change this in Spark for two reasons, one being we hoped to provide a responsible level of assurance that file transfer would not fail between Spark clients when SOCKS5 transfer failed and two we have been told for a while now that there would be a newer method of file transfer which would hopefully address many of the deficiencies in the current method. There was talk of updating the current XEPs to address several of the issues we came across but they were mostly brushed aside for reason 2.

I don't know what the best solution is in this situation. We want Spark to be compatible as can be in this case but if we were to move to strictly interpret the XEP this would cause a degradation in the file transfer experience in Spark, as you can see it was a lose, lost situation.


----- Original Message -----
From: "Justin Karneges" <justin-keyword-jabber.093179 at affinix.com>
To: "Jabber software development list" <jdev at jabber.org>
Sent: Sunday, August 5, 2007 8:04:09 PM (GMT-0800) America/Los_Angeles
Subject: Re: [jdev] File Transfer Interoperability

On Sunday 05 August 2007 8:49 am, Michael Laukner wrote:
> Hi,
> I have been reading the discussions about Basic/Intermediate Client 2008
> because I was interested in file transfer interoperability. Although
> there is a standard (XEP-96) file transfer does not work properly
> within the XMPP famliy of clients.
> http://www.igniterealtime.org/forum/thread.jspa?messageID=152457#152457
> http://forum.psi-im.org/thread/4174
> http://thread.gmane.org/gmane.network.jabber.standards-jig/10468
> Wouldn't it be nice if file transfer worked as seamless as an e-mail
> attachment? I would love if at least the main players (recommended
> clients in jabber.org) could agree on an implementation guideline.

The igniterealtime thread has a post containing compatibility test data 
between Spark, Pidgin, Psi, and Pandion.  Here is my explanation of the 

Pandion doesn't support XEP-96, and Pidgin/Gaim is notoriously buggy for file 
transfer.  The problem with these two has nothing to do with a lack of an 
implementation guideline.  Someone just needs to step up and fix things.

Spark uses a special variant of XEP-96 that apparently breaks compatibility 
with every other client, most likely due to x:data ambiguity.  I'd suggest 
the Spark guys make an extension that is less prone to misinterpretation.

As far as I can tell, Psi works properly.

Keep in mind that these are not the only clients.  Gajim, iChat, and Trillian 
are also popular clients that support file transfer, and they may not have 
any of the problems described in the igniterealtime thread.  The situation 
may not be as bad as you think.


More information about the JDev mailing list