<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>El Tramo | Jabber</title>
  <subtitle>Remko Tronçon's Homepage</subtitle>
  <link href="http://el-tramo.be/blog/category/jabber/feed/" rel="self" type="application/rss+xml"/>
  <link href="http://el-tramo.be/"/>
  <updated>2011-12-30T17:00:29+01:00</updated>
  <id>http://el-tramo.be/</id>
  <author>
    <name>Remko Tronçon</name>
    <uri>http://el-tramo.be/about/</uri>
  </author>
  
  <entry>
    <title>“XMPP: The Definitive Guide” Code Examples</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/xmpp-tdg-code"/>
    <updated>2009-07-13T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/xmpp-tdg-code</id>
    <content type="html">Although the primary focus of &lt;a href=&quot;http://oreilly.com/catalog/9780596521264/&quot;&gt;&lt;em&gt;XMPP: The Definitive Guide&lt;/em&gt;&lt;/a&gt; is explaning the XMPP protocol and all its extensions through text and illustrations, we also included a few Python code examples to help people get started with implementing their own ideas. In fact, we devoted a whole chapter to building an XMPP application, starting out with a simple bot implementation, but gradually extending the application into a full server component. For people who want to try this out for themselves, we’re releasing the &lt;a href=&quot;/git/xmpp-tdg/snapshot/xmpp-tdg-master.zip&quot;&gt;source code of all code examples&lt;/a&gt;, including a &lt;a href=&quot;/git/xmpp-tdg/tree/code/EchoBot&quot;&gt;simple echo bot&lt;/a&gt;, and different variants of the &lt;a href=&quot;/git/xmpp-tdg/tree/code/CheshiR&quot;&gt;CheshiR microblogging platform XMPP interface&lt;/a&gt;.

&lt;!--more--&gt;

All examples are built using the lightweight &lt;a href=&quot;http://code.google.com/p/sleekxmpp/&quot;&gt;SleekXMPP&lt;/a&gt; Python XMPP library. In fact, SleekXMPP is so lightweight that we included a version in the source bundle, making it even easier to get started implementing your own bots and components.

Do bear in mind that these examples only serve illustrative purposes for the book, so don’t expect very robust code. Although making this code fail-safe is not really our primary goal (since that would involve a lot of code that would only distract the reader), we &lt;em&gt;do&lt;/em&gt; welcome bug reports or fixes.

