Slashdot Mirror


Is XMPP the 'Next Big Thing'

Open Standard Lover writes "XMPP (eXtensible Messaging and Presence Protocol) has been getting a lot of attention during the last month and it seems that the protocol is finally taking off as a general purpose glue to build distributed web applications. It has been covered that AOL was experimenting with an XMPP gateway for its instant messaging platform. XMPP has been designed since the beginning as an open technology for generalized XML routing. However, the idea of an XMPP application server is taking shape and getting supporters. A recent example shows that ejabberd XMPP server can be used to develop a distributed Twitter-like system."

42 of 162 comments (clear)

  1. buzzwords are my favorite by User+956 · · Score: 5, Funny

    XMPP has been designed since the beginning as an open technology for generalized XML routing. However, the idea of an XMPP application server is taking shape and getting supporters. A recent example shows that ejabberd XMPP server can be used to develop a distributed Twitter-like system.

    Minus two points for not managing to cram the phrases "AJAX" or "Web 2.0" into this writeup.

    --
    The theory of relativity doesn't work right in Arkansas.
    1. Re:buzzwords are my favorite by samael · · Score: 3, Insightful

      Except that XMPP isn't a web technology.

    2. Re:buzzwords are my favorite by Rogerborg · · Score: 5, Funny

      Wash your mouth out with SOAP. Everything is a Web 2.0 technology.

      --
      If you were blocking sigs, you wouldn't have to read this.
    3. Re:buzzwords are my favorite by samael · · Score: 2, Insightful

      A twitter-like system could be built on top of xmpp. In much the same way that a gmail-like system can be built on top of SMTP/POP. That doesn't mean that SMTP/POP are web-based.

    4. Re:buzzwords are my favorite by TheRaven64 · · Score: 4, Interesting

      Why not? The web is basically a way of sending XML to users. XMPP is a way of sending XML to users. AJAX is an ugly hack. It's fine for sending data from the client to the server, but to get updates from the server you need to keep polling. With XMPP, the server can push XML fragments to the client whenever it wants and some client-side JavaScript could then process them into the DOM. There was a proof of concept a few years ago (before AJAX was a buzzword) where someone integrated an XMPP client into a web browser and used it to deliver updates to the page.

      --
      I am TheRaven on Soylent News
    5. Re:buzzwords are my favorite by erlehmann · · Score: 2, Funny

      web == world wide web == you fail (in not-so-epic proportions)

    6. Re:buzzwords are my favorite by Angostura · · Score: 2, Insightful

      Nope, mail hasn't become part of the Web, some mail systems have Web interfaces.

    7. Re:buzzwords are my favorite by Niten · · Score: 3, Informative

      Minus two points for not managing to cram the phrases "AJAX" or "Web 2.0" into this writeup.

      Huh?

      • AJAX = Any technique for combining the XmlHTTPRequest object (or sometimes just an iframe) with JavaScript and XML methodologies to create a more dynamic web page = buzzword
      • Web 2.0 = Anything with a smooth logo, whose name is missing some vowels, and that looks like it might possibly be using AJAX methodologies = buzzword
      • XMPP = A very specific set of protocols, currently being formalized by the IETF, that form the basis for an extensible messaging or presence system and happen to be based on XML = not a buzzword
    8. Re:buzzwords are my favorite by jwilcox154 · · Score: 2, Funny

      A twitter-like system could be built on top of xmpp. In much the same way that a gmail-like system can be built on top of SMTP/POP. That doesn't mean that SMTP/POP are web-based. I don't know if a twitter-like system would be a wise course of action for an instant messenger system let alone an instant messenger system using XMPP. Do you know what problems could arise from this? Text such as M$, Windoze, Micro$oft, or anything dealing with anti-Microsoft topics would pop-up in your message. This change could occur when you type in MS, Microsoft, Windows, or anything dealing with Microsoft; or just occur spontaneously. ;)

  2. Field test of XMPP based system by Sique · · Score: 3, Informative

    My next project is a field test of a XMPP based Single-Number-Service-System for Siemens phone system, the OpenScape 3.0. Seems that there is really some XMPP around right now.

    --
    .sig: Sique *sigh*
  3. Just what we (didn't) need !! by Anonymous Coward · · Score: 2, Insightful

    E-Mail wrapped in an XML overcoat.

    Is there NOTHING sacred that some lemon won't wrap in XML ???

    Oh, no, wait ... I must remember to file my patent application for XMJPG ... a JPG file wrapped in XML for instant dissemination of boring holiday snaps to people who I became "friends" with by virtue of the fact they happened to be in the same universe as me and also owned a PC.

    Brilliant !!

    1. Re:Just what we (didn't) need !! by Enleth · · Score: 4, Informative

      Have you ever actually SEEN this protocol in action, its specifications, functionality and security features? This is one of the few cases where XML is actually a proper, well-implemented technology suitable for the job. I've been using Jabber as my IM of choice for a few years already, and XMPP as a communication platform for a few non-IM projects and all I can say is that the people involved in its design got it right and created a really flexible, adaptable and secure technology.

      Yeah, I know, this is Slashdot, where people like to spew completely uninformed pseudo-opinions, but this one is just too obvious. Well, happy IMing on unencrypted, stone-age, propertiary networks that force-feed you with ads and censor your messages, if that's what you want.

      --
      This is Slashdot. Common sense is futile. You will be modded down.
    2. Re:Just what we (didn't) need !! by Sancho · · Score: 2, Insightful

      Well, happy IMing on unencrypted, stone-age, propertiary networks that force-feed you with ads and censor your messages, if that's what you want. XML doesn't solve any of these problems (and they're not all problems.) There's no technical reason that any given messaging service couldn't use SSL, and XMPP is extensible, and an implementation of it can be made proprietary enough to require a client that will force-feed you ads. Any network can censor messages, assuming they can read them.

      Your post is overrated.

      Yeah, I know, this is Slashdot, where people like to spew completely uninformed pseudo-opinions, but this one is just too obvious. Oh, sorry, I guess you covered all of that.
  4. Am I too late... by abigsmurf · · Score: 4, Interesting

    To try to standardise how this is pronounced? eg. "wizzywig", "scuzzy" etc.

    'Zemp' would be a nice easy way of saying this.

    1. Re:Am I too late... by Anonymous Coward · · Score: 5, Funny

      "ex-em-pee-pee"?

    2. Re:Am I too late... by Bogtha · · Score: 4, Informative

      A lot of people pronounce it "Jabber". The name "XMPP" arose when they were moving it through the IETF standardisation process.

      --
      Bogtha Bogtha Bogtha
    3. Re:Am I too late... by TheRaven64 · · Score: 4, Informative

      Speaking as someone whose frustrated with having to implement two code paths in a Jabber client - one for the standard and one for the compatibility with Pidgin - I'd be very happy for Pidgin users to stop connecting to the XMPP network.

      --
      I am TheRaven on Soylent News
    4. Re:Am I too late... by mhall119 · · Score: 5, Insightful

      Wouldn't it be easier to just make the fix in Pidgin and submit a patch?

      --
      http://www.mhall119.com
    5. Re:Am I too late... by mhall119 · · Score: 3, Interesting

      Yeah, I'm not sure why it was modded funny or overrated.

      If the guy can write an XMPP client, and knows exactly what is wrong with Pidgin's implementation in order to "fix" his client to support it, then he should be more than capable of providing a fix to Pidgin's code, so that he doesn't have to keep fixing his code, and the all of us Pidgin users can benefit as well.

      --
      http://www.mhall119.com
    6. Re:Am I too late... by AikonMGB · · Score: 2

      What exactly is the problem with Pidgin's XMPP/Jabber support? I use Pidgin for my MSN, AIM, and GTalk accounts.. and all three of them seem to work identically and without issue O_o

      In case it didn't come across clearly, I actually am interested in knowing what it does so poorly with Jabber, since as an end-user I really can't say that I see what the issue is =(

      Aikon-

  5. XMPP as a silver bullet? by webword · · Score: 4, Interesting

    One thing often overlooked by people is that is kills vendor lock. There are several government agencies which use a proprietary messenging system for instant messenging. Once you introduce true XMPP-compliant products, this kills the stranglehold that some of these vendors have. I'm sure this is true outside the government too.

    1. Re:XMPP as a silver bullet? by rindeee · · Score: 4, Informative

      Bzzzt...wrong. All IM in Gov/DoD is IRC based but moving to Jabber. This is public knowledge (not even U/FOUO). Lot's of commercial development going on around this if you Google around a bit. Some really cool stuff in the pipeline, especially where XMPP is concerned.

    2. Re:XMPP as a silver bullet? by Tablizer · · Score: 2, Funny

      All IM in Gov/DoD is IRC based but moving to Jabber. This is public knowledge (not even U/FOUO).

      Aha! So the gov't *is* hiding UFO's in secret hangers. And do something about that stuttering problem of yours.

  6. Performance by ronark · · Score: 3, Interesting

    I poked around their web site and could not find anything about the performance of the protocol. We do a lot of XML based communications at work and even for simple messaging, we find that there is definitely a drop off in speed compared to less verbose techniques. Not just in terms of transmission speed, but a lot of time is spent in the XML parsers. Perhaps this is a by-product of using the XML classes in .NET, but that's the technology we're stuck with. If anyone has some simple benchmarks or tests of XMPP, that would be interesting to see.

    1. Re:Performance by mremond · · Score: 3, Informative

      Actually, ejabberd is probably one of the highest performing XMPP server. It can supports tens of thousands of simultaneous connections on a single node and can work in a cluster. That's for a single domain, but with distribution as described in the protocol, each web site is his own domain. As you see, the scalability is handled. And on the raw message performance, it can handle hundreds if not thousands of messages per second in a cluster.

      --
      Mickael Remond http://www.process-one.net/
    2. Re:Performance by rdradar · · Score: 2, Insightful

      XML definitely has lots of overhead and not needed bytes. However, it is easily expandable, easily readable (by human too) and can support lots of different kind of needs. Because XMPP is meant to be the universal IM protocol, it needs to be easily expandable. Normal, byte based protocols are harder to expand for all kinds of needs and you have to spend more time learning them, all individually.

  7. A brief explanation by samael · · Score: 3, Informative

    XMPP is what Jabber is based on. Jabber, for those that don't know, is a chat protocol. It's used by Google Chat, Livejournal Chat, and vast numbers of other chat systems - all of which are interoperable, because built in to the underlying system is the idea of message passing from server to server.

    If someone connected to a gmail jabber server sends a message to andrewducker@livejournal.com then google chat automatically connects to the livejournal jabber server and passes the message over.

    You can see how this could be extended to allow federations of application servers to communicate. Heck, you could reimplement email over this without massive difficulty.

    1. Re:A brief explanation by vga_init · · Score: 3, Interesting

      Heck, you could reimplement email over this without massive difficulty.

      In reality I think it was one of the first things they implemented in Jabber. A lot of clients, especially the hardcore jabber clients, have different messaging modes: one mode composes a single message, another mode opens up a little chatbox. If you examine the former, you'll find that it's exactly like e-mail, although really it's just a jabber message. Everybody ends up using the chatbox because that's what jabber is for, and many popular clients (eg Pidgin) have only that.

      In terms of server and protocol, in my opinion Jabber is fully able to do e-mail. In fact, I'm sure Jabber servers already have e-mail gateways. You just need a client that operates in a manner that implements e-mail as we are used to; for example, most clients just pop up offline messages as soon as you connect, or mark them on your roster instead of presenting you with a stored list of messages that you can manipulate mailbox style.

    2. Re:A brief explanation by hitmark · · Score: 2, Interesting

      hell, toss in some kind of sms gateway and things really start to be interesting.

      only thing about using xmpp as a mail "replacement", can it do attachments?

      no, im not talking about file transfers, im talking about attaching the file to the xmpp message and have it be stored on the server if the recipient is offline at the moment.

      thats the one strong suit of mail vs sms or im right now, that you can fire and forget a file rather then having to watch for a person being available to accept it.

      still, xmpp will not take of in europe unless microsoft gets on board, as the msn/live messenger seems to have a strong posision here. and thats a cold day in hell scenario.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
    3. Re:A brief explanation by wertigon · · Score: 2, Informative

      Actually... Yes you can. There's this newfangled thing called the <data> element. But, it got pushed into a XEP like two months ago, so client support is rather limited, and it's only good for 8k for now... :(

      If people starts using this much however, I can't see why the XMPP server wouldn't be able to store the file temporarily and then push it once the user is online. But, I think this is better for an xmpp/http hybrid.

      --
      systemd is not an init system. It's a GNU replacement.
  8. WTF? by R2.0 · · Score: 2, Interesting

    "that ejabberd XMPP server can be used to develop a distributed Twitter-like system."

    What the hell does that mean?

    I don't know whether to apply the "alphabetsoup" tag or the "stopturningnounsintoverbs" tag.

    --
    "As God is my witness, I thought turkeys could fly." A. Carlson
  9. New Here by Chrisq · · Score: 3, Funny

    You should never let people know hen you don't understand an abbreviation. To impress the geeks you should express an opinon even if you don't understand what the hell TFA is going on about. Examples

    Could an ejabbered XMMP server really be said to be Twitter-like?

    I don't think that Twitter-like systems are the way to go here.

    That's really cool, we could really use a Twitter-like enjabered XMMP server here. It will revolutionise computing!

  10. Thanks Google by tmalone · · Score: 5, Insightful

    Say what you will about Google and privacy concerns, but this is one case of Google doing something good. If they hadn't used Jabber/XMPP for Google Chat, I doubt that we would be seeing this level of interest from others. Just about everybody that I chat with uses Google Chat now, and so, for the first time they all use Jabber capable clients. This is a very good thing. If Google goes out of business, or just becomes unpopular, the infrastructure will now be there to somewhat effortlessly transition to a new dominant IM system that is based on open standards, instead of going back to the days of MSN, AOL, Yahoo, and ICQ, all fighting each other and their users.

    1. Re:Thanks Google by rukidding · · Score: 2, Interesting

      Google has also included an XMPP API for developers of Android. They are also suggesting its use. http://code.google.com/android/toolbox/google-apis.html/

      --
      ...
  11. PFTLOGCWCUWMUA by Skippyboy · · Score: 3, Funny

    Please, for the love of god, can we come up with more useless acronyms?
    Ugh!

  12. XMPP is a PITA by MasterC · · Score: 3, Interesting

    Perhaps it is just the library I've used to develop an XMPP client, but I found implementing a client a complete PITA. Most specifically I couldn't find *anything* that simply stated you have to do X, Y, and Z to "do" XMPP. It required a lot of trial-and-error (lots of XMPP packet dumping) with another XMPP client to "subscribe" to someone else (aka get on their buddy list), to notify everyone you're online, and to send messages. All of the RFCs and JEPs are neat if you know what you're doing, but otherwise it just confuses the hell out of you trying to figure out exactly what it takes to make even the most basic client.

    XMPP also requires you to keep a fair amount of state information. Stuff I seemingly would think should be kept by the server. I suppose by making the server really dumb (basically a router) you really put the eXtensible in XMPP but at the cost of a more complex client.

    On its surface XMPP looks great: an open-source IM protocol!! Once you, the newb, get into it it gets really ugly.

    Then again, maybe I made a poor choice in a python package or I just happened to not find that key page with google that basically explains my problem away (and that's all it is is acclimation, it's not terribly difficult once you "get it"). Not even the wikipedia page explains inner-working details of XMPP. And FWIW, I was *trying* to do what this story was saying XMPP is going to be so great for: server glue for a distributed web-based application. Where I sit now with what [little] I know: I completely disagree until someone wraps it all up into a super-easy library (which shouldn't be too hard).

    --
    :wq
    1. Re:XMPP is a PITA by Enleth · · Score: 5, Informative

      That's just this library. For example, the Smack API for Java is literally five lines of actual code to connect, announce the presence, load the roster and send a message. PyXMPP is quite low-level for a Python network library. Try XMPPy, much easier to work with if you need Python.

      --
      This is Slashdot. Common sense is futile. You will be modded down.
    2. Re:XMPP is a PITA by AceJohnny · · Score: 2, Informative

      Didn't understand how to use the library? The problem is, there are a ton of XMPP libraries out there for every language (the one you used is for javascript) and there must be an unwritten agreement that it's no use for each library to re-explain the workings of XMPP...

      The best way, I'm afraid, is to read the RFCs (mostly 3920 and 3921. There are updated, clearer drafts, 3920bis and 3921bis, a link away from that page) and XEPs (XMPP Extension Proposal). There's also a book, but I heard that it's a bit outdated.

      --
      Misleading titles? Inflammatory blurbs? Keep in mind that Slashdot is a tabloid.
    3. Re:XMPP is a PITA by Jerf · · Score: 2, Informative
      There are a lot of very crappy (IMHO) libraries that do nothing but wrap the XML and present it to you in some form, leaving it entirely up to you to do, well, everything else.

      If you are enough of a programmer to deal with Jabber, which means being comfortable with XML, this is by far the easiest bit of working with Jabber. All the tricky bits like connecting and stuff are the harder bits worth writing a library for.

      Look for a library that handles:
      • Connecting to a server, with encryption (SSL or STARTTLS upgrade), with just the JID, password, and an optional hostname/ip override
      • Some decent story about how to create an account if login fails
      • Callbacks for message and presence that A: Give you the relevant information about the presence packets and messages in a nice format but also B: gives you direct access to the full XML stanza in case you want to pull other stuff out of it. (In fact, you should always have the XML in some parsed format.)
      • The ability to register callbacks for IQ stuff so that you aren't implementing an event loop yourself. (Bonus points if it integrates with the event loop of your GUI toolkit.) Closures in your language are awesome here.
      • Some code in the library to work with rosters.
      • Some way to extend the library in a principled manner to support other XMPP functionality, since no library is going to have everything.
      That's really a bare minimum, IMHO.

      Libraries that just give me parsed XML hunks piss me off, but unfortunately this seems to be the standard definition of "an XMPP library". Connecting to a known account and sending a message to a known JID ought to be a two-four line task at most.
    4. Re:XMPP is a PITA by Just+Some+Guy · · Score: 2, Informative

      We use jabber.py. It hasn't changed in years, but our needs are pretty simple and it meets all of them easily. For example

      import jabber

      node = jabber.Message()
      node.setSubject('Getting hungry')
      node.setBody('Hi there. Lunch?')

      server = jabber.Client('ourserver.example.com')
      server.connect()
      server.auth('me', 'mypassword', 'Python Jabber client')

      for dest in recipients: node.setTo(dest); server.send(node)
      server.disconnect()

      Honestly, I don't know how you could make that a whole lot simpler.

      --
      Dewey, what part of this looks like authorities should be involved?
    5. Re:XMPP is a PITA by MasterC · · Score: 2, Interesting

      Honestly, I don't know how you could make that a whole lot simpler.
      Yeah, that's brilliantly simple. Except when you have no clue what you're doing.

      Look at the documentation provided by jabberpy. It's computer-generated pydoc with pseudo code on making a simple client. Did they have time to write an entire jabber library but couldn't taken the 45 seconds you did to write actual code instead of pseudo code?

      Now when you take your bare example and try to receive messages then your simplicity isn't there any more. Thrown in presence and rosters and your "it's that easy" argument goes out the window for someone whose only resource with "the answers" is the RFCs themselves.

      After all, if trying to do server glue (as the story summary promotes) then that necessitates handling reception of messages, presences, and the other stuff that comes with it. I can't even remember how long it took me to realize I was getting disconnected from the server for idle timeout and then finding a suitable means to "ping" the server.

      None of this is explained anywhere in anything resembling succinctness. Even the library you promote doesn't have it (if it does it's not in an obvious location). Like I said in another reply: when time is money the utility is much more important. If XMPP is "right around the corner" for mass-adoption then I must be using the wrong search engine because I can't find any GOOD XMPP documentation for those who want to use it and not write a dissertation on it.
      --
      :wq
  13. Let's hope not by VokinLoksar · · Score: 2, Interesting

    I wrote a php xmpp client and server a few months back. In my humble opinion it is a poorly-designed protocol.

    For one thing, it is an example of how NOT to use namespaces in XML. Many elements are needlessly separated out, causing a lot of confusion and problems for simple xml parsers. Namespaces do not solve the problem of name conflicts, as the xmpp site still has a registry of namespace names. Separating out extensions - maybe, but the whole point of namespaces is to avoid conflicts when two _disjoint_ entities are working with the same schema. Here we have a central authority on the protocol trying to partition itself. This makes no sense to me. Even if you want to separate extensions from the core, there is still a better way to do it and keep everything simple and elegant - two things xmpp is not.

    The protocol is bloated. Again - my opinion. But compared to something like XML-RPC (in terms of syntax and structure), XMPP feels like everything was an afterthought that didn't fully fit together with the original design. The separation between presence, iq, and message stanzas feels extremely awkward and arbitrary to me. Why not have a single stanza, with an attribute that defines its type? Get rid of namespaces, and have a registry of node types I you wish. Think of how much cleaner the protocol would be.

    Likewise, this protocol seems like it was designed for humans - having a computer use it doesn't seem to be on the agenda. This comes out in the fact that no abbreviations are used to try and make XML data a bit smaller in size. Why would you design a protocol for use in real-time and keep things stanzas? Yes, you can use compression, but not all clients and servers support it. Think of how much bandwidth is wasted transporting useless information between computers. If I was designing the protocol I'd try and shorten all of the most commonly-used elements - instead of . Put computers and resource limitations before human convenience. You get rid of 6 additional bytes from the message stanza and processing is also faster. You may think I'm just going on about nothing here, that it doesn't make any real difference, but consider what a change like that would do to servers processing several thousand message stanzas every second.

    On the same topic of being designed for humans, an xmpp session (from start to end) looks like a perfectly valid xml document. You have a root element (which is closed at the end), and stanzas in the middle. Again, this is appealing for a human, but it makes code very ugly. Why in the world would you design it this way? Why should I have some special code to deal with an opening element that is never complete till the session is over? I already have an xml parser that deals with complete xml structures, and a piece of code that waits until a full stanza is received before processing it. Why not make it easy FOR COMPUTERS to deal with, and allow me to use that code for ALL xmpp communications. Hell, make each stanza a separate document. This is again a case where the designers thought "what would a human find most pleasing," and completely ignored the needless complexity in implementation added by their decisions.

    I could go on and on describing problems with xmpp, but you have a rough idea here. Personally, I would hate for this protocol to become the standard for IM communications. It is bloated, needlessly complicated, and very awkward to use and implement. Sadly, I think with Google's support it will become the standard, and sooner or later something else will come along with another protocol causing a continuation of the IM wars.