Re: [Standards] File Transfer Roadmap

2015-07-30 Thread Sam Whited
On Mon, Jul 27, 2015 at 3:33 AM, Christian Schudt
christian.sch...@gmx.de wrote:
 1) How to do offline file transfer? (see HTTP Upload-XEP)
 2) How to send a file in a MUC room to all occupants/members?

I don't think JFT is really suitable for this in the general everyday
XMPP-IM use case, but I also don't see any reason why it couldn't be
done, and can imagine that it would be useful for specialized
applications.

I could see this being added to JFT, or I could see a separate XEP
being made which simply sends a message with a receive URI and a
mechanism for triggering a JFT session with the server (and provides a
way to initialize a JFT session with the server to upload the file).

—Sam


-- 
Sam Whited
pub 4096R/54083AE104EA7AD3
https://blog.samwhited.com


Re: [Standards] File Transfer Roadmap

2015-07-27 Thread Kim Alvefur
mån jul 27 00:33:40 2015 GMT+0200 skrev Sam Whited:
 Thoughts?

Sounds good. 

--
Zash 

Re: [Standards] File Transfer Roadmap

2015-07-27 Thread Daniel Gultsch
Hi,

sorry for not responding properly in Thread (Gmail denies me proper Thread
view). So take this as a response to all of you.

I think P2P file transfer (as defined with Jingle FT) and file upload to a
server (HTTP File Upload) can and should coexist. HTTP file transfer is
meant primarily for smaller files like images or short audio / voice
recordings in a strict Whatsapp-like IM context where people have multiple
connected clients at once and also are interested in having access to a
history. P2P file transfer on the other hand can scale up to large files
that I only need once. (Buddy wants to send me a Full HD movie before he
comes over for movie night. I probably are only going to need to download
this file once and only at one of my devices. And I'm certainly not
interested in having this in my history.)

As for what P2P file transfer mechanisms to choose I'm all with Sam and
would vote for Jingle FT.
Jingle FT - being based on Jingle - has the advantage of being able to plug
in different modes of transport.
There are IBB, Socks and WebRTC Datachannels (XEP-0343) (which Sam missed
in his list). Two of those transport mechanisms address Georges concerns
with encryption.

cheers
Daniel

2015-07-27 14:25 GMT+02:00 Kim Alvefur z...@zash.se:

 mån jul 27 00:33:40 2015 GMT+0200 skrev Sam Whited:
  Thoughts?

 Sounds good.

 --
 Zash


Re: [Standards] File Transfer Roadmap

2015-07-27 Thread Evgeny Khramtsov
Mon, 27 Jul 2015 10:33:15 +0200
Christian Schudt christian.sch...@gmx.de wrote:

 1) How to do offline file transfer? (see HTTP Upload-XEP)
 2) How to send a file in a MUC room to all occupants/members?

 I think before moving JFT to Draft, the above two questions should be
 discussed.

HTTP upload is a really good conception which will work for MUC as
well. No need to bypass NATs. Extremely easy to implement.


Re: [Standards] File Transfer Roadmap

2015-07-27 Thread Georg Lukas
* Sam Whited s...@samwhited.com [2015-07-27 00:35]:
 With that in mind, I'd like to know what the council (and everyone
 elses) opinion is of moving Jingle File Transfer forward in the process?

I am strictly against pushing forward a mechanism that does not specify
strong, mandatory, end-to-end encryption. We have had mandatory
encryption on s2s links for over a year now, thanks to the Manifesto.
And now we are going to promote plain-text transfers for the really
sensitive data (it's not all lolcats and funny jingles)?

It looks like IBB is currently the only specification that does not
reduce the media transfer security compared to normal chats, at the cost
of killing the server's performance and traffic bills.

There is a bunch of different encryption ideas, implementations and
proposals that all failed to gain adoption so far. I think we need to
evaulate them and pick a winner, which should be promoted into an XEP
then:

 * XEP-0116: Encrypted Session Negotiation (Deferred since 2007)
 * XEP-: XMPP Transport Layer Security (stale since 2009)
 * OTRv3 media keys (obviously requires OTR; also broken for
 the multi-client use cases)
 * ZRTP (used in Jingle for VoIP traffic)
 * End-to-End Object Encryption (draft-miller-xmpp-e2e; expired in 2013)
 * ChatSecure's HTTP transfers over OTR over XMPP messages
 * Conversations' HTTP Uploader with the key appended to the URL
 * Axolotl (also solves multi-client end-to-end chats; currently
 implemented in Conversations as a GSoC)
 * WebRTC (would allow interop with browsers, if done right; also solves
 the NAT problem; already implemented in jitsi-videobridge?)

Personally, I think that Axolotl and WebRTC are the two strongest
candidates here, with the former establishing a secure channel between
the two (or N) clients, from where a media encryption protocol still
needs to be derived (maybe in combination with Jingle). The latter does
not secure regular messages, and I suppose it does not allow
peer-to-multi-peer data transmissions without a trusted hub server, but
it gives us NAT traversal and interop with browsers.


Georg
-- 
|| http://op-co.de ++  GCS d--(++) s: a C+++ UL+++ !P L+++ !E W+++ N  ++
|| gpg: 0x962FD2DE ||  o? K- w---() O M V? PS+ PE-- Y++ PGP+ t+ 5 R+  ||
|| Ge0rG: euIRCnet ||  X(+++) tv+ b+(++) DI+++ D- G e h- r++ y?   ||
++ IRCnet OFTC OPN ||_||


signature.asc
Description: Digital signature


Re: [Standards] File Transfer Roadmap

2015-07-27 Thread Christian Schudt
Hi,

there's another related XEP: XEP-0137: Publishing Stream Initiation Requests.

I am not sure if Jingle File Transfer should cover the following use cases as 
well, but what I am reading and hearing more and more (in this list, in my 
company, in forums) are the following two requirements:

1) How to do offline file transfer? (see HTTP Upload-XEP)
2) How to send a file in a MUC room to all occupants/members?

I don't think these use cases are properly covered by existing XEPs, maybe 
XEP-0066 for 1) and XEP-0137 for 2), but still very vague.

I suggested to use JFT for uploading a file to a server (for the offline case, 
instead of the HTTP Upload-XEP approach), but I am still not sure, if JFT is 
suitable for this.

I think before moving JFT to Draft, the above two questions should be discussed.


- Christian



Gesendet: Montag, 27. Juli 2015 um 00:33 Uhr
Von: Sam Whited s...@samwhited.com
An: XMPP Standards standards@xmpp.org
Betreff: [Standards] File Transfer Roadmap
As I mentioned on the MUC room earlier, I've been investigating the
state of file transfer in XMPP, which has historically been a sticky
point for the protocol (especially where compatibility between different
clients is concerned).

After digging a bit, the following XEP's appear to be related to file
transfer or stream initialization to some degree (please do point out
any that I've overlooked):

- XEP-0047: In-Band Bytestreams (Final Standard)
- XEP-0065: SOCKS5 Bytestreams (Draft Standard)
- XEP-0066: Out of Band Data (Draft Standard)
- XEP-0095: Stream initialization (Draft Standard)
- XEP-0096: SI File Transfer (Draft Standard)
- XEP-0166: Jingle (Draft Standard)
- XEP-0234: Jingle File Transfer (Experimental)
- XEP-0260: Jingle SOCKS5 Bytestreams Transport Method (Draft Standard)
- XEP-0261: Jingle In-Band Bytestreams Transport Method (Draft Standard)
- HTTP Upload (ProtoXEP in PR [1])

The only real sticking point I can see for obsoleting several of these
XEPs and pushing forward with Jingle as the officially recommended
method is the fact that Jingle File Transfer is still marked as
experimental. However, it is already begining to gain adoption (Gajim,
Conversations, Swift, Stanza.io, Babbler, probably others that I'm
unaware of), while other clients, such as the ever popular libpurple,
tend to refuse to implement XEPs that are still in the Experimental
stage (I'm not sure if that's actually what's happening WRT Jingle File
Transfer).

With that in mind, I'd like to know what the council (and everyone
elses) opinion is of moving Jingle File Transfer forward in the process?
What needs to be done? The last time JFT was discussed (as far as I'm
aware), the only problem was the complaint that the request/ flow had
been removed, however, Lance pointed out that this was a
reimplementation of existing Jingle semantics [2] and was planning on
adding a section to describe how this worked in JFT:4.

If this is indeed the only blocker, I'd like to propose the following
roadmap for XMPP file transfer:

- Incorporate Lance's changes to JFT (or, if he is no longer working
on those, I will propose similar changes to describe the plain-Jingle
re-request flow)
- Advance Jingle File Transfer to Proposed (and then hopefully to
Draft shortly thereafter)
- Deprecate XEP-0096 and mark it as obsoleted by XEP-0234
- Evaluate moving XEP-0047, and XEP-0065 fully into XEP-0234, and
XEP0260 (which partially re-describe them) to reduce confusion, or
leaving it alone to reduce work and needless changes.

As I said, I'm happy to drive any or all of this, but want to get some
idea of how people feel about it before attempting any of the work (eg.
are Lance's patches to JFT still being worked on or should I (or anyone
else who has a better grasp of Jingle than I do) take up the torch, will
the XSF ever actually obsolete SI File Transfer or will that be a
down-vote from the get-go at which point there's no reason to work on
it, etc.) Thoughts?

—Sam


[1]: https://github.com/xsf/xeps/pull/30
[2]: 
http://mail.jabber.org/pipermail/standards/2015-July/030021.html[http://mail.jabber.org/pipermail/standards/2015-July/030021.html]

--
Sam Whited
pub 4096R/54083AE104EA7AD3
https://blog.samwhited.com[https://blog.samwhited.com]
 


Re: [Standards] File Transfer Roadmap

2015-07-27 Thread Rick van Rein
Hi Sam / others,

I hope I'm not being ignorant by not having been in the MUC, but one
issue deserves attention I think:

When talking of file transfer, the issue of NAT traversal invariably
pops up, and becomes a strong selection criterium for the mechanism to
use.  Please don't forget that file transfer between pre-negotiated
endpoints is *much* easier in the case of transparant addressing, which
we may assume when IPv6 is being used.  A sound choice of mechanism
should take IPv6 into account, or a separate mechanism might be
preferred for IPv6, or perhaps a variation e.g. without NAT traversal
techniques.  To simplify the transition, ideally the same mechanism
would be used for IPv4 and IPv6 of course.

Cheers,
 -Rick


Re: [Standards] file transfer

2007-08-28 Thread Richard Dobson


I digress, but... you cannot surf and call on GPRS at the same time, 
generally.  This is why if someone calls a GSM phone while you are 
loading a webpage, they will generally go straight to voicemail.
Just to correct you here but they wont goto voicemail (if you are 
connected to WAP using a dial up method maybe), but you can definitely 
be downloading via GPRS/3G/HSDPA and still make and receive calls, i've 
done it myself.



Ive been reading this thread with interest and while I must agree with 
most of the comments about Jonathan's suggestion expressed here it has 
stirred up some simple ideas of my own related to file transfer.


automatic file pre-compression
-
It would be handy to be able to automatically compress files before they 
are transferred and then be able to specify this in the SI negotiation 
allowing the receiving client to then automatically decompress the file 
once it has received it, this could greatly help with the size of file 
transfers and would also only need to be done for file types that would 
benefit from it, i.e. you wouldn't bother with files that were already 
compressed or things like audio and video files that are likely to only 
get marginal gains.


jingle bytestream
-
When we come to implement file transfer using jingle I would suggest 
that rather than creating a brand new backwards incompatible file 
transfer protocol that we simply implement a new jingle bytestream 
transport just like XEP-0047 and XEP-0065 which would allow complete 
compatibility with the SI negotiation but still gets all the benefits a 
file transfer over jingle UDP would bring, i.e. better likelihood of 
connection.


Richard




Re: [Standards] file transfer

2007-08-28 Thread Dave Cridland

On Tue Aug 28 09:39:39 2007, Richard Dobson wrote:


I digress, but... you cannot surf and call on GPRS at the same 
time, generally.  This is why if someone calls a GSM phone while 
you are loading a webpage, they will generally go straight to 
voicemail.
Just to correct you here but they wont goto voicemail (if you are 
connected to WAP using a dial up method maybe), but you can 
definitely be downloading via GPRS/3G/HSDPA and still make and 
receive calls, i've done it myself.




Yes, but (certainly on my phone) it cuts the GPRS while you do so.

However, it's certainly possible to have multiple data transfers 
going on in a single GPRS session, but that, of course, is using this 
really cool bytestream technology called TCP. I here it's used 
quite widely, these days. ;-)



automatic file pre-compression
-
It would be handy to be able to automatically compress files before 
they are transferred and then be able to specify this in the SI 
negotiation allowing the receiving client to then automatically 
decompress the file once it has received it, this could greatly 
help with the size of file transfers and would also only need to be 
done for file types that would benefit from it, i.e. you wouldn't 
bother with files that were already compressed or things like audio 
and video files that are likely to only get marginal gains.



If you're transferring over a compressed stream (say, a modern TLS 
implementation), then it's worth noting that compression algorithms 
usually contain some mechanism for identity encoding.


This is needed because files with high entropy (ones that are already 
compressed) would otherwise lead to alarming expansion. This allows 
for not only transparent compression, but also transparent 
non-compression, and allows applications to stop trying to 
second-guess whether data is compressible or not.


Interleaving different data streams will defeat this, but if a new 
data stream (and thus compression state) is used for each transfer, 
this will work out okay.


If you want to transfer multiple files, do so either in distinct 
sessions (if you want to do so concurrently), or serially within the 
same session, with an intervening flush.


As an unrelated aside, TLS in this instance would benefit from 
mandatory support for anonymous cipher suites. ADH et al would be 
perfect for this kind of thing.




jingle bytestream
-
When we come to implement file transfer using jingle I would 
suggest that rather than creating a brand new backwards 
incompatible file transfer protocol that we simply implement a new 
jingle bytestream transport just like XEP-0047 and XEP-0065 which 
would allow complete compatibility with the SI negotiation but 
still gets all the benefits a file transfer over jingle UDP would 
bring, i.e. better likelihood of connection.


I'd be interested to here what Rob McQueen and other knowledgeable 
folk would think about transferring files over ICE. I vaguely recall 
there are existing mechanisms for layering SCTP over UDP, which 
presumably might fit here and save a lot of work. (Not that SCTP is 
quite what you want for file transfers, but it'll do).


Dave.
--
Dave Cridland - mailto:[EMAIL PROTECTED] - xmpp:[EMAIL PROTECTED]
 - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
 - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade


Re: [Standards] file transfer

2007-08-28 Thread Richard Dobson



Yes, but (certainly on my phone) it cuts the GPRS while you do so.
Fair enough, mine doesn't, must be a limitation either with your handset 
or your network provider (I would expect its just the handset trying to 
maximize battery life and radio usage, as you arn't entirely likely to 
be needing to use it while on a call rather than being a limitation of 
GPRS), does yours send incoming calls to voicemail as Rachael says hers 
does when you are doing GPRS transfers?
However, it's certainly possible to have multiple data transfers going 
on in a single GPRS session, but that, of course, is using this really 
cool bytestream technology called TCP. I here it's used quite 
widely, these days. ;-)
LOL, although technically im pretty sure GPRS (and 3G) often uses 
multiple channels in order to speed up data transfer speeds anyway.
If you're transferring over a compressed stream (say, a modern TLS 
implementation), then it's worth noting that compression algorithms 
usually contain some mechanism for identity encoding.


This is needed because files with high entropy (ones that are already 
compressed) would otherwise lead to alarming expansion. This allows 
for not only transparent compression, but also transparent 
non-compression, and allows applications to stop trying to 
second-guess whether data is compressible or not.


Interleaving different data streams will defeat this, but if a new 
data stream (and thus compression state) is used for each transfer, 
this will work out okay.


If you want to transfer multiple files, do so either in distinct 
sessions (if you want to do so concurrently), or serially within the 
same session, with an intervening flush.


As an unrelated aside, TLS in this instance would benefit from 
mandatory support for anonymous cipher suites. ADH et al would be 
perfect for this kind of thing.


The thing is the specs (XEP-0047, XEP-0065, XEP-0095, XEP-0096) mention 
nothing about using TLS over the bytestream so im pretty sure that would 
break all existing implementations, whereas pre-compressing the file is 
completely backwards compatible with whats being sent over the 
bytestream and compatible with all receiving clients as the user will 
still likely be able to decompress a zip file themselves if their client 
does not support automatic decompressing.


I'd be interested to here what Rob McQueen and other knowledgeable 
folk would think about transferring files over ICE. I vaguely recall 
there are existing mechanisms for layering SCTP over UDP, which 
presumably might fit here and save a lot of work. (Not that SCTP is 
quite what you want for file transfers, but it'll do).
Yea but would be good if we can implement it in the most backwards 
compatible way we possibly can which creating a jingle bytestreams (ala 
XEP-0047/XEP-0065) spec should do, it also reuses existing work, and 
even allows the reuse of the jingle bytestream in other specs (i.e. the 
idea of SI) without changing anything in jingle itself.


Richard




Re: [Standards] file transfer

2007-08-28 Thread Peter Saint-Andre
Richard Dobson wrote:

 jingle bytestream
 -
 When we come to implement file transfer using jingle I would suggest
 that rather than creating a brand new backwards incompatible file
 transfer protocol that we simply implement a new jingle bytestream
 transport just like XEP-0047 and XEP-0065 which would allow complete
 compatibility with the SI negotiation but still gets all the benefits a
 file transfer over jingle UDP would bring, i.e. better likelihood of
 connection.

I started working on such a beast a while back but never finished:

http://www.xmpp.org/extensions/inbox/jingle-bytestreams.html

That covered XEP-0065 only, but naturally we could define a transport
type for IBB (XEP-0047) too.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] file transfer

2007-08-28 Thread Richard Dobson

No, it would work the other way around -- it enables you to re-use your
existing SOCK5 and IBB code, but for the negotiation you'd use Jingle
instead of SI.


Ah I see, I thought so, I was suggesting doing things the other way 
around which would be far more backwards compatible as you wouldnt need 
to implement two separate ways of initiating file transfers which allows 
you to reuse not just the SOCKS5 and IBB code but also the SI and file 
transfer initiation code and you are just adding an extra stream-method 
which makes things much simpler, certainly for me it would make 
implementing it 100x simpler as my SI/file transfer code is all 
abstracted out and all I would need to do was implement a jingle 
bytestream stream-method, not redo all the file transfer discovery, 
offering, acceptance etc etc which makes things very much more complicated.


Richard



Re: [Standards] file transfer

2007-08-28 Thread Peter Saint-Andre
Richard Dobson wrote:
 No, it would work the other way around -- it enables you to re-use your
 existing SOCK5 and IBB code, but for the negotiation you'd use Jingle
 instead of SI.
 
 Ah I see, I thought so, I was suggesting doing things the other way
 around which would be far more backwards compatible as you wouldnt need
 to implement two separate ways of initiating file transfers which allows
 you to reuse not just the SOCKS5 and IBB code but also the SI and file
 transfer initiation code and you are just adding an extra stream-method
 which makes things much simpler, certainly for me it would make
 implementing it 100x simpler as my SI/file transfer code is all
 abstracted out and all I would need to do was implement a jingle
 bytestream stream-method, not redo all the file transfer discovery,
 offering, acceptance etc etc which makes things very much more complicated.

I understand. But SI and Jingle essentially perform the same functions,
since they both enable negotiation.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] file transfer

2007-08-28 Thread Robin Redeker
On Tue, Aug 28, 2007 at 09:21:43PM +0100, Richard Dobson wrote:
 Peter Saint-Andre wrote:
[.snip.]
 I understand. But SI and Jingle essentially perform the same functions,
 since they both enable negotiation.
 
 Yes but jingle also provides access to ICE and pseudo-tcp so it would be 
 helpful rather than have the entire file transfer negotiation using just 
 jingle if it was separated in two so that all the jingle side is doing 
 is negotiating a generic bytestream that can be then reused by things 
 like SI, to me this seems like a sensible compromise as there is no real 
 benefit that I can see of doing the whole thing in jingle as its just 
 duplicating effort, whereas creating a new bytestream method is 
 complimentory, anyone else think its a good idea?

I generally thought that reimplementing all that with jingle is a bad
idea. And I as client/library author surely don't like the idea of
duplicating code or functinality.

I agree completly with you.


Robin


Re: [Standards] file transfer

2007-08-28 Thread Tomasz Sterna
Dnia 28-08-2007, Wt o godzinie 21:21 +0100, Richard Dobson napisał(a):
 Yes but jingle also provides access to ICE and pseudo-tcp so it would
 be helpful rather than have the entire file transfer negotiation using
 just jingle if it was separated in two so that all the jingle side is
 doing is negotiating a generic bytestream that can be then reused by
 things like SI, to me this seems like a sensible compromise as there
 is no real benefit that I can see of doing the whole thing in jingle
 as its just duplicating effort, whereas creating a new bytestream
 method is complimentory, anyone else think its a good idea?

Me. :-)

+1 for SI/Jingle FT

-- 
Tomasz Sterna
Xiaoka.com  http://www.xiaoka.com/



Re: [Standards] file transfer

2007-08-28 Thread Peter Saint-Andre
I sense some confusion...

Robin Redeker wrote:
 On Tue, Aug 28, 2007 at 09:21:43PM +0100, Richard Dobson wrote:
 Peter Saint-Andre wrote:
 [.snip.]
 I understand. But SI and Jingle essentially perform the same functions,
 since they both enable negotiation.
 Yes but jingle also provides access to ICE and pseudo-tcp so it would be 
 helpful rather than have the entire file transfer negotiation using just 
 jingle if it was separated in two so that all the jingle side is doing 
 is negotiating a generic bytestream that can be then reused by things 
 like SI, to me this seems like a sensible compromise as there is no real 
 benefit that I can see of doing the whole thing in jingle as its just 
 duplicating effort, whereas creating a new bytestream method is 
 complimentory, anyone else think its a good idea?

It's unclear exactly what you mean. You want a Jingle method as one
option in stream initiation, like this?

iq type='set' id='offer1' to='[EMAIL PROTECTED]/resource'
  si xmlns='http://jabber.org/protocol/si'
  id='a0'
  mime-type='text/plain'
  profile='http://jabber.org/protocol/si/profile/file-transfer'
file xmlns='http://jabber.org/protocol/si/profile/file-transfer'
  name='test.txt'
  size='1022'/
feature xmlns='http://jabber.org/protocol/feature-neg'
  x xmlns='jabber:x:data' type='form'
field var='stream-method' type='list-single'
  option
valueurn:xmpp:jingle/value
  /option
/field
  /x
/feature
  /si
/iq

And then you do a Jingle negotiation to figure out how to proceed?

 I generally thought that reimplementing all that with jingle is a bad
 idea. And I as client/library author surely don't like the idea of
 duplicating code or functinality.
 
 I agree completly with you.

See earlier list discussion. We had rough consensus that in the long
term client developers didn't want both SI and Jingle as negotiation
mechanisms -- that it would be easier to have just one approach.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] file transfer

2007-08-28 Thread Richard Dobson

It's unclear exactly what you mean. You want a Jingle method as one
option in stream initiation, like this?


Not quite, it would be more like this:

iq type='set' id='offer1' to='[EMAIL PROTECTED]/resource'
  si xmlns='http://jabber.org/protocol/si'
  id='a0'
  mime-type='text/plain'
  profile='http://jabber.org/protocol/si/profile/file-transfer'
file xmlns='http://jabber.org/protocol/si/profile/file-transfer'
  name='test.txt'
  size='1022'/
feature xmlns='http://jabber.org/protocol/feature-neg'
  x xmlns='jabber:x:data' type='form'
field var='stream-method' type='list-single'
  option
valueurn:xmpp:jingle:bytestreams/value
  /option
  option
valuehttp://jabber.org/protocol/bytestreams/value
  /option
  option
valuehttp://jabber.org/protocol/ibb/value
  /option
/field
  /x
/feature
  /si
/iq

i.e. completely backwards compatible for all receiving clients, only 
clients that know about the jingle bytestream method would try to use 
it, others would fall back to traditional methods, all without needing a 
separate jingle file transfer offer mechanism with all the associated 
discovery and duplicate implementation and complexity that would arise 
from that.



And then you do a Jingle negotiation to figure out how to proceed?


Only in that jingle would be negotiating a generic bytestream just as 
how SOCKS5 and IBB work and then passing the file to it.



See earlier list discussion. We had rough consensus that in the long
term client developers didn't want both SI and Jingle as negotiation
mechanisms -- that it would be easier to have just one approach.


Maybe, but ive seen plenty of people also comment that they dont like 
the fact they are going to have to implement two different file transfer 
establishment methods in order to maintain backwards compatibility, also 
I dont seem to remember anyone suggesting this particular compromise 
back then and I wanted to see what people thought about it, so far two 
votes for yes.


Richard



[Standards] file transfer (was: Re: [LONG] Jeez, Sorry)

2007-08-27 Thread Peter Saint-Andre
Please stop top-posting. It makes the discussion hard to follow.

Jonathan Chayce Dickinson wrote:
 I'm sorry. Didn't mean any harm. 

I know you didn't. I appreciate your enthusiasm, I really do! But let's
temper it with some realism. :)

 I'm not too hot on bandwidth here, 

I'm not too hot on mental bandwidth here, either. :)

 so I
 didn't come across MTOM.

So you didn't research very thoroughly, did you?

If you click I'm Feeling Lucky at http://www.google.com/ when
searching for Direct Internet Message Encapsulation, you come to the
following page:

http://xml.coverpages.org/dime.html

And right there at the top you find this text:

Note: Microsoft has listed DIME among Superseded Specifications in its
Messaging Specifications Index Page. See Direct Internet Message
Encapsulation (DIME) [June 17, 2002]: This specification has been
superseded by the SOAP Message Transmission Optimization Mechanism
(MTOM) specification.

So here we find many things we need to know. In particular, the
technology was superseded and was never seriously pursued. So why are we
discussing it here?

However, your suggestion might lead to a productive discussion about
file transfer / file sharing, see below

 I wasn't wasting your time, quote: Didn't want to push this forward
 until I got some feedback. I don't like wasting people's time, hell, I
 love helping people out and solving problems: don't reply to this and
 you will never hear of it again; all it takes is nope, not a good
 idea, not something as violent as fanciful (ouch!).

It's fanciful to seriously suggest using a technology that was
superseded and abandoned over 5 years ago. Let's try to use more
standardized and widely-available technologies if possible.

 Read the spec and you will see that it has a lot to do with XMPP: Namely
 (quoted from my draft):
 
 1. DIME will rectify the absence of true In-Band Bytestreams, as it
 defines methods to send multiple payloads in a atomical message. Each
 payload in the message can reference other payloads in the message.
 
 XMPP needs, in my opinion, a way to negotiate real in-band bytestreams.

What are the problems with XEP-0047?

 Base64 seems like a cop-out to me, it really does.
 
 2. Furthermore compression methods used by servers (which tend to be
 fast instead of -small-effective) will, at best, return the data to near
 it's original length. If the data is presented to these algorithms in
 its original state they may be able to compress it even further.
 
 Not everyone has a T3 connection at home, some of us live in South
 Africa, and well, bandwidth here is rather expensive: and so is a static
 IP (yes, we differentiate between them here, we /actually/ have
 non-static ones too). When you have to weigh up the value of 1MB, you
 will know.
 
 3. Ultimately this protocol will smooth out the issues plaguing Jabber
 regarding file sharing.
 
 This was a hot topic on JDev not too long ago! Demand, supply. If the
 developers are demanding it, I ASSURE you, the users will be fast
 following (faster than any cheetah metaphores ;)
 
 4. Almost all the existing XEPs should be able to derive some further
 benefit from this extension (especially Jingle and SI).
 
 That is a bit fanciful and ambitious, I admit. Add XHTML to that list,
 and well there you go, not even nearly all, but 3, which is a start.
 
 (Just coming in on that regard, SOAP has nothing to do with XMPP, but
 neither did SASL (at the start), or XHTML... And there is SOAP over XMPP
 now)
 
 And, well, *both* are XML and *both* suffer from the fact that you can't
 package binary data reliably and efficiently in an XML document. 

This is very true.

Jabber was not designed for binary transfer. This is a strength for the
core use cases, but a weakness for things like file transfer and file
sharing and media sessions, as we have painfully discovered time and again.

However, personally I'd say we don't want to use an abandoned technology
to solve the problem.

Another approach would be to define a BEEP transport:

http://www.beepcore.org/

Yes, BEEP is not widely implemented either, but I at least there are
RFCs (and I am aware of a new push for wider implementation).

Maybe it would help if I finished writing up some results of the file
transfer discussions at the recent XMPP DevCon?

 MTOM
 wouldn't exist if it wasn't a real problem. It would have ended with DIME.

But why was DIME abandoned? (Not that I like MTOM, mind you!)

 A lot of protocols do it, hell, even your cellphone does something
 similar (which is why you can call someone and surf over GPRS/3G/HSDPA
 at the same time).
 
 In regard to Dave's email, about the negative compression etc. very
 true, didn't think of that. Nice, constructive criticism. Dave: the very
 reason I thought of it was because a P2P connection isn't always
 possible, as in my case (I don't need it, but the awareness is there). I
 was hoping to use the server to host the Peer-To-Host-To-Peer connection
 instead of some 3rd 

Re: [Standards] file transfer (was: Re: [LONG] Jeez, Sorry)

2007-08-27 Thread Hiếu Hoàng
On 8/28/07, Peter Saint-Andre [EMAIL PROTECTED] wrote:
[snip]

 That appears to be a sensible line of thinking. However, it seems to me
 that the wide availability of HTTP servers (which could be bundled with
 your favorite XMPP server) makes an HTTP approach even more appealing.

 Part of my question is: do we really need to stream files? Think about
 the difference between media streaming and media downloading. The use
 cases in which true streaming is needed seem few. Even things like
 podcasting are not truly casted in real time -- they are uploaded to an
 HTTP server and then downloaded, to be listened to on demand.

 Similarly, it seems to me that if I want to send you a file, I could
 upload it to an HTTP (associated with my XMPP server), get a URL for
 that file, then send you the URL. If I don't have an HTTP server at my
 disposal, I could fall back to in-band bytestreams. But let's face it,
 the HTTP community has file-upload and file-download down cold. Why not
 leverage all that? We don't need to do *everything* via XMPP! Do we
 really need streaming here, or does it just seem cool?

[huge snip]

 Again I think the fundamental question is: do we *really* need to stream
 things, or can we use sender-upload and receiver-download for many or
 most use cases, with in-band bytestreams as the fallback?

 Peter

Being a only newbie user, with expensive bandwidth, I like this path.
Currently, I know of disk.jabbim.cz service which provides HTTP
hosting for files, say http://disk.jabbim.cz/[EMAIL PROTECTED]/. That is
really convenient for me, either I can tell it to send the file to
some JID, or I can copy the URL of the file to post independently.
That's good (except for the Czechy messages, maybe someone can hack
xml:lang support into it).

The other booster is private storage, sharing the same hosting space
but the files don't have HTTP access. People can't just build up the
URLs and download the files from everywhere, abusing the hosting
service.

I know that this is using SI for sending between JIDs, but it provides
a nice alternative for people with expensive Internet access.

Hiếu