The code examples are available as a &lt;a href=&quot;/git/xmpp-tdg/snapshot/xmpp-tdg-master.zip&quot;&gt;source package&lt;/a&gt;, or directly from the &lt;a href=&quot;/git/xmpp-tdg&quot;&gt;Git repository&lt;/a&gt; (mirrored on &lt;a href=&quot;http://github.com/remko/xmpp-tdg&quot;&gt;GitHub&lt;/a&gt;). We will soon put a link to the package on &lt;a href=&quot;http://oreilly.com/catalog/9780596521264/&quot;&gt;the book’s webpage&lt;/a&gt;.
</content>
  </entry>
  
  <entry>
    <title>Migrating from Openfire to Prosody</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/openfire-to-prosody-migration"/>
    <updated>2009-07-03T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/openfire-to-prosody-migration</id>
    <content type="html">Because &lt;a href=&quot;http://www.igniterealtime.org/projects/openfire/index.jsp&quot;&gt;Openfire&lt;/a&gt; has been hogging too much of my limited &lt;a href=&quot;http://el-tramo.be&quot;&gt;el-tramo.be&lt;/a&gt; server resources lately, and because I don’t need a beast of an XMPP server for only 2 users, I decided to replace it by the lightweight &lt;a href=&quot;http://prosody.im/&quot;&gt;Prosody&lt;/a&gt;. The migration went flawless, with the help of two tools: &lt;a href=&quot;http://www.kismith.co.uk/wordpress/index.php/2008/11/30/sleek-migrate/&quot;&gt;Sleek Migrate&lt;/a&gt;, and a &lt;a href=&quot;/git/xep227-to-prosody&quot;&gt;Prosody XEP-0227 Importer&lt;/a&gt;.

&lt;!--more--&gt;

First of all, I used Sleek Migrate to retrieve the roster (and other) data from the server, and store it in the standard &lt;a href=&quot;http://xmpp.org/extensions/xep-0227.html&quot;&gt;XEP-0227&lt;/a&gt; format. I extended the tool a bit such that it supports Openfire’s User Import/Export format, a format generated by an &lt;a href=&quot;http://www.igniterealtime.org/projects/openfire/plugins/userimportexport/readme.html&quot;&gt;Openfire plugin&lt;/a&gt; that is distributed with the server software by default. Using this format as input for Sleek Migrate avoids the need to create a user file manually. The changes I made to Sleek Migrate are currently available from &lt;a href=&quot;/git/sleekmigrate&quot;&gt;my Git repository&lt;/a&gt;, awaiting to be pushed to the main repository.

I then wrote a short script that populates the Prosody data dir with the server data from the XEP-0227 XML file. Currently, the script only generates roster and account data, but adding &lt;a href=&quot;http://xmpp.org/extensions/xep-0054.html&quot;&gt;vCard&lt;/a&gt; and &lt;a href=&quot;http://xmpp.org/extensions/xep-0049.html&quot;&gt;Private XML Storage&lt;/a&gt; (used amongst others to store &lt;a href=&quot;http://xmpp.org/extensions/attic/xep-0048-1.0.html&quot;&gt;MUC bookmarks&lt;/a&gt;) should not be very hard. Until Prosody creates a native XEP-0227 importer, you can get the script from &lt;a href=&quot;/git/xep227-to-prosody&quot;&gt;my Git repository&lt;/a&gt;.
</content>
  </entry>
  
  <entry>
    <title>XMPP 101 @ FOSDEM</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/xmpp-101-fosdem"/>
    <updated>2009-03-04T00:00:00+01:00</updated>
    <id>http://el-tramo.be/blog/xmpp-101-fosdem</id>
    <content type="html">&lt;p&gt;The slides of the &lt;em&gt;“XMPP 101”&lt;/em&gt; talk that &lt;a href=&quot;http://stpeter.im&quot;&gt;Peter&lt;/a&gt; and I gave at &lt;a href=&quot;http://fosdem.org&quot;&gt;FOSDEM&lt;/a&gt; are available below. This presentation gives a fast-paced introduction to XMPP, and is mostly based on &lt;a href=&quot;http://oreilly.com/catalog/9780596157197/&quot;&gt;“XMPP: The Definitive Guide”&lt;/a&gt;. If all goes well, we will be giving a more extended version of this talk as a tutorial at &lt;a href=&quot;http://en.oreilly.com/oscon2009&quot;&gt;OSCON&lt;/a&gt;.&lt;/p&gt;
&lt;!--more--&gt;
&lt;div style=&quot;width:425px;text-align:left&quot; id=&quot;__ss_1097174&quot;&gt;&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slideshare.net/swf/ssplayer2.swf?doc=xmpp101-key-090303164623-phpapp01&amp;rel=0&amp;stripped_title=xmpp-101&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://static.slideshare.net/swf/ssplayer2.swf?doc=xmpp101-key-090303164623-phpapp01&amp;rel=0&amp;stripped_title=xmpp-101&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;p style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;http://el-tramo.be/files/blog/xmpp-101-fosdem.pdf&quot;&gt;PDF&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>We have an animal</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/xmppbook-cover"/>
    <updated>2009-02-08T00:00:00+01:00</updated>
    <id>http://el-tramo.be/blog/xmppbook-cover</id>
    <content type="html">O’Reilly just sent us the cover for our &lt;a href=&quot;http://oreilly.com/catalog/9780596157197/&quot;&gt;upcoming XMPP Book&lt;/a&gt;, and it seems we got the world’s smallest ungulate: the &lt;a href=&quot;http://en.wikipedia.org/wiki/Kanchil&quot;&gt;lesser mouse-deer&lt;/a&gt;. I haven’t seen one in real life before, am not sure I ever want to, but still: great! Have a look below to see what the cover of the book will look like when it hits the stores in 2 months.

&lt;!--more--&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;aligncenter&quot; style=&quot;border: 1px solid grey;&quot; title=&quot;Cover of “XMPP: The Definitive Guide”&quot; src=&quot;http://el-tramo.be/files/blog/xmppbook-cover.png&quot; alt=&quot;&quot; width=&quot;350&quot; height=&quot;460&quot; /&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Final revision of the XMPP book submitted</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/xmppbook-final"/>
    <updated>2009-02-03T00:00:00+01:00</updated>
    <id>http://el-tramo.be/blog/xmppbook-final</id>
    <content type="html">After a few weeks of heavy labour and long nights, &lt;a href=&quot;http://stpeter.im&quot;&gt;Peter&lt;/a&gt;, &lt;a href=&quot;http://kismith.co.uk&quot;&gt;Kevin&lt;/a&gt;, and I just submitted the final revision of &lt;a href=&quot;http://oreilly.com/catalog/9780596157197/&quot;&gt;“XMPP: The Definitive Guide”&lt;/a&gt; to the folks at O’Reilly. All the feedback from our (thorough) reviewers has been processed, we added quite a few extra bits and clarifications (58 pages to be exact), polished the whole thing up, and went through the resulting manuscript with a fine toothed comb. We hope the people who will read this book will be as satisfied with the end result as we are. If all goes according to plan, the book should roll out of the presses in about 2 months. In the mean time, you can expect an update to the &lt;a href=&quot;http://oreilly.com/catalog/9780596157197/&quot;&gt;on-line rough cut version of the book&lt;/a&gt; in the next couple of days.
</content>
  </entry>
  
  <entry>
    <title>Rough cuts of XMPP book now available</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/xmppbook-roughcuts"/>
    <updated>2008-12-10T00:00:00+01:00</updated>
    <id>http://el-tramo.be/blog/xmppbook-roughcuts</id>
    <content type="html">While &lt;a href=&quot;http://kismith.co.uk&quot;&gt;Kevin&lt;/a&gt;, &lt;a href=&quot;http://stpeter.im&quot;&gt;Peter&lt;/a&gt;, and I are working very hard to finish the first draft of our &lt;a href=&quot;http://el-tramo.be/blog/xmppbook-intro&quot;&gt;upcoming book&lt;/a&gt; &lt;em&gt;‘XMPP: The Definitive Guide&lt;/em&gt;’, O’Reilly has recently released early versions of most of the chapters of the book as &lt;a href=&quot;http://oreilly.com/catalog/9780596157197/&quot;&gt;Rough Cuts&lt;/a&gt;. People interested in learning about XMPP &lt;em&gt;today&lt;/em&gt; can now get a preliminary version of the book, and get updates as the book progresses.
</content>
  </entry>
  
  <entry>
    <title>We're writing an XMPP book</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/xmppbook-intro"/>
    <updated>2008-08-21T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/xmppbook-intro</id>
    <content type="html">I'm excited to announce that &lt;a href=&quot;http://stpeter.im&quot;&gt;Peter&lt;/a&gt;, &lt;a href=&quot;http://kismith.co.uk&quot;&gt;Kevin&lt;/a&gt;, and I recently got the green light from &lt;a href=&quot;http://oreilly.com&quot;&gt;O'Reilly&lt;/a&gt; to start writing a book about Jabber/XMPP. The book will be targeted at a diverse public: on one hand, people who want to get acquainted with XMPP and will get an introduction and a general overview of XMPP, its workings, and its possibilities. On the other hand,  software engineers who want to integrate XMPP into their products will get a guide to implementing different use cases of XMPP through a series of different developer stories. The book is expected to be available in 2009, so start making some room on your bookshelf!
</content>
  </entry>
  
  <entry>
    <title>Introducing Greem</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/greem-intro"/>
    <updated>2007-10-14T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/greem-intro</id>
    <content type="html">After a short hiatus, I finally resumed work on &lt;a href=&quot;http://el-tramo.be/blog/greenphone-grant&quot;&gt;my new Jabber/XMPP client project&lt;/a&gt;, which I christened &lt;em&gt;`Greem'&lt;/em&gt;. The main goal of the project is to create a mobile Jabber/XMPP client for the &lt;a href=&quot;http://trolltech.com/products/qtopia&quot;&gt;Qtopia&lt;/a&gt; platform. The nice thing about Qtopia is that its target audience keeps on expanding: besides running on the GreenPhone (of which Trolltech was kind enough to provide me with one), Qtopia has recently been ported to the Neo 1973 (OpenMoko), and even &lt;a href=&quot;http://labs.trolltech.com/blogs/2007/03/28/were-porting-qt-4-to-windows-ce-and-windows-mobile/&quot;&gt;Windows CE and Windows Mobile&lt;/a&gt;. In this post, I briefly describe what the expectations and the goals are for Greem, and how Psi fits into the picture.

&lt;!--more--&gt;The goal of Greem is to be a clean, simple Qt/Qtopia client, built completely from scratch, using lessons learned from the Psi project. Since it is my intention to keep Greem as simple and clean as possible, some advanced features from Psi will not be available: multiple accounts, customizations that are only relevant to 1% of the population, ... However, development &lt;em&gt;will&lt;/em&gt; be focused on things that Psi also needs in the near future:
&lt;ul&gt;
	&lt;li&gt;Clean, unit testable APIs.&lt;/li&gt;
	&lt;li&gt;New and improved roster (for meta-contacts, avatars, ...)&lt;/li&gt;
	&lt;li&gt;Server-side message archiving&lt;/li&gt;
	&lt;li&gt;Reliable communication&lt;/li&gt;
	&lt;li&gt;Simplicity&lt;/li&gt;
&lt;/ul&gt;
A lot of this will either flow directly back into Psi (which should be possible thanks to the decoupled APIs), or will be used as a guide to refactor certain parts of Psi that need it (e.g. the roster).

For the first release(s), not every part of Greem will be written from scratch, though. Although I already have a major part of the low-level XMPP server connection handling coded up, Greem will initially use &lt;a href=&quot;http://delta.affinix.com/iris&quot;&gt;Iris&lt;/a&gt; as its backend for connecting to a server. Anything beyond the connection (i.e. XMPP data structures, stanza handling, ...) will be done outside of Iris. This way, the major focus can be on the front-end and general frameworks, without having to worry about the low-level implementation details (which can typically be a big hassle to get right). In the future, the Iris backend, which is connected through a very thin layer with the front-end, will be replaced by my own implementation of XMPP streams.

An update on the current status of the project will follow soon, together with some preliminary screenshots.
</content>
  </entry>
  
  <entry>
    <title>Testing Psi</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/psi-testing"/>
    <updated>2007-10-01T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/psi-testing</id>
    <content type="html">While the last bugs are being squeezed out of &lt;a href=&quot;http://www.kismith.co.uk/wordpress/index.php/2007/09/25/psi-011-rc3/&quot;&gt;Psi 0.11's release candidates&lt;/a&gt;, work on 0.12 has already begun. One thing I'm excited about as a developer is the fact that we're making the Psi codebase `testable', which has some nice consequences.

&lt;!--more--&gt; The first part of our effort to make Psi testable is creating &lt;strong&gt;unit tests&lt;/strong&gt; for most of our classes (using &lt;a href=&quot;http://cppunit.sourceforge.net/&quot;&gt;CppUnit&lt;/a&gt;), which should provide quick checks that our classes behave (and keep behaving) the way they should. However, the fact that Psi was not designed to be testable from the ground up makes this a non-trivial job, requiring quite some refactoring. This is something that will happen incrementally over time. A side effect of this refactoring will be an increase in modularity, allowing us to use different frontends (e.g. Cocoa) for the same code.

The second part we're working on is creating &lt;strong&gt;UI tests&lt;/strong&gt; for parts that are not automatically testable. For this, we are decoupling all our dialogs from the rest of the application, such that we can create a standalone application that allows you to toy with the dialog. This decoupling not only means that it becomes very easy to test dialogs with your own scenarios (without having to start Psi, connect to a server, ...), but also means that the dialogs become completely reusable for other applications.

We still have a long way to go until every part of Psi is testable (either automatically or not), but I am very much looking forward to the day where all of our code is nicely decoupled, and we can run &lt;code&gt;make check&lt;/code&gt; on every commit to ensure that we didn't break anything silly.
</content>
  </entry>
  
  <entry>
    <title>Qtopia Greenphone Grant</title>
    <author>
      <name>Remko Tronçon</name>
      <uri>http://el-tramo.be/about/</uri>
    </author>
    <link href="http://el-tramo.be/blog/greenphone-grant"/>
    <updated>2007-08-15T00:00:00+02:00</updated>
    <id>http://el-tramo.be/blog/greenphone-grant</id>
    <content type="html">A month or 2 ago, I applied for the Qtopia Greenphone Innovation Grant Program, an initiative from TrollTech to promote the development of applications for their Linux-based Qtopia Greenphone. I probably won't surprise anyone by saying that I sent in a proposal about writing a good, cross-platform, mobile Jabber/XMPP client. Anyway, I was very excited to receive a mail from TrollTech yesterday, stating that my proposal was accepted by their review panel! As an applicant, I will be receiving a shiny new Greenphone, together with a Qtopia SDK to develop against. Deadline for submitting my application: October 31st. Let the coding begin.
</content>
  </entry>
  
</feed>

