Here a summary about JEP File Transfer(original JEP cuts):
JEP-0047 In-Band Bytestream (IBB)
A protocol for bytestreaming data in band between two Jabber entities.
The basic idea is that binary data is encoded as base64 and transferred over the Jabber network.
IBB is a generic bytestream, and so its usage is left open-ended. It is likely to be useful for sending small payloads, such as files that would otherwise be too cumbersome to send as an instant message (such as a text file) or impossible to send (such as a small binary image file). It could also be useful for any kind of low-bandwidth activity, such as a chess game or a shell session.
IBB could be more desirable for many of the simple bytestream use-cases that do not have high bandwidth requirements.
Generally, IBB should be used as a last resort. SOCKS5 Bytestreams will almost always be preferable
A server MAY rate limit a connection, depending on the size and frequency of data packets.
A server MAY disconnect a connection that sends overly large packets as defined by server policy.
It is RECOMMENDED to use a ‘‘block-size’’ of 4096.
JEP-0065 SOCK5 Bytestreams
This JEP proposes a protocol that meets the following conditions:
Bytestreams are established over standard TCP sockets
Sockets may be direct (peer-to-peer) or mediated (established through a bytestreaming service)
Where possible, standard wire protocols are used
Specifically, this JEP proposes that the Jabber community make use of the SOCKS 5 protocol, which is an IETF-approved, IPv6-ready technology for bytestreams
There are two scenarios addressed by this protocol:
direct connection (i.e., the StreamHost is the Initiator)
mediated connection (i.e., the StreamHost is a Proxy)
Direct connection is the simpler case. In this situation, the StreamHost is the Initiator, which means that the Initiator knows the network address of the StreamHost and knows when to activate the bytestream.
Mediated connection is slightly more complicated. In this situation, the StreamHost is not the Initiator but a Proxy, which means that the Initiator must discover the network address of the StreamHost before sending the initial IQ-set, must negotiate a connection with the StreamHost in the same way that the Target does, and must request that the StreamHost activate the bytestream before it can be used.
JEP-0096: File Transfer
The traditional mechanism for transferring files in the Jabber community is the Out-of-Band Data protocol. That protocol has several drawbacks:
It is not reliable.
It does not work when one of the parties is behind a firewall.
It provides limited metadata about files to be exchanged.
This protocol defines a profile of Stream Initiation that solves the problems with out-of-band data, thus providing a robust, reliable mechanism for file transfers over the Jabber network. Implementors are referred to JEP-0095 regarding the underlying concepts of stream initiation.
In order to enable seamless file transfer and appropriate fall-back mechanisms, implementations of this profile MUST support both SOCKS5 Bytestreams and In-Band Bytestreams, to be preferred in that order.
Now the problem is: which JEP(s) Smack should support?
Matt’'s preference is IBB.
I need Smack community opinion.
I’'m waiting your answer. GO!GO!GO!