tags:

views:

312

answers:

3

I've been looking at some open-source XMPP servers, and am familiar with the official page http://xmpp.org/. But thus far I've not found anything in between "The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication" and a list of XEP specifications. For instance articles explaining the basics and terminology - stanzas, IQ, presence, etc, etc. Even the Wikipedia page misses this, unsurprisingly the open-source projects assume you know these things before you start digging into the code.

Is there a good, (semi-)official set of tutorials on this? Do I need to be looking for Jabber resources rather than XMPP?

Amongst other things, I'd hope to see diagrams for use-cases and flow, not just dry protocol text. I know books on XMPP exist, but generally anything in a book is available in some form online too.

+4  A: 

The RFCs (listed on the Wikipedia page) should be a quite good introduction to this topic.

For example: RFC3920: Extensible Messaging and Presence Protocol (XMPP): Core

FloE
I'd rather find something other than the raw protocol, those are written to be precise rather than friendly... but still knowing it covers the fundamentals _is_ useful.
John
So you are looking for a programmers tutorial to XMPP which doesn't drill down to the basics of the protocol? I experimented some time ago with the "XMPP Python API" (Google AP-Engine): http://code.google.com/appengine/docs/python/xmpp/overview.htmlPerhaps this can be a entry to the XMPP world :)
FloE
Sort of... but every technology I ever worked with you have the official spec as a reference, but read tutorials geared at learning the basics more quickly. Like DirectX or Spring or CSS or anything really.
John
I understand. The basic terminology you asked for is defined and described in the RFCs and on xmpp.com (and perhaps only there...). For a more practical introduction, there are dozen examples and tutorials to build your own Jabber client with different APIs in Java, Perl, Ruby, Python, ... on the web (f.e. the link in the previous comment).
FloE
+1  A: 

Here is what got me startet on XMPP Development:

  • A good book: XMPP The Definivie Guide
  • A mature Java API. I've chosen the Smack Library from Ignite Realtime and used the groovy language with a buch of small scripts to learn the basics.

Later i developed a plugin for the OpenFire XMPP Server. There are some tutorials and a forum on their site as well. I think that both the smack and the openfire api's are easy to learn.

If you are not into java: The book referes to the SkeekXMPP Python library and it uses it to create some examples (echo bot, ...).

tweber
Openfire is my setup of choice, actually, and Java.
John
Fine. I suggest you to take a look at the book. Since the API classes are mostly named after the xmpp concepts/stanzas, you'll have a good starting point once you know the basic terminology.
tweber
Is that a legal version of the book? I'd prefer to find free online resources but if I use a book I'd rather pay if I'm supposed to?
John
No idea about that ;-)I've got my book from A..z.n and the link above was the first hit at google, so i posted it to give you a hint...
tweber
+3  A: 

As others have said, the specifications are a good introduction. It's true that they are technical in nature, and worded to be precise - but they are really some of the best specifications I've seen for any protocol, especially the new drafts (3920bis and 3921bis) which clarify some of the grey areas in the original RFCs.

E.g. you mention wanting to know the definition of a stanza, it's explained (with examples) in 3920bis section 8.

If you have any feedback on how the specifications can be made clearer, then say so on the XMPP mailing list, where all feedback is considered (though actually 3920bis itself is close to finalization now).

If the specifications are really too much for you (I appreciate some people like more pictures than I do), do consider the book (whether in paper or digital form) - it's designed exactly as an easy introduction to both the core specifications and the most common extensions, and written by people who help develop and implement them.

MattJ