112

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.

Mr. Boy
  • 52,885
  • 84
  • 282
  • 517

7 Answers7

54

This is probably way too basic, but at least it's technical: https://web.archive.org/web/20170916193014/http://www.adarshr.com/fun-with-xmpp-and-google-talk and the second part, https://web.archive.org/web/20171005104211/http://www.adarshr.com:80/fun-with-xmpp-and-google-talk-part-2

It explains what stanzas are, what types are available and stuff.

GDR
  • 2,173
  • 1
  • 19
  • 25
  • We simplified the process of creation chat app's under iOS using cocoa pods, you can learn more or download demo code here https://github.com/processone/demo-xmpp-ios – Loegic Jul 24 '15 at 16:36
  • My mirror is still up, not sure why it got removed from my answer... https://f.gdr.name/xmpp-tutorial.tar.gz – GDR Feb 19 '18 at 09:19
37

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, ...).

towe75
  • 1,420
  • 10
  • 9
  • 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. – towe75 Jun 22 '10 at 13:46
  • 1
    also, jack moffit's Professional XMPP Programming with JavaScript and jQuery book is excellent, better than the one mentioned above (O'Reilly). http://professionalxmpp.com/ –  Nov 22 '13 at 15:41
  • Be ready to see tons of typos and mistakes while reading XMPP The Definivie Guide (mostly in sample code) – kas-kad Oct 15 '15 at 18:29
  • XMPP The Definitive Guide is great and detailed, perhaps out of date a bit, but gave a good start myself. – Jerry Nov 22 '16 at 05:53
17

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 latest RFCs (6120 and 6121) which clarify some of the grey areas in the originals.

E.g. you mention wanting to know the definition of a stanza, it's explained (with examples) in 6120 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 for the next drafts of the specifications.

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
  • 7,749
  • 1
  • 26
  • 33
  • 1
    Goodness, RFC 6120 alone is over 200 pages long. And I thought that they were supposed to keep it **simple**.......... – Pacerier Nov 24 '14 at 12:01
  • 1
    Simplicity does not automatically imply a short specification. I for myself find XMPP pretty simple. Especially the modularity of XMPP i.e. the split between XMPP Core, XMPP IM and the XEPs make the protocol for me appealing. – Flow Feb 03 '15 at 16:16
  • 1
    As others have pointed out, RFCs are the best friends when learning about XMPP. I was learning XMPP myself a few years back and have compiled bits and bits of info into begineer targeted tutorials. [A friendly intro to XMPP](http://www.blikoontech.com/xmpp/xmpp-a-soft-friendly-introduction) and [Roster and Presence](http://www.blikoontech.com/tutorials/xmpp-made-simple-roster-and-presence-explained) should be a good start. – musimbate Mar 14 '18 at 11:52
8

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
  • 1,086
  • 1
  • 10
  • 19
  • 2
    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. – Mr. Boy Jun 22 '10 at 11:46
  • 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.html Perhaps this can be a entry to the XMPP world :) – FloE Jun 22 '10 at 11:52
  • 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. – Mr. Boy Jun 22 '10 at 12:12
  • 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 Jun 22 '10 at 12:23
  • @FloE, The RFC you quoted is outdated. Besides reading that RFC is not enough, there are tons of interrelated RFCs to read for XMPP. – Pacerier Nov 24 '14 at 11:35
3

This might be an old question, but I just wanted to keep the process I used in order to learn XMPP.

A few years ago, a few friends of mine and I were learning about how to leverage XMPP, and understanding how it fits into larger piece is quite a tedious task. I highly recommend starting off by reading the wikipedia page of XMPP:

http://en.wikipedia.org/wiki/XMPP

You'll be surprised how many people aren't able to answer questions about XMPP which are the most fundamental.

I also highly recommend reading this article:

http://www.infoworld.com/article/2682116/application-development/xmpp-rises-to-face-simple-standard.html

It'll give you a sense of the motivation behind XMPP, it's history, and it's protocols that used to be on par with it.

From there, it'll be best to read the sources of the wikipedia page to give a more indept understanding of any features you might be interested in with XMPP.

Tobias
  • 1,759
  • 2
  • 20
  • 46
user3761301
  • 127
  • 6
1

Use the xmpp asmack library from

http://beem-project.com/projects/beem/files download asmack-android-7-beem-jingle.jar

and documentation of

http://www.igniterealtime.org/downloads/index.jsp

Hope it helps others like it helped me

Sheraz Ahmad Khilji
  • 8,072
  • 8
  • 46
  • 83
  • Why use Beem instead of the original ASmack page? – Pacerier Nov 24 '14 at 11:34
  • 1
    @Pacerier Last time i checked asmack was not stable and it wasn't regularly being updated so i instead i used the beem version of asmack that was being updated regularly and it also seemed more stable. – Sheraz Ahmad Khilji Nov 24 '14 at 11:41
1

Install openfire on server side and use qsmack on android side.

Jaspreet Chhabra
  • 1,443
  • 15
  • 23