[Foundation] Call For Arbitration: File Transfer

Ryan Eatmon reatmon at jabber.org
Mon Aug 25 13:05:03 CDT 2003



As the Council Chair it is my role to inform the membership about our decision
for the Call for Arbitration on the File Transfer topic.


Problem:

There are two competing and similar JEPs for doing file transfers.  The
Council has been asked to pick one.

Reliable Entity Link(REL) - JEP-41
File Transfer(FT) - JEP-52

vs.

Stream Initiation(SI) - JEP-95
File Transfer Stream Initiation Profile(Profiles) - JEP-96



History:

http://mailman.jabber.org/pipermail/council/2003-June/000937.html
http://mailman.jabber.org/pipermail/standards-jig/2003-July/003674.html



Issues:

Several of the Council members looked into all of the protocols and discussed
them in depth.  We have compared the two approaches and narrowed down the
differences to the following:


1) How do you provide for other types of streams?  Which framework provides
the best growth for the future?

REL requires a new structure/JEP for each new application you would want to
use it for, in this case FT.  The protocols can diverge in structure and reuse
from any other protocols that would use REL.

SI provides a framework for establishing generic streams, plus a method for
extending it in an organized manner, in this case Profiles.


2) What does the state table look like for establishing a stream?

REL and FT require two steps to accept a file and decide on the stream.  One
to accept the file based on FT, and the other to establish the stream method
based on REL.

SI/Profiles requires only one step.  Since it contains the information about
the stream via the Profile, a Client can accept, or reject, a file based on
it's size/type/etc..., and it can accept/reject a stream based on stream methods.

The Council prefers the simplicity and predictability of the SI/Profiles protocol.


3) How do you handle a failure during a stream transfer?

REL requires that you try and send the file again and again until it succeeds,
or you hit a keep alive limit.

SI just stops and the file is not transfered.  It is left up to the user to
resend it.

It is simple enough for an author to support automation within their Client
without requiring it in the protocol.



Decision:

The Council has selected SI and Profiles as the protocol of choice for
implementing file transfer negotiations. Go forth and implement.



Notes:

Three of the Council members, and one non-Council member of the JSF, have
implemented SI w/ Profiles and verified the ease and logic involved with this
method, including how easy it would be add support for new profiles.

We have also discussed a few other Profiles that we think would be simple to
create using this methodology, one of them being JEP-105 Tree Transfer Stream
Initiation Profile for transferring entire directory structures and not just
single files at a time.



The Jabber Council



-- 
Ryan Eatmon
reatmon at jabber.org





More information about the Members mailing list