Sunday, July 10, 2011

Jingle FT - the million dollar protocol

I was speaking with Florian, one of the board members of XSF, and showed him my pattern about HTTP-based filetransfer in IM clients, just as done by Beejive or Meebo.

As far as I remember, the filetransfer argument - namely: it doesn't work in XMPP with 5 parallel standards - was settled down by requiring everyone to implement the most complex one: Jingle File Transfer.

It's like saying we don't need filetransfer to be implemented at all.

Jingle is a such complex protocol, that most of the client developers won't even try to implement it. It's just huge. Even Google didn't really succeed with their own implementation (remember the Cricket:: namespace??) and we don't speak about server-side requirements yet.

The XMPP community is constantly ignoring the fact that we're living in - albeit perhaps the end of - the web age. XML was proven to be inefficient, no matter how you compress it, it's just isn't par with JSON or other formats. Pull parsing technique requires special parsers to be written for XMPP, meaning loss of reuse (although they give the stanzas to normal parsers afterwards), Nokia didn't take XMPP in its production phones for efficiency reasons and all the social networks - facebook, hyves, meebo, gmail - implement their own client2httpd solution instead of the inefficient BOSH.

You can joke about it, but the reality is: XMPP is likely to be superseeded sooner or later.


stpeter said...

Every technology is likely to be superseded sooner or later. It's just a matter of time.

Waqas said...

Hi. I've been interested in XMPP, but never read the jingle file transfer spec.

I skimmed through it just now, and... is it really that complicated? I mean I see the big blobs of XML in the examples, but effectively what it's doing is:

1. ClientA sends a list of transfer mechanisms it supports to ClientB.
2. ClientB chooses one, and lets ClientA know.
3. ClientA indicates all is well.
4. The transfer happens.

I guess I don't see the complexity. The main complex part seems to be multiple transfer mechanisms being allowed. That doesn't seem like something you can avoid, as there simply are multiple mechanisms, some of which work for some client setups, while others for others.

I asked around, and apparently Pidgin, Gajim and other clients have jingle file transfer working in dev branches. Google are also using Jingle as it happens :)

XMPP vs. JSON is a great flamewar worthy topic. I'd love to discuss it if you wish :P

I quite like JSON. I actually attempted to write a XMPP XML<->JSON transformation. The thing which makes that hard is the lack of anything like namespaces in JSON. When you try to allow third parties to extend the protocol in arbitrary ways, and have those extensions inter-operate, the JSON gets uglier than the original XML.

JSON works perfectly when you don't allow arbitrary extensions by third parties, which is why it works nicely in systems fully controlled by a single party.

Ross said...

INteresting point of view, I guess that with technology you can never rest, it is always evolving.
viagra online

Anonymous said...

This is a very good idea in order to do better transfers, mow I can do all transfers referred to top pills to my clients faster.

Cathlene said...

Another interesting work you have done in here, I was really impressed the ideas you have. PMP Washington DC

moonpharmacys said...

You made some good points .I did a little research buy keflex on the topic and found that most people agree with your blog. Thanks.

rony-world said...

Looks like an ideal blog page. I can tell the fact each person has participated. truly. This specific posting is really convenient together with convenient. I may be utilising this so that you can post my websites. proventil hfa Appreciate the summary along with links to web site too.

Richard Feynman said...

Extensible Messaging and Presence Protocol (XMPP) is a communications protocol for message-oriented middleware based on XML (Extensible Markup Language). The protocol was originally named Jabber, and was developed by the Jabber open-source community in 1999 for near-real-time, instant messaging (IM), presence information, and contact list maintenance. Designed to be extensible, the protocol has also been used for publish-subscribe systems; signalling for VoIP, video, and file transfer; gaming; Internet of Things applications such as the smart grid; and Social networking services.


cp1029 said...

Items 1 - 11 of 11 – Buy Micro sd memory cards at, visit to shop online for Technology